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
+14
-24
@@ -25,7 +25,10 @@
|
||||
Ник уникален в комнате, сессия выдаётся сервером. Пауза и скорости 1/2/4
|
||||
принимаются большинством более половины подключённых игроков. Голосование
|
||||
длится 20 с; интервал предложений игрока — 30 с. Владелец и привилегии
|
||||
создателя отсутствуют. Создание ограничено одним запросом с IP в минуту.
|
||||
создателя отсутствуют. Создание ограничено одним новым городом и одной новой
|
||||
комнатой с IP в минуту (независимые лимиты). Повторный запрос той же области
|
||||
возвращает уже принятую задачу без расхода лимита. Отказ 429 содержит
|
||||
`Retry-After` и `retryAfterSeconds` с оставшимся временем ожидания.
|
||||
|
||||
Снимки Protobuf кодируются и записываются отдельным ограниченным по очереди
|
||||
потоком, атомарно заменяются и ротируются; голоса и подключения
|
||||
@@ -53,6 +56,10 @@
|
||||
`CityJob` из общей схемы передаются по HTTP как `application/x-protobuf`.
|
||||
Каталог и создание комнаты используют JSON. Задания очереди не переживают
|
||||
перезапуск; готовые города и снимки комнат сохраняются на диске.
|
||||
Ссылка `/?create-city&job=ID` возобновляет ожидание после обновления страницы.
|
||||
Серверные запросы Overpass используют User-Agent приложения и таймаут 90 с
|
||||
(браузерный отладочный генератор — 45 с). Прогресс включает выбранный сервер
|
||||
и повторные попытки; технический stderr воркера остаётся в логах сервера.
|
||||
|
||||
`/health` проверяет доступность; `/metrics` отдаёт число игроков/комнат,
|
||||
тик, время последнего и максимального шага, число сущностей и байты очереди рассылки каждой
|
||||
@@ -73,27 +80,10 @@ LOD и выводят трафик, выборку длительности ти
|
||||
Compose, постоянные тома, лимиты, healthcheck и профиль Prometheus описаны
|
||||
в [deploy/README.md](../deploy/README.md).
|
||||
|
||||
## Игровой слой
|
||||
## Совместимость сохранений
|
||||
|
||||
Голод, усталость и настроение моделируются как усреднённые показатели
|
||||
населения комнаты. Они меняются по игровому календарю независимо от камеры.
|
||||
Сон ночью восстанавливает силы; питание трижды в день тратит запасы еды.
|
||||
Голод и усталость снижают производство и доход казны в рабочие часы.
|
||||
Почасовые события (урожай, болезнь, дождь) детерминированы seed и временем.
|
||||
История ограничена 16 событиями. Это базовая экономика общего города;
|
||||
индивидуальные кошельки, машины и детальное использование мебели не включены.
|
||||
|
||||
Все игроки имеют одинаковые права на три команды: покупка запасов
|
||||
(2 единицы казны на жителя), общий обед (1), отдых (3). Цена списывается
|
||||
при приёме, действие исполняется в следующую игровую минуту. Сервер проверяет
|
||||
ресурсы, паузу, очередь (до 8), общий интервал 60 игровых минут и интервал
|
||||
сессии 30 реальных секунд. Общий интервал переживает переподключение.
|
||||
Пауза и скорость по-прежнему требуют большинства голосов.
|
||||
|
||||
Снимки v2 сохраняют экономику, потребности, историю, очередь и общий интервал.
|
||||
Для v1 игровой слой инициализируется по числу жителей и сохранённому времени;
|
||||
позиции, seed и расписания сохраняются. Неизвестные версии не перезаписываются.
|
||||
Квота проверяется под общей блокировкой писателей комнат; при нехватке места
|
||||
прежние снимки остаются. Один снимок ограничен 128 МиБ.
|
||||
`/?admin` и API с Bearer-токеном показывают каталог, ошибки, квоту
|
||||
и позволяют сохранить активную комнату.
|
||||
Снимки v3 загружаются вместе с прежними v1/v2. Удалённые поля городской
|
||||
экономики отбрасываются; жители, маршруты, время и seed сохраняются.
|
||||
Общегородская казна, запасы, усреднённые потребности и массовые команды удалены.
|
||||
Пауза и скорость по-прежнему принимаются голосованием.
|
||||
Квота снимков и администрирование продолжают работать.
|
||||
Reference in new issue
Block a user