Refactor game structure and update project settings for 2D gameplay. Removed the game stub scene, introduced a new vault scene, and organized game scripts into distinct files for grid management, rendering, and scene control. Updated input actions for camera movement and changed rendering method to Mobile for better performance.
This commit is contained in:
@@ -4,14 +4,15 @@
|
||||
разрез убежища, комнаты в сетке, жители, которых расселяют по этажам, и мир, реагирующий на
|
||||
решения игрока.
|
||||
|
||||
> Статус: ранняя альфа. Готов весь каркас меню; игровой слой пока заглушка.
|
||||
> Статус: ранняя альфа. Готов каркас меню и первый игровой слой — сетка комнат в разрезе.
|
||||
|
||||
---
|
||||
|
||||
## Что уже работает
|
||||
|
||||
| Экран | Файл | Что умеет |
|
||||
| Часть | Файл | Что умеет |
|
||||
|---|---|---|
|
||||
| Убежище | `scenes/game/vault.tscn` | разрез на 6 этажей, лифтовая шахта, строительство и снос комнат, сводка ресурсов |
|
||||
| Главное меню | `scenes/ui/main_menu.tscn` | анимированный фон на шейдере, появление по стаггеру, единая подсветка для мыши и клавиатуры |
|
||||
| Настройки | `scenes/ui/settings_menu.tscn` | видео, звук, переназначение клавиш; сохраняется в `user://settings.cfg` |
|
||||
| Пауза | `scenes/ui/pause_menu.tscn` | останавливает дерево, переиспользует экраны настроек и сохранений |
|
||||
@@ -20,6 +21,23 @@
|
||||
Экраны настроек и сохранений — отдельные сцены, вложенные инстансами и в главное меню, и в паузу.
|
||||
Дублирования нет: правка в одном месте видна везде.
|
||||
|
||||
## Игровой слой
|
||||
|
||||
Убежище разделено на три части, чтобы графику можно было заменить, не трогая логику:
|
||||
|
||||
- **`vault_grid.gd`** (`VaultGrid`) — модель: сетка 9×6, список комнат, правила размещения,
|
||||
баланс ресурсов, сериализация. Ни одного узла, ни одной отрисовки.
|
||||
- **`vault_view.gd`** (`VaultView`) — весь `_draw()`: небо, порода, шахта, комнаты, призрак
|
||||
строительства. Пока рисуется процедурно — ассетов нет. Появится графика — меняется только
|
||||
этот файл.
|
||||
- **`vault_scene.gd`** — связывает модель, вид, камеру и HUD, реализует контракт сохранения.
|
||||
|
||||
Управление: **ЛКМ** — построить или снести, **ПКМ/СКМ** — тащить вид, **колесо** — зум,
|
||||
**WASD / стрелки** — прокрутка, **Esc** — пауза.
|
||||
|
||||
Типы комнат и их баланс ресурсов заданы одним словарём `VaultGrid.KINDS` — новый тип добавляется
|
||||
одной записью, кнопка в панели строительства и подсчёт ресурсов подхватываются сами.
|
||||
|
||||
## Требования
|
||||
|
||||
- **Godot 4.7** (Forward+, .NET-сборка не обязательна — код на GDScript)
|
||||
@@ -35,11 +53,11 @@
|
||||
```
|
||||
scenes/
|
||||
ui/ main_menu, settings_menu, pause_menu, save_menu
|
||||
game/ game.tscn — заглушка вместо игрового слоя
|
||||
game/ vault.tscn — убежище
|
||||
scripts/
|
||||
autoload/ game_settings.gd, save_manager.gd
|
||||
ui/ по скрипту на экран
|
||||
game/ game_stub.gd
|
||||
game/ vault_grid.gd, vault_view.gd, vault_camera.gd, vault_scene.gd
|
||||
shaders/ menu_background.gdshader + материал
|
||||
themes/ main_menu.theme.tres — единая тема всех экранов
|
||||
default_bus_layout.tres — шины микшера: Master → Music, SFX
|
||||
@@ -78,18 +96,24 @@ func load_data(data: Dictionary) -> void:
|
||||
`SaveManager` обходит группу `persistent`, собирает словари по путям узлов и пишет JSON.
|
||||
Миниатюра слота — кадр, снятый в момент вызова паузы, до показа оверлея.
|
||||
|
||||
**Действия ввода** (`project.godot` → Input Map): `move_left`, `move_right`, `move_forward`,
|
||||
`move_back`, `jump`, `sprint`, `interact`, `pause`. Переназначаются в настройках.
|
||||
**Действия ввода** (`project.godot` → Input Map): `move_left`, `move_right`, `move_up`,
|
||||
`move_down` (прокрутка камеры), `interact`, `pause`. Переназначаются в настройках; список
|
||||
в UI строится из `GameSettingsService.ACTION_LABELS`, так что новое действие нужно добавить
|
||||
и туда.
|
||||
|
||||
**Рендерер** — Mobile: для 2D он легче Forward+. Смена рендерера требует перезапуска редактора.
|
||||
|
||||
**Слияния.** `.tscn` и `.tres` — текстовые, но построчный авто-мердж по ним даёт мусор.
|
||||
Конфликтующие сцены лучше разрешать, открывая обе версии в редакторе, а не в diff-вьювере.
|
||||
|
||||
## Что дальше
|
||||
|
||||
- [ ] Перевести игровой слой на 2D: сетка комнат в разрезе, вид сбоку
|
||||
- [ ] Жители: найм, характеристики, распределение по комнатам
|
||||
- [ ] Ресурсы и производство, циклы времени
|
||||
- [ ] Заменить `scenes/game/game.tscn` на настоящую сцену
|
||||
- [x] Игровой слой на 2D: сетка комнат в разрезе, вид сбоку
|
||||
- [ ] Жители: найм, характеристики, расселение по комнатам
|
||||
- [ ] Время и производство: ресурсы должны копиться, а не только считаться в сводке
|
||||
- [ ] Слияние одинаковых соседних комнат, как в референсе
|
||||
- [ ] Стоимость строительства и ограничение по ресурсам
|
||||
- [ ] Графика вместо процедурной отрисовки в `vault_view.gd`
|
||||
- [ ] Звук: подключить шины Music и SFX
|
||||
- [ ] Лицензия не выбрана
|
||||
|
||||
|
||||
Reference in New Issue
Block a user