Files
MVP1/Docs/Modules/Army.md
T
AlexanderandClaude Opus 5.5 964cb23d9d Модульная система: игровое ядро + 6 модулей, документы Docs/Modules
- Ядро (Bogatyri.Core): контракты модулей, EventBus, GameServices, SaveRegistry
- Модули: Экономика, Поселение, Армия, Глобальный мир, Боевая система, Сохранения
  (каждый — отдельный asmdef, видит только ядро)
- App/GameModules: регистрация модулей и связь с GameProgress/Казармами
- Сохранения v2 по секциям модулей, перенос старого save.json и походов из progress.json
- Сброс сохранений: ISaveSystem.ResetAll, ResetState у модулей, меню Tools
- EditMode-тесты модулей, документы по каждому модулю с журналом изменений

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 18:39:28 +02:00

3.7 KiB

Армия

Войска и их характеристики: сколько воинов дома, как они уходят в поход и возвращаются.

  • Сборка: Bogatyri.Army (без Unity).
  • Папка: Assets/Scripts/Modules/Army.
  • Зависит от: ядра.

Контракт IArmy

Член Что делает
SoldiersAtHome Воинов в городе (все типы).
TakeForMarch(marchId, count) Забрать воинов в поход пропорционально составу армии и запомнить состав похода.
ReturnFromMarch(marchId, survivors) Вернуть выживших по тем же типам.

Получить: GameServices.Get<IArmy>().

Где сейчас данные

Войска пока хранятся в GameProgress (progress.json, поле troops, 4 типа). Поэтому контракт реализует мост Assets/Scripts/WorldMap/ArmyBridge.cs (ArmyBridge.Service), а модуль Армии содержит правила деления войск ArmyMath.

Решение команды от 19.10.2026: ArmyBridge не удалять, пока войска не переедут в модуль Армии вместе с миграцией сохранений (поле sashaMarchUnits).

События

  • Публикует: пока ничего.
  • Слушает: ничего (походы вызывают контракт напрямую).

Сохранение

Пока через GameProgress. Когда войска переедут в модуль, у него появится своя секция "army" и перенос из progress.json.

Файлы

Файл Что это
ArmyMath.cs TakeProportional — кого взять в поход; SplitSurvivors — как вернуть выживших. Без Unity.
../../WorldMap/ArmyBridge.cs (слой приложения) Реализация IArmy поверх GameProgress.

Решения и план

  • Этап 5 (план разработки): солдат стоит 1 человека, 15 еды, 5 металла, 5 золота; содержание 0,2 еды в час; погибшие уменьшают население.
  • Решение команды от 19.10.2026:
    • войска набираются из населения с сохранением гражданского минимума;
    • гарнизон поселения: часть солдат назначается защищать город;
    • общая армия = гарнизон + доступные отряды + войска в походах, на точках и в гарнизоне Круга; один солдат не может быть в двух местах;
    • гарнизон ест еду и участвует в защите;
    • при голоде дебаффы действуют и на гарнизон, и на походы.
  • Следующий шаг модуля: перенести troops и sashaMarchUnits из GameProgress в модуль (секция "army"), заменить ArmyBridge на реализацию внутри модуля.

Журнал изменений

Дата Кто Что
19.10.2026 Claude Модуль создан: ArmyMath (правила деления войск, без Unity, тесты на отсутствие двойного учёта). ArmyBridge сохранён и теперь реализует IArmy через ArmyMath; формат sashaMarchUnits не изменён.