Обновлено:

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

Экономика, исследования и правительства

Разделение коммерции

В CurrentCommerceYieldRaw сначала собирается коммерция центра и работающих клеток, затем учитываются коррупция, анархия и беспорядки. Для полезной коммерции C рассчитываются:

  • Базовые колбы: floor(C × scienceRate / 10).
  • Базовая роскошь: floor(C × luxuryRate / 10).
  • Базовые налоги: остаток C после первых двух долей.

Бонусы зданий применяются к каждой части после разделения. Вклад специалистов добавляется отдельно. Поэтому «ещё 10% науки» не обязательно даёт одинаковый прирост во всех городах: существенны округления и множители.

Режим производства Inflow позволяет превращать производственные возможности в денежные и другие потоки через Lua. В базовых данных есть одна запись такого режима. Источники: C7Engine/C7GameData/Inflow.cs, C7/Lua/civ3/behaviors/inflows.lua.

Бюджет и содержание

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

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

Наука

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

GameData.TechCostFor зависит от базовой цены, research rate карты, сложности и числа известных цивилизаций, уже знающих технологию. Из накопленной стоимости вычитается прогресс текущего открытия. EstimateTurnsToResearch ограничивает прогноз минимумом и максимумом; в базовом ruleset это 4 и 50 ходов.

В DoPerTurnScienceUpdates остаётся TODO: счётчик ходов увеличивается даже без фактического финансирования. Стоимость и сроки следует проверять сценариями с нулевым бюджетом и специалистом. Источники: C7Engine/C7GameData/GameData.cs, C7Engine/C7GameData/Player.cs, EngineTests/GameData/FreeTechTest.cs.

Правительства и коррупция

C7Engine/C7GameData/Government.cs задаёт тип коррупции, ускорение, полицию, содержание, скорость рабочих и переходный режим. Восемь записей базовых данных включают анархию. Нельзя считать её обычным выбираемым правительством только по наличию строки.

Коррупция города складывается из дистанционной и ранговой частей и ограничивается максимумом, который уменьшают соответствующие здания. В коде отмечены недоработки по отдельным чудесам, полицейским и устаревшим зданиям.

Для нас: хранить подробный расчёт бюджета и единые округления, валидировать сумму долей и проверять доход после каждого изменения правил. Открытая задача #864 указывает на вопросы к коммерции, но её состояние не доказывает актуальность каждого описанного симптома.