farming-simulator/project.godot

67 lines
3.7 KiB
Text
Raw Normal View History

; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="Farming Simulator"
config/description="Подросток-фермер CS/TF2/PUBG-кейсов в стране Р, 2020-2022. Pre-alpha."
fix: установка пустая, отец в стену, нет меню ФИКС АКТА 2 (главный баг): - CenterContainer/WelcomeScreen/FourSquares имели anchor_right=1.0 + offset_right=640 → элементы уезжали ЗА пределы экрана (далеко на восток). Установочное окно было невидно. Заменил на anchors_preset=15 (full rect) без offset, теперь Center правильно центрирует Window. - PanelContainer без StyleBox = прозрачный. Добавлены 3 StyleBoxFlat (style_window — основное окно с рамкой, style_titlebar — тёмный header с жёлтым заголовком, style_panel — для вложенных панелей). Окно установки теперь видимо как настоящее Шиндовс-окно. - Body теперь без scroll_active (fit_content), Buttons с min_size 110×28 — кнопки чётко видны. ОТЕЦ: - Шёл на ЗАПАД (position.x - 2.5 = -0.8) в стену, а дверь на ВОСТОКЕ. Меняю на +1.0 (восток к двери при x=2.05). - _walk_father_out: сначала поворот корпуса 0.3 сек к двери (rotation:y = -PI/2), потом 1.4 сек шагание: * движение position:x на восток * абс(sin) bob тела на 0.04м (4 шага) * sin качание ног (LegL/LegR) и рук (ArmL/ArmR) в противофазе с амплитудой 0.4/0.24 радиан - Теперь отец действительно идёт к двери с шагающей походкой. ГЛАВНОЕ МЕНЮ (чего не хватало): - scenes/main_menu.tscn: тёмный фон с виньетками, заголовок жёлтым акцентом, 4 кнопки (Новая игра / Продолжить / Настройки / Выйти), StyleBoxFlat для кнопок. - main_menu.gd: ESC = Quit, кнопка «Новая игра» → SceneManager.go_room(), GameState.reset() при входе в меню. - project.godot main_scene = main_menu.tscn (было act1_room). - SceneManager + go_main() метод. HUD UX: - set_date_time("","") теперь прячет лейбл (раньше показывал "· "). В меню HUD скрыт полностью. - В Акте 1 и кухне при _ready восстанавливается crosshair + controls_hint (которые меню скрывает). ЧЕГО ВСЁ ЕЩЁ НЕ ХВАТАЕТ (для следующих сессий): - Звуки/SFX (шаги, клики, sfxr-эффекты, дверь) - Pause-меню по ESC во время геймплея - Save/load система (сейчас всё сбрасывается) - Анимация перехода между сценами (fade-in/out) - Реальные ассеты (CC0 модели мебели/персонажей) - Музыка/амбиент (CC0 трек комнаты) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:23:05 +03:00
run/main_scene="res://scenes/main_menu.tscn"
config/features=PackedStringArray("4.6", "GL Compatibility")
act1: FPV-комната с подарком, запиской и флешкой 3D-сцена 4×4м: стены/пол/потолок, окно (свечение), дверь, стол с пека, кровать с одеялом, подарок-коробка на полу, отец-NPC в дверях. Архитектура: - FPVController (CharacterBody3D + Camera3D + RayCast3D) — mouse look, WASD, raycast-pickup, lock_input для катсцен. - Interactable (StaticBody3D base) — toggle через collision_layer. - DialogManager (autoload CanvasLayer) — субтитры snake-case, fullscreen записка, HUD-подсказки, prompt над крестом, await через signal. - act1.gd — state machine: INTRO → EXPLORE_GIFT → INSIDE_GIFT → NOTE_READ → FATHER_FAREWELL (tween x-2.5) → SEEK_DRIVE → ENDING. Канон-реплики из Пролог_Первый_день.md без правок: - Отец intro + про флешку с Шиндой - Записка «Не сожги. Пароль от Wi-Fi на холодильнике. — Бать» - Мысли героя: «новый пека?», «бать ну ты красавчик», «Андрюхино так Андрюхино» GL Compatibility renderer, unshaded материалы плоскими цветами под pixel-art 640×360. Тестировано на RTX 5070 — стартует без ошибок. main.tscn placeholder удалён, main_scene = act1_room.tscn. Не покрыто в MVP (TBD): - Опц. выход на кухню → холодильник → Wi-Fi пароль - Mastermind hack-mini-game для подбора Wi-Fi - Sfxr звуки (открытие коробки, шаги) - Переход в Акт 2 (пока quit на финале) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:12:04 +03:00
[autoload]
prologue: целиком Акт 1 (комната+кухня) + Акт 2 (установка) ИНФРАСТРУКТУРА: - GameState autoload: player_name, прогресс актов, ачивки. - SceneManager autoload: change_scene с deferred переключением, shortcuts go_room/go_kitchen/go_install. - TextureGen autoload: процедурные pixel-art ImageTexture через Image.set_pixel, кешируются в Dictionary. Текстуры: wallpaper (бежевая с растительным узором), linoleum (полосы паркета), ceiling (побелка с шумом), wall_carpet (бордовый с ромбами), blanket (тёмно-синее со звёздами), poster_csgo (жёлтый с силуэтом AWP), poster_morgen (тёмно-красный с головой), door (дерево с волокном), desk_white, book_color(0-4). АКТ 1 КОМНАТА (act1_room.tscn / act1.gd): - Все стены/пол/потолок/ковёр/одеяло/постеры/стол/дверь теперь с процедурными текстурами через TextureGen.apply_to_material с правильным uv1_scale. Texture filter NEAREST для пиксель-арта. - Door interactable добавлен в east-wall (рядом с DoorPanel). Включается после ухода отца. Клик → переход на кухню. - GameState persists прогресс — возврат из кухни не повторяет интро. - _setup_post_intro_state восстанавливает SEEK_DRIVE после кухни. - После подбора флешки — переход на act2_install. АКТ 1 КУХНЯ (act1_kitchen.tscn / act1_kitchen.gd): - 3×3м комнатка с холодильником «Атлант», плитой (4 ручки красные), столешницей+раковиной, чайником, столом+2 стула, окном+радиатором. - Wi-Fi записка приклеена на холодильнике, читается → ачивка «Wi-Fi разведчик» + GameState.wifi_password_found = true. - Дверь обратно в комнату — SceneManager.go_room(). - Текстуры через TextureGen. АКТ 2 УСТАНОВКА ШИНДОВС (act2_install.tscn / act2_install.gd): - Полная 2D-сцена с 7 шагами state machine: BOOT (4 квадратика логотипа 1.6 сек) → LICENSE_INTRO → LICENSE_FULL (по «Читать») → DISK → USERNAME → PASSWORD → TIMEZONE → INSTALLING (5 фаз прогресс-бара 3 сек) → COMPLETE. - ШИЗО-пункты лицензионки: 7.3.2, 11.4, 12.1, 15.7, 18.0, 21.3, 23.9, 27.1 (полный текст из канона Пролог Акт 2). - Ввод имени с валидацией: 2-24 символа, regex буквы+цифры, ban-list титулов (повелитель/владыка/бог/лорд/царь) и мата. - Подсказка-плейсхолдеры из канона: bossiara13, fr3sh_n3kit и т.п. - Пароль с чекбоксом «Без пароля» + ачивки «Главное чтоб удобно» (123/qwerty/empty) и «Параноик» (12+ символов со спец). - Часовой пояс OptionButton с 7 регионами страны Р, UTC+3 default. - Welcome-экран после установки: «Добро пожаловать, {playerName}». - Кнопка «Запустить стеме» — заглушка Акта 3. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:50:26 +03:00
GameState="*res://scripts/util/game_state.gd"
TextureGen="*res://scripts/util/texture_generator.gd"
SceneManager="*res://scripts/util/scene_manager.gd"
act1: FPV-комната с подарком, запиской и флешкой 3D-сцена 4×4м: стены/пол/потолок, окно (свечение), дверь, стол с пека, кровать с одеялом, подарок-коробка на полу, отец-NPC в дверях. Архитектура: - FPVController (CharacterBody3D + Camera3D + RayCast3D) — mouse look, WASD, raycast-pickup, lock_input для катсцен. - Interactable (StaticBody3D base) — toggle через collision_layer. - DialogManager (autoload CanvasLayer) — субтитры snake-case, fullscreen записка, HUD-подсказки, prompt над крестом, await через signal. - act1.gd — state machine: INTRO → EXPLORE_GIFT → INSIDE_GIFT → NOTE_READ → FATHER_FAREWELL (tween x-2.5) → SEEK_DRIVE → ENDING. Канон-реплики из Пролог_Первый_день.md без правок: - Отец intro + про флешку с Шиндой - Записка «Не сожги. Пароль от Wi-Fi на холодильнике. — Бать» - Мысли героя: «новый пека?», «бать ну ты красавчик», «Андрюхино так Андрюхино» GL Compatibility renderer, unshaded материалы плоскими цветами под pixel-art 640×360. Тестировано на RTX 5070 — стартует без ошибок. main.tscn placeholder удалён, main_scene = act1_room.tscn. Не покрыто в MVP (TBD): - Опц. выход на кухню → холодильник → Wi-Fi пароль - Mastermind hack-mini-game для подбора Wi-Fi - Sfxr звуки (открытие коробки, шаги) - Переход в Акт 2 (пока quit на финале) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:12:04 +03:00
DialogManager="*res://scenes/components/dialog_ui.tscn"
полная мета-структура игры: pause + settings + save/load PAUSE-МЕНЮ (autoload PauseMenu CanvasLayer): - ESC во время геймплея открывает оверлей с тёмным фоном и центральной панелью в Шиндовс-стиле. - 4 кнопки: Продолжить / Настройки / В главное меню / Сохранить и выйти. - process_mode = ALWAYS чтобы работать при tree.paused = true. - При закрытии меню в 3D-сценах автоматически возвращает Input.mouse_mode = CAPTURED. - В главном меню pause не активируется (_can_pause false). - set_input_as_handled блокирует FPV-контроллер от перехвата ESC одновременно. НАСТРОЙКИ (под-панель в Pause-меню): - Слайдер «Чувствительность мыши» 0.001-0.010 (по умолчанию 0.0025). - Слайдер «Громкость» 0-100% — связан с AudioServer Bus 0 Master через linear_to_db (audio ассетов пока нет, но шкала рабочая). - Кнопки Назад / Применить. Применить пишет в user://settings.json. - settings.json грузится автоматически при старте GameState._ready. SAVE/LOAD: - GameState.save_game(scene_path) → user://save01.json в JSON с player_name, прогрессом актов 1-2, ачивками, текущей сценой. - GameState.load_game() читает и восстанавливает state, заполняет last_scene_path для перехода. - has_save() / delete_save() помощники. - Кнопка «Продолжить» в главном меню активна только если есть save и грузит игрока в сохранённую сцену. - Кнопка «Новая игра» удаляет старый save и сбрасывает state. AUTO-SAVE: - При закрытии окна через X (NOTIFICATION_WM_CLOSE_REQUEST) — save_game перед quit. - Кнопка Q в FPV-контроллере — save+quit. - Кнопка «Сохранить и выйти» в pause-меню — save+quit. - Кнопка «В главное меню» — save перед переходом. FPV-КОНТРОЛЛЕР: - mouse_sensitivity больше не локальное @export, читается из GameState.mouse_sensitivity каждый mouse_motion event (применяется живьём после Apply). - _input → _unhandled_input чтобы PauseMenu мог перехватить ESC через set_input_as_handled. - Убран ESC-toggle захвата мыши (теперь это делает PauseMenu). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:28:58 +03:00
PauseMenu="*res://scenes/components/pause_menu.tscn"
act1: FPV-комната с подарком, запиской и флешкой 3D-сцена 4×4м: стены/пол/потолок, окно (свечение), дверь, стол с пека, кровать с одеялом, подарок-коробка на полу, отец-NPC в дверях. Архитектура: - FPVController (CharacterBody3D + Camera3D + RayCast3D) — mouse look, WASD, raycast-pickup, lock_input для катсцен. - Interactable (StaticBody3D base) — toggle через collision_layer. - DialogManager (autoload CanvasLayer) — субтитры snake-case, fullscreen записка, HUD-подсказки, prompt над крестом, await через signal. - act1.gd — state machine: INTRO → EXPLORE_GIFT → INSIDE_GIFT → NOTE_READ → FATHER_FAREWELL (tween x-2.5) → SEEK_DRIVE → ENDING. Канон-реплики из Пролог_Первый_день.md без правок: - Отец intro + про флешку с Шиндой - Записка «Не сожги. Пароль от Wi-Fi на холодильнике. — Бать» - Мысли героя: «новый пека?», «бать ну ты красавчик», «Андрюхино так Андрюхино» GL Compatibility renderer, unshaded материалы плоскими цветами под pixel-art 640×360. Тестировано на RTX 5070 — стартует без ошибок. main.tscn placeholder удалён, main_scene = act1_room.tscn. Не покрыто в MVP (TBD): - Опц. выход на кухню → холодильник → Wi-Fi пароль - Mastermind hack-mini-game для подбора Wi-Fi - Sfxr звуки (открытие коробки, шаги) - Переход в Акт 2 (пока quit на финале) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:12:04 +03:00
[display]
window/size/viewport_width=640
window/size/viewport_height=360
window/size/window_width_override=1920
window/size/window_height_override=1080
window/stretch/mode="canvas_items"
window/stretch/aspect="keep"
[input]
move_forward={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
move_back={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
move_left={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
move_right={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
[rendering]
textures/canvas_textures/default_texture_filter=0
renderer/rendering_method="gl_compatibility"
renderer/rendering_method.mobile="gl_compatibility"