Культурные границы городов
27 октября 2026 года. Рубеж 4.3, модель cultural-borders-v1, экономика city-economy-v8, схема собственных сохранений 12. Изменение опубликовано в основной игре; отдельной тестовой версии нет. Ход разработки, машинный отчёт, браузерная проверка.
Данные и источники
В исходном Atlants RULE имеются border_factor = 10, шесть культурных уровней и их названия. Пороги текущей модели — 10, 100, 1 000, 10 000 и 100 000: после последнего доступно шестое кольцо. Имена уровней показываются в городе. Исходное соседнее поле border_multiplier = 1000 сохранено, но его смысл не установлен и оно не участвует в расчёте. В отчёте это поле имеет interpreted: false.
Первоисточник поклеточного подхода — самостоятельные наблюдения автора The Eight Laws of Border Dynamics, декабрь 2004. Они задают приоритет расстояния, затем культуры и возраста города; описывают направление обхода при полной ничьей, океан и заполнение промежутков. Обсуждение содержит уточнения и не доказывает универсальность правил внешних колец. Исходные данные и текущая реализация требуют независимого контрольного запуска нашей поставки.
Степенную роль Border Factor отдельно описывает разработчик редактора Quintillus в обсуждении настройки границ. Геометрическое преобразование сверено с Tile_Math.cs закреплённого OpenCiv3. Это источник реализации и формата, а не подтверждение поведения EXE. Исследование OpenCiv3 описывает ограничения источника.
Поклеточный расчёт
Культурное расстояние в логических координатах карты определяется как max(|du|, |dv|) + floor(min(|du|, |dv|) / 2). Первое кольцо содержит восемь соседей; первые два — двадцать потенциально обрабатываемых клеток и центр. Учитывается замыкание карты. Радиус работы жителей и проверка сохранения используют ту же функцию.
Каждый город создаёт прямые притязания в пределах уровня, определённого культурой нынешнего владельца. История прежних владельцев сохраняется отдельно. Для спорной клетки сравниваются:
- Меньшее культурное расстояние.
- Большая накопленная культура претендующего города.
- Более ранний ход основания.
- Текущий определённый обход от севера против часовой стрелки на экране.
При оставшейся полной ничьей используется устойчивый идентификатор. Порядок объектов в массиве не влияет на результат. Нахождение клетки в чужих владениях раньше другого претендента само по себе приоритета не даёт. Центр города защищён нулевым расстоянием.
Прямые океанские притязания ограничены вторым кольцом. Прочие водные типы не получают этого ограничения. Для клеток без прямых притязаний выполняется один проход заполнения из снимка прямых владений: сначала пара NW–SE, затем NE–SW. Новые заполненные клетки не распространяют заполнение дальше. Настоящее притязание всегда важнее заполнения промежутка.
Связь с игрой
Границы пересчитываются при основании, культурном обновлении, сохранении захваченного города и разрушении города. Поэтому после захвата город с нулевой культурой нового владельца не удерживает прежние внешние кольца. Другие действующие города продолжают поддерживать свои притязания.
При изменении территории общие назначения жителей обновляются у обеих сторон. Чужой прежний работник не блокирует новую законную обработку клетки. Незаконченное задание рабочего на ставшей чужой клетке прекращается; уже накопленный прогресс на местности сохраняется. Дороги и улучшения не исчезают при смене владельца.
Ресурсная сеть и доступность производства используют текущего владельца клеток. Прогноз урожая учитывает предстоящую культурную прибавку; список «Подключены» в городе показывает фактическую сеть текущего состояния. Браузерная проверка обнаружила и помогла исправить прежнее смешение этих двух состояний.
Город показывает культурную прибавку, уровень, количество колец и следующий порог. При повышении уровня появляется уведомление. ИИ получает такие же территориальные ограничения через общие запросы; отдельная стратегическая политика культурного давления ещё не реализована. Скрытая местность и чужая историческая культура не добавляются в представление игрока.
Сохранения и проверки
Непосредственно перед изменением создано настоящее сохранение опубликованной схемы 11 с незавершённой дорогой: tests/fixtures/published-v11-road.json, происхождение записано рядом. При миграции 11 → 12 карта, задания, решения и PRNG не пересчитываются. Новые правила границ применяются при следующем игровом обновлении культуры, основании или смене города.
Двадцать новых проверок покрывают пороги и изменённый коэффициент, геометрию, приоритеты, океан, заполнение, чистоту запросов, захват/разрушение, прекращение работ, потерю лошадей и производственного требования, общий прогноз с урожаем, замкнутую карту, ограничение информации и миграцию. В полном наборе — 215 проверок ядра, 7 JavaScript-медиа и 24 Python. Полная партия проходит 266 команд до победы России на ходу 44 с загрузкой между каждой командой.
Отдельный Chromium-сценарий начинает обычную новую партию и получает расширение столицы после десяти урожаев без изменения состояния. Подготовленный пограничный случай проверяет фактический переход клетки к Риму, потерю подключённых лошадей и доступности заказа, освобождение клетки и прекращение работы. Состояние после действий интерфейса и ИИ сравнивается с ядром; проверяются экспорт и перезагрузка.
Что остаётся открытым
Контроль Windows-оригинала не выполнен. Порядок пересчёта между городами, добавление культуры на межходе, сложные внешние кольца, точные ничьи по годам/направлениям, одношаговое заполнение, водные исключения и граничное замыкание пока являются определённой проверяемой моделью. Возрастное удвоение культуры зданий, культурные переходы городов, культурные победы и стратегический культурный ИИ ещё не реализованы. Историческая культура и национальности подготовлены для следующих задач, но сами по себе не означают поддержки переходов.