Обновлено:

На этой странице

Доходность клеток, ресурсы и работы рабочих

Как складывается доход

В C7Engine/C7GameData/Tile_Yield.cs есть отдельные расчёты пищи, производства и коммерции. Итог строится из базового значения, бонусов и штрафов. Порядок применения: улучшения клетки, городские модификаторы, затем модификаторы игрока и правительства.

Ресурс даёт бонус, если игрок знает открывающую его технологию. Следовательно, графическое наличие ресурса на карте, знание о нём и доступность для производства — разные состояния. Последнее дополнительно зависит от торговой сети.

Для центра города базовая пища принудительно равна 2; производство начинается с 1 щита и учитывает размер города, ресурс и отдельные особенности цивилизации. Коммерция центра учитывает размер, реку и ресурс, а столица имеет минимальный ориентир 4 до последующих модификаторов. В коде остаются TODO по аграрной, коммерческой и морской особенностям. Эти вычисления описывают OpenCiv3, а не все исключения оригинала.

Наличие загрязнения даёт ранний нулевой базовый доход; кратеры уменьшают базовую пищу. Для полного результата нужно учитывать модификаторы, вызываемые после базовой функции.

Улучшения как независимые слои

В C7Engine/C7GameData/TerrainImprovement.cs предусмотрены слои дорог, освоения ресурса, сооружений, руин, загрязнения и кратеров. В каждом слое допускается один вариант улучшения; порядок показа задаёт zIndex. Дорога обновляется в железную дорогу, крепость — в баррикаду. Разрушение может понизить улучшение до предшествующего уровня.

Это лучше единого поля «тип клетки»: лес, дорога, ресурс и крепость должны иметь независимое представление. Допустимые сочетания проверяются правилами слоёв. Источник ограничений: C7Engine/C7GameData/Tile_Overlays.cs.

Рабочие

Terraform описывает действие, доступность, стоимость и результат. Юнит хранит текущее задание и накопленный прогресс. В конце хода владельца рабочий добавляет workerSpeed(); при достаточном суммарном прогрессе работа клетки завершается. Совместная работа нескольких юнитов учитывается суммированием.

Источники: C7Engine/C7GameData/Terraform.cs, C7Engine/C7GameData/MapUnit_Actions.cs, C7Engine/EntryPoints/TurnHandling.cs.

Для нашей игры

Ввести единый калькулятор дохода с расшифровкой «база + ресурс + улучшение + правительство». Тот же результат должны использовать город, подсказка клетки и AI. Работы хранить как многотуровое состояние, а не немедленное редактирование карты.

Проверять совместную работу, смену задания, перемещение рабочего, сохранение незавершённого прогресса и разрушение дороги, которая обеспечивала ресурс. Доступ к ресурсу не следует вычислять только по факту нахождения в границах.