Слияние с feature/settlement-population (Вальдемар, 31.10): Население снова отдельный модуль, рабочие без 40%, резерв по Ратуше, голод режет добычу, окна зданий и уровни Казарм

Конфликты только в документах (Core.md, README.md) — сохранены обе стороны,
в «Кто отвечает» у Саши добавлена Разведка.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Alexander
2026-11-01 12:43:21 +01:00
co-authored by Claude Opus 5.5
27 changed files with 870 additions and 209 deletions
+29 -22
View File
@@ -1,6 +1,6 @@
# Модульная система «Богатырей»
Игра собрана из восьми модулей вокруг общего **Игрового ядра** — как на схеме Димы. Модули общаются только через контракты и события ядра и не управляют внутренним кодом друг друга. Это правило проверяет сам Unity: каждый модуль — отдельная сборка (`.asmdef`), которая видит только ядро, поэтому прямое обращение к соседнему модулю не скомпилируется.
Игра собрана из десяти модулей вокруг общего **Игрового ядра** (регламент 31.10.2026). Модули общаются только через контракты и события ядра и не управляют внутренним кодом друг друга. Это правило проверяет сам Unity: каждый модуль — отдельная сборка (`.asmdef`), которая видит только ядро, поэтому прямое обращение к соседнему модулю не скомпилируется.
```
┌─────────────────────────────────────────┐
@@ -11,28 +11,32 @@
┌──────────────────────┐ ┌──────────────────────┐
│ ЭКОНОМИКА │ │ ПОСЕЛЕНИЕ │
│ ресурсы, склады, │ │ здания: Ратуша, │
│ лимиты, добыча │ │ стройка; │
│ рабочими │ │ люди: жители, еда, │
│ │ │ голод, прирост, найм │
│ ресурсы, склады, │ │ здания, Ратуша, │
│ лимиты, добыча │ │ участки, стройка │
│ рабочими │ │ │
└──────────────────────┘ └──────────────────────┘
┌──────────────────────┐ ┌──────────────────────┐
│ АРМИЯ │ │ ГЛОБАЛЬНЫЙ МИР │
│ воины по типам: дома,│ │ карта, походы, замок,│
│ в гарнизоне, │ │ соседи, лагеря │
│ в походе │ │ разбойников │
│ НАСЕЛЕНИЕ │ │ АРМИЯ │
│ люди, рабочие, еда, │ │ воины по типам: дома,│
│ голод, прирост, │ │ в гарнизоне, │
│ жильё │ │ в походе │
└──────────────────────┘ └──────────────────────┘
┌──────────────────────┐ ┌──────────────────────┐
│ БОЕВАЯ СИСТЕМА │ │ КРУГ │
│ сила, контры, стены, │ │ объединение игроков, │
│ удача ±5%, голод, │ │ роли │
│ прогноз │ │ │
│ ГЛОБАЛЬНЫЙ МИР │ │ БОЕВАЯ СИСТЕМА │
│ карта, походы, замок,│ │ сила, контры, стены, │
│ соседи, лагеря │ │ удача ±5%, голод, │
│ разбойников │ │ прогноз │
└──────────────────────┘ └──────────────────────┘
┌──────────────────────┐ ┌──────────────────────┐
│ ЧАТ │ │ СОХРАНЕНИЯ │
│ общий мир и чат │ │ save.json, у каждого │
│ Круга │ │ модуля своя секция │
│ КРУГ │ │ ЧАТ │
│ объединение игроков, │ │ общий мир и чат │
│ роли │ │ Круга │
└──────────────────────┘ └──────────────────────┘
┌──────────────────────┐
│ СОХРАНЕНИЯ │
│ save.json, у каждого │
│ модуля своя секция │
└──────────────────────┘
App/GameModules — точка сборки: регистрирует модули и соединяет их события
со старыми системами (GameProgress, Казармы, панели UI)
@@ -40,7 +44,7 @@ App/GameModules — точка сборки: регистрирует модул
**Не путать:**
- **Поселение** — это **город**: его **здания** (что построено и какого уровня, `Modules/Settlement`) и его **люди** (сколько их, кто работает, сколько едят, кого нанять в войско, `Modules/Settlement/Population`). Люди — отдельная сборка без Unity внутри Поселения, как правила добычи внутри Экономики. Связь: уровень Ратуши задаёт предел жилья.
- **Поселение** — это **здания**: что построено и какого уровня. **Население** — это **люди**: сколько их, кто работает, сколько едят. Связь: уровень Ратуши (Поселение) задаёт предел жилья (Население).
- **Армия** хранит, где стоит каждый воин. **Боевая система** только считает бой: кто победил и кто погиб.
- **Глобальный мир** решает, куда и когда идёт войско; бой он просит у Боевой системы.
- **Производство** (`Bogatyri.Economy.Rules`) — не отдельный модуль, а часть Экономики без Unity: добыча через рабочих.
@@ -49,15 +53,16 @@ App/GameModules — точка сборки: регистрирует модул
| Кто | Модули |
| --- | --- |
| Валдемар (экономика) | Экономика, люди Поселения (`Settlement/Population`) |
| Валдемар (экономика) | Экономика, Население |
| Саша (война и карта) | Армия, Боевая система, Глобальный мир, Круг, Чат, Разведка |
| Общее | Ядро, здания Поселения, Сохранения |
| Общее | Ядро, Поселение, Сохранения |
| Модуль | Сборка | Папка | Документ |
| --- | --- | --- | --- |
| Игровое ядро | `Bogatyri.Core` (без Unity), `Bogatyri.Core.Unity` | `Assets/Scripts/Modules/Core`, `Core.Unity` | [Core.md](Core.md) |
| Экономика | `Bogatyri.Economy`, `Bogatyri.Economy.Rules` (без Unity) | `Assets/Scripts/Modules/Economy` | [Economy.md](Economy.md) |
| Поселение | `Bogatyri.Settlement` (здания), `Bogatyri.Settlement.Population` (люди, без Unity) | `Assets/Scripts/Modules/Settlement`, люди — `Settlement/Population` | [Settlement.md](Settlement.md), [Population.md](Population.md) |
| Поселение | `Bogatyri.Settlement` | `Assets/Scripts/Modules/Settlement` | [Settlement.md](Settlement.md) |
| Население | `Bogatyri.Population` (без Unity) | `Assets/Scripts/Modules/Population` | [Population.md](Population.md) |
| Армия | `Bogatyri.Army` (без Unity) | `Assets/Scripts/Modules/Army` | [Army.md](Army.md) |
| Глобальный мир | `Bogatyri.World`, `Bogatyri.World.Simulation` (без Unity) | `Assets/Scripts/Modules/World` | [World.md](World.md) |
| Боевая система | `Bogatyri.Battle` (без Unity) | `Assets/Scripts/Modules/Battle` | [Battle.md](Battle.md) |
@@ -91,15 +96,17 @@ EditMode-тесты: `Assets/Scripts/Modules/Tests/ModuleTests.cs`. Запуск
Добавить вместе с этапами 1, 2 и 5 (решение команды от 19.10.2026):
- [x] лимит жилья: 300 жителей при лимите 300 — прирост стоит, предел вырос — прирост идёт (`PopulationTests`; пока предел растёт от Ратуши, Дома ещё нет);
- [x] нельзя призвать ниже гражданского резерва: 150 свободных, резерв 30 → призвать можно не больше 120 (`PopulationTests`);
- [x] нельзя призвать ниже гражданского резерва: 150 свободных, резерв 30 → призвать можно не больше 120; резерв по уровню Ратуши 10/20/30 (`PopulationTests`);
- [x] назначение гарнизона: 30 солдат, 10 в гарнизон → 20 доступны, всего по-прежнему 30 (`ArmyService_Garrison_OneSoldierInOnePlace`);
- [ ] голод и восстановление: еда кончилась → дебаффы, в том числе у защитников; еда вернулась → снятие по правилу. Бой уже проверен (`Battle_Famine_HalvesPower_AndStacksWithFatigue`, `World_FamineAtBattleTime_WeakensMarch`: −50% у нападающих и у защитников, вместе с усталостью 40%), история голода на момент боя — `PopulationTests`; остаются дебаффы производства и правило снятия — экономика;
- [ ] голод и восстановление: еда кончилась → дебаффы, в том числе у защитников; еда вернулась → снятие по правилу. Бой уже проверен (`Battle_Famine_HalvesPower_AndStacksWithFatigue`, `World_FamineAtBattleTime_WeakensMarch`: −50% у нападающих и у защитников, вместе с усталостью 40%), история голода на момент боя — `PopulationTests`; добыча кроме еды при голоде ×0.5 и снятие штрафа сразу после еды — `ProductionTests` (31.10);
- [ ] предел синих кристаллов: кристаллы не копятся бесконечно, сверх лимита — по общему правилу.
## Журнал изменений
| Дата | Кто | Что |
| --- | --- | --- |
| 31.10.2026 | Claude | Окна зданий: подписи над зданиями убраны, у каждого здания (добывающие, Дом, Склад, Амбар, Ратуша, Кристалл) своё окно по тапу — состояние, добыча и склад, улучшение и его цена. Казармы тоже получили окно и уровни (открывают новые войска вместе с Ратушей; уровни 1/2/3/5 — ТЕСТ). Ратуша улучшается кнопкой в окне, а не тапом. Обновлён Settlement. |
| 31.10.2026 | Claude | По регламенту 31.10: откат — Население снова самостоятельный модуль (`Modules/Population`, `Bogatyri.Population`), схема и «Кто отвечает» как у Саши. Работать может любой житель (без «40%»), резерв по уровню Ратуши 10/20/30, голод режет добычу кроме еды вдвое. Обновлены Population, Settlement, Economy, Core. |
| 31.10.2026 | Claude | Модуль Разведки, этап М1 ([Intelligence.md](Intelligence.md)): туман, обзор, чужие армии, последний контакт. Патрули-заглушки соседей для проверки. Обновлены World, Core, Save. |
| 31.10.2026 | Claude | Панель армий на карте мира (регламент 31.10). Обновлён World. |
| 31.10.2026 | Claude | Ресурсные точки на карте мира по регламенту 31.10 (наша часть по решению №46: состояние точки и сбор; зачисление — Экономика через `IEconomy`). Обновлены World, Save, Core. |