Files
MVP1/Docs/Modules/Economy.md
T

5.1 KiB

Экономика

Ресурсы и производство: сколько у игрока дерева, еды, золота и остального, кто их добывает и тратит.

  • Сборка: Bogatyri.Economy.
  • Папка: Assets/Scripts/Modules/Economy.
  • Зависит от: ядра.

Контракт IEconomy

Метод Что делает
Get(type) Сколько ресурса сейчас.
Has(type, amount) Хватает ли.
Add(type, amount) Добавить (или отнять отрицательным числом; в минус не уходит).
TrySpend(type, amount) Потратить, если хватает.
CanAfford(cost) / TrySpend(cost) Проверить и списать цену из нескольких ресурсов — всё или ничего.

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

События

  • Публикует: ResourceChangedEvent — при любом изменении ресурса (тип и новое значение).
  • Слушает: ничего.

Для интерфейса остаётся C#-событие ResourceManager.OnResourceChanged (его слушает ResourceUIText).

Сохранение

Секция "economy": { "resources": [ { "type", "amount" } ] } — имена полей как в старом save.json.

Сброс (ResetState): стартовые значения из Inspector ResourceManager (startWood и т.д.).

Файлы

Файл Что это
ResourceManager.cs Хранилище ресурсов, реализует IEconomy и ISaveParticipant. Живёт между сценами.
ResourceProducer.cs Здание, добывающее ресурс по таймеру.
ResourceCollector.cs Временная добыча по клику. Реализует ILeveledBuilding.

Интерфейс экономики остаётся в слое приложения: Assets/Scripts/Economy/ResourceUIText.cs, BuildingUI.cs.

Таблица баланса EconomyConfig

Все числа экономики — в ассете Assets/Resources/EconomyConfig.asset (класс App/EconomyConfig.cs, слой приложения). Меняются в Inspector без перекомпиляции. Разделы: население, стартовые ресурсы новой игры, производство T1, месторождения, цена солдата. Числа с пометкой «не утверждено» — временные.

Модули конфиг не видят: App/GameModules переводит его в правила модуля (например, PopulationRules). Нет ассета — берутся числа по умолчанию из EconomyConfig.cs и в консоли предупреждение.

Стартовые ресурсы новой игры выдаёт App/GameModules (при первой игре и после сброса): ресурс поднимается до стартового, если его меньше.

Ресурс Population («Люди») теперь отражает модуль Населения: App/GameModules держит его равным IPopulation.Total. Тратить его напрямую не нужно.

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

  • Этап 1 (план разработки): лимиты Склада и Амбара; Gems → BlueCrystal; Power убрать из ресурсов.
  • Решение команды от 19.10.2026: у синего кристалла отдельный небольшой настраиваемый лимит хранения, не бесконечный. Переполнение — одно правило для наград и добычи. Число не утверждено.
  • Этап 3: убрать кликер (ResourceCollector); производство = рабочие × норма × качество месторождения × бонус уровня.
  • Все числа — из EconomyConfig, не в коде. Таблица создана 26.10.2026; производство, месторождения и цена солдата в ней уже есть, но используются начиная с этапов 3–5.

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

Дата Кто Что
26.10.2026 Claude Таблица баланса EconomyConfig. Стартовые ресурсы новой игры. Ресурс «Люди» отражает модуль Населения.
19.10.2026 Claude ResetState(): при сбросе сохранений ресурсы возвращаются к стартовым.
19.10.2026 Claude Модуль выделен: ResourceManager, ResourceProducer, ResourceCollector перенесены в Modules/Economy. ResourceManager реализует IEconomy, публикует ResourceChangedEvent, сам сохраняет секцию "economy".