Remove unused assets and update project configuration. Deleted obsolete files including CLAUDE.md, README.md, default_bus_layout.tres, and various background images. Updated .editorconfig and .gitignore for improved project organization and asset management.
This commit is contained in:
@@ -1,125 +0,0 @@
|
||||
# G-WORLD
|
||||
|
||||
Двумерная игра с видом сбоку на Godot 4.7. Референс по подаче и структуре — **Fallout Shelter**:
|
||||
разрез убежища, комнаты в сетке, жители, которых расселяют по этажам, и мир, реагирующий на
|
||||
решения игрока.
|
||||
|
||||
> Статус: ранняя альфа. Готов каркас меню и первый игровой слой — сетка комнат в разрезе.
|
||||
|
||||
---
|
||||
|
||||
## Что уже работает
|
||||
|
||||
| Часть | Файл | Что умеет |
|
||||
|---|---|---|
|
||||
| Убежище | `scenes/game/vault.tscn` | разрез на 6 этажей, лифтовая шахта, строительство и снос комнат, сводка ресурсов |
|
||||
| Главное меню | `scenes/ui/main_menu.tscn` | анимированный фон на шейдере, появление по стаггеру, единая подсветка для мыши и клавиатуры |
|
||||
| Настройки | `scenes/ui/settings_menu.tscn` | видео, звук, переназначение клавиш; сохраняется в `user://settings.cfg` |
|
||||
| Пауза | `scenes/ui/pause_menu.tscn` | останавливает дерево, переиспользует экраны настроек и сохранений |
|
||||
| Сохранения | `scenes/ui/save_menu.tscn` | 6 слотов с миниатюрами, датой и наигранным временем, запись/чтение/удаление |
|
||||
|
||||
Экраны настроек и сохранений — отдельные сцены, вложенные инстансами и в главное меню, и в паузу.
|
||||
Дублирования нет: правка в одном месте видна везде.
|
||||
|
||||
## Игровой слой
|
||||
|
||||
Убежище разделено на три части, чтобы графику можно было заменить, не трогая логику:
|
||||
|
||||
- **`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)
|
||||
- Windows / Linux / macOS
|
||||
|
||||
## Запуск
|
||||
|
||||
Откройте папку проекта в Godot и нажмите F5 — главная сцена уже прописана
|
||||
(`res://scenes/ui/main_menu.tscn`).
|
||||
|
||||
## Структура
|
||||
|
||||
```
|
||||
scenes/
|
||||
ui/ main_menu, settings_menu, pause_menu, save_menu
|
||||
game/ vault.tscn — убежище
|
||||
scripts/
|
||||
autoload/ game_settings.gd, save_manager.gd
|
||||
ui/ по скрипту на экран
|
||||
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
|
||||
```
|
||||
|
||||
## Соглашения
|
||||
|
||||
**Тема.** Все экраны наследуют `themes/main_menu.theme.tres`. Цвета не прописываются в узлах:
|
||||
акцент `#2ee6c5`, второй акцент `#7b6bf5`, текст `#dbe7f0`, приглушённый `#8fa5ba`.
|
||||
Локальные `theme_override_*` — только там, где элемент должен отличаться намеренно.
|
||||
|
||||
**Язык.** Интерфейс и комментарии — русские, имена узлов, файлов и методов — английские.
|
||||
|
||||
**Автозагрузки.**
|
||||
|
||||
- `GameSettings` (`GameSettingsService`) — настройки: чтение, применение к движку, `user://settings.cfg`
|
||||
- `SaveManager` (`SaveManagerService`) — слоты сохранений в `user://saves/`
|
||||
|
||||
У обеих есть `class_name`: константы и типы берутся через него, экземпляр — через
|
||||
`get_node("/root/GameSettings")`. Так редактор резолвит имена без перезапуска проекта.
|
||||
|
||||
**Контракт игровой сцены.** Чтобы сцена умела сохраняться:
|
||||
|
||||
```gdscript
|
||||
func _ready() -> void:
|
||||
add_to_group(SaveManagerService.PERSIST_GROUP)
|
||||
SaveManager.begin_session(scene_file_path)
|
||||
|
||||
func save_data() -> Dictionary:
|
||||
return {"...": ...}
|
||||
|
||||
func load_data(data: Dictionary) -> void:
|
||||
...
|
||||
```
|
||||
|
||||
`SaveManager` обходит группу `persistent`, собирает словари по путям узлов и пишет JSON.
|
||||
Миниатюра слота — кадр, снятый в момент вызова паузы, до показа оверлея.
|
||||
|
||||
**Действия ввода** (`project.godot` → Input Map): `move_left`, `move_right`, `move_up`,
|
||||
`move_down` (прокрутка камеры), `interact`, `pause`. Переназначаются в настройках; список
|
||||
в UI строится из `GameSettingsService.ACTION_LABELS`, так что новое действие нужно добавить
|
||||
и туда.
|
||||
|
||||
**Рендерер** — Forward+ (по умолчанию). Для чистой 2D он избыточен, но оставляет запас на
|
||||
3D-вставки и продвинутый пост-процессинг. Если понадобится максимальная лёгкость и веб-экспорт,
|
||||
осмысленный переход — не Mobile, а Compatibility (OpenGL); смена требует перезапуска редактора.
|
||||
|
||||
**Слияния.** `.tscn` и `.tres` — текстовые, но построчный авто-мердж по ним даёт мусор.
|
||||
Конфликтующие сцены лучше разрешать, открывая обе версии в редакторе, а не в diff-вьювере.
|
||||
|
||||
## Что дальше
|
||||
|
||||
- [x] Игровой слой на 2D: сетка комнат в разрезе, вид сбоку
|
||||
- [ ] Жители: найм, характеристики, расселение по комнатам
|
||||
- [ ] Время и производство: ресурсы должны копиться, а не только считаться в сводке
|
||||
- [ ] Слияние одинаковых соседних комнат, как в референсе
|
||||
- [ ] Стоимость строительства и ограничение по ресурсам
|
||||
- [ ] Графика вместо процедурной отрисовки в `vault_view.gd`
|
||||
- [ ] Звук: подключить шины Music и SFX
|
||||
- [ ] Лицензия не выбрана
|
||||
|
||||
## Лицензия
|
||||
|
||||
Не определена. Плагин `addons/godot_ai` поставляется со своей лицензией — см.
|
||||
`addons/godot_ai/LICENSE`.
|
||||
Reference in New Issue
Block a user