Fix city generation retries and remove city-wide economy mechanics
This commit is contained in:
1 parent
85df37c26e
commit
63f0c72ff3
21 files changed
+252
-585
No files matched your search
+10
-10
@@ -4,7 +4,7 @@
|
||||
|
||||
## 1. Цель и рамки
|
||||
|
||||
Игра: симулятор бога в духе RimWorld, но с меньшим влиянием игрока. Город живёт сам (жители, машины, потребности, события), игроки в основном наблюдают и ограниченно вмешиваются. По запросу автора от 2026-10-30 этап 5 включает базовые команды вмешательства.
|
||||
Игра: симулятор бога в духе RimWorld, но с меньшим влиянием игрока. Город живёт сам (жители, машины, потребности, события), игроки в основном наблюдают и ограниченно вмешиваются. Конкретные механики вмешательства требуют отдельного согласования.
|
||||
|
||||
Исходные требования:
|
||||
|
||||
@@ -172,13 +172,13 @@
|
||||
- [x] Оптимизация протокола и рендера.
|
||||
Бинарные дельты, квантизация, объединение пропущенных обновлений под бюджетом трафика, ограничение видимых сущностей и кэш тайлов; динамика пока на Canvas.
|
||||
|
||||
**Этап 5. Базовый игровой слой**
|
||||
- [x] Потребности, события, экономика.
|
||||
Усреднённые голод, усталость и настроение населения; сон, питание, производство еды и доход казны. События урожая, болезни и дождя воспроизводятся из seed и игрового времени. Индивидуальный ИИ жителей пока остаётся расписанием дом–работа.
|
||||
- [x] Ограниченное влияние игроков (команды, права, очереди, лимиты).
|
||||
Покупка запасов, общий обед и отдых; одинаковые права подключённых игроков, цена из общей казны, ограниченная очередь, общий часовой игровой интервал и интервал сессии. Пауза/скорость остаются голосованием.
|
||||
**Этап 5. Игровой слой**
|
||||
- [ ] Потребности, события, экономика.
|
||||
Общегородская казна, запасы и усреднённые потребности удалены по просьбе автора. Индивидуальный ИИ жителей пока остаётся расписанием дом–работа.
|
||||
- [ ] Ограниченное влияние игроков (команды, права, очереди, лимиты).
|
||||
Массовые команды запасов, обеда и отдыха удалены. Пауза/скорость остаются голосованием.
|
||||
- [x] Сохранения, восстановление комнат, админка.
|
||||
Схема v2 сохраняет игровой слой и очередь, v1 мигрируется при открытии. Добавлены общая квота снимков, защита прежних файлов при переполнении и админский интерфейс/API с отдельным токеном оператора.
|
||||
Схема v3 загружает снимки v1/v2, отбрасывая удалённую экономику. Общая квота снимков, защита прежних файлов при переполнении и админский интерфейс/API с отдельным токеном оператора сохраняются.
|
||||
|
||||
**Этап 6. Эксплуатация**
|
||||
- [x] Подготовка Compose, мониторинг (метрики тика, число сущностей, трафик), логи.
|
||||
@@ -187,7 +187,7 @@
|
||||
|
||||
Проверка минимальной сцены: `npm run demo`, `npm run build`, `npm run server:dev`, затем `http://localhost:3000/?play`.
|
||||
Имя репозитория остаётся `citygen`; генератор и существующий рендер сохраняют свои пути в `src/`, новые сетевые модули находятся в `client/`.
|
||||
Состояние и ограничения реализации описаны в `server/README.md`, запуск Compose — в `deploy/README.md`. Этап 5 реализует базовую городскую модель, этап 6 — подготовку Compose в согласованном объёме.
|
||||
Состояние и ограничения реализации описаны в `server/README.md`, запуск Compose — в `deploy/README.md`. Игровые механики этапа 5 остаются незавершёнными; этап 6 — подготовка Compose в согласованном объёме.
|
||||
|
||||
## 10. Риски
|
||||
|
||||
@@ -271,8 +271,8 @@
|
||||
- Реальная нагрузка, 2026-10-30: Бальцерс, 1 000 000 жителей, 30 WebSocket-клиентов, 20 с, фоновые сохранения каждые 2 с. Выборка длительности тиков через метрики: p95 36,5 мс; максимум всех тиков по счётчику комнаты 44,7 мс. Средний трафик 4,8 КБ/с на клиента, максимальный 44,7 КБ/с. Ошибок, разрывов и срабатываний ограничения трафика не было. Это короткий локальный тест с небольшими AOI, а не гарантия для любого города, плотности, диска и целевого сервера. Пиковая память процесса со статикой и буферами — около 272 МиБ; память одной ECS отдельно не измерялась.
|
||||
- Браузер: повторный вход в сохранённую миллионную комнату до загруженной области — 1,31 с в локальном Chrome.
|
||||
|
||||
- Этапы 5–6: 17 TS-тестов, 11 Rust unit-тестов и 2 интеграционных теста проходят. Проверены миграция v1→v2, сохранение очереди команды, детерминизм экономики/событий, влияние потребностей на производство, расход еды, квота без потери последнего снимка, отказ без админского токена и подтверждение записи через API.
|
||||
- Chrome: отображение казны/еды/потребностей, команда «Обед» со списанием ресурсов и снижением голода, пауза, этаж/масштаб, админское сохранение. Загрузка области — 1,12 с локально.
|
||||
- После удаления городской экономики: 18 TS-тестов, 9 Rust unit-тестов и 2 интеграционных теста. Проверяются миграция v1/v2→v3 с отбрасыванием удалённых полей, детерминизм жителей, квота, авторизация админки и запись снимков.
|
||||
- Chrome: загрузка города, общий календарь, пауза, этаж/масштаб, админское сохранение; возобновление ожидания генерации без повторного POST.
|
||||
|
||||
Дальнейшее развитие за пределами базового слоя: индивидуальные потребности и
|
||||
выбор целей, детальные переходы между этажами, использование мебели и
|
||||
|
||||
Reference in new issue
Block a user