Files
MVP1/Docs/Modules/World.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

4.0 KiB
Raw Blame History

Глобальный мир

Карта и перемещения: замок с боссом, 20 соседних городов, походы по реальному времени (идут, даже когда игра закрыта).

  • Сборки:
    • Bogatyri.World.Simulation — карта и походы, чистый C# без Unity (переедет на сервер);
    • Bogatyri.World — MarchManager, Unity-часть.
  • Папка: Assets/Scripts/Modules/World.
  • Зависит от: ядра. Войска — через IArmy, добыча — через IEconomy, бой — через IBattleSystem.

Контракт IWorld

Член Что делает
ActiveMarches Сколько походов в пути.
TryStartMarch(targetId, soldiers, out error) Отправить войско на цель.

Получить: GameServices.Get<IWorld>(). Интерфейсу карты (WorldMapController) можно обращаться к MarchManager.Instance и его C#-событиям: там полные данные похода.

События

Публикует:

  • MarchStartedEvent — войско выступило;
  • MarchBattleResolvedEvent — бой у цели прошёл;
  • MarchReturnedEvent — войско вернулось, солдаты и добыча зачислены.

Слушает: ничего. App/GameModules по этим событиям считает статистику для заданий (marchesSent, dailyMarches, worldWins).

Сохранение

Секция "world": { "marches": [ MarchData ] }.

Сброс (ResetState): все походы отменяются. Войска в походе не возвращаются: их сбрасывает GameProgress вместе с армией.

Раньше походы лежали в progress.json (sashaMarches). При первом запуске App/GameModules переносит их в модуль Мира и удаляет из progress.json только после записи save.json.

Файлы

Файл Что это
MarchManager.cs Ведёт походы, реализует IWorld и ISaveParticipant. Создаётся сам при запуске игры.
Simulation/WorldMapLayout.cs Карта: замок, город игрока, 20 соседей из seed.
Simulation/WorldSimulation.cs Походы: старт, бой по прибытии, возвращение. Бой получает через IBattleSystem.

В слое приложения остаются WorldMap/WorldMapController.cs, MarchView.cs, MapCameraController.cs, SceneNavigator.cs и вторая карта Meta/World/*.

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

  • Этап 0: в проекте две карты мира — эта и Meta/World/WorldSystem. Команда должна выбрать одну. По решению от 19.10.2026 вторую реализацию не удалять без проверки контрактов и миграции сохранений.
  • Этап 4 (утверждён без изменений): у позиций на карте — месторождения и их качество.
  • Этап 6: временные ресурсные точки и кристальные разломы; войска на точке недоступны дома.

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

Дата Кто Что
19.10.2026 Claude ResetState(): при сбросе сохранений походы отменяются.
19.10.2026 Claude Модуль выделен. MarchManager больше не обращается к GameProgress и ResourceManager: войска через IArmy, добыча через IEconomy, сохранение — своя секция "world", статистика — через события. Формула боя вынесена в модуль Боя.