# Генератор мира, родная сетка и оригинальные растры

Работа по пункту 4.6 плана. Текущая модель генерации — `atlants-native-world-v2`, геометрия — `civ3-staggered-v1`, собственные сохранения — схема 20. Генератор воспроизводим внутри нашего движка; совпадение алгоритма и карты по зерну с Windows Civilization III не установлено.

## Создание партии

На основном экране «Новая партия» позволяет выбрать создание мира или прежнюю небольшую фиксированную карту. В генераторе доступны архипелаг, материки, Пангея и случайный вариант; вода 60/70/80%; климат, температура и возраст 3/4/5 млрд лет; зерно, замыкание по горизонтали и вертикали, 2–31 цивилизация. Россия остаётся стороной человека. Рекомендуемое число цивилизаций берётся из WSIZ при смене размера.

| Размер из Atlants WSIZ | Координаты | Реальные клетки | Цивилизации по умолчанию |
| --- | --- | --- | --- |
| 0 | 60 × 60 | 1 800 | 4 |
| 1 | 80 × 80 | 3 200 | 6 |
| 2 | 100 × 100 | 5 000 | 8 |
| 3 | 130 × 130 | 8 450 | 12 |
| 4 | 160 × 160 | 12 800 | 16 |

В оригинальной смещённой сетке существуют только координаты с чётной суммой x+y, поэтому число клеток вдвое меньше произведения размеров. Движение по восьми направлениям, расстояния, видимость, культура, городские радиусы, рабочие задания, дороги и ИИ используют общие преобразования. Старые сохранения сохраняют прежнюю геометрию без перестановки клеток.

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

Ресурсы размещаются только на разрешённой эффективной местности из TERR/GOOD. Начальная технология ограничивает их видимость обычными правилами. Плотность стратегических и роскошных ресурсов учитывает appearance_ratio и число цивилизаций; бонусные ресурсы используют отдельную плотность. Это собственная интерпретация размещения, а не восстановленная формула Firaxis.

Старты выбираются на пригодной ровной местности достаточно большого участка суши, с доступной едой. Проверяется минимальное расстояние из WSIZ. Если на данной карте оно не достигается, алгоритм постепенно уменьшает расстояние, сохраняет фактическое значение и предупреждение `START_SPACING_REDUCED`. Это не обещание равной силы всех стартов.

## Воспроизводимость и сохранения

Отдельные потоки xorshift обслуживают сушу, биомы, реки, ресурсы и старты. Выбор случайных параметров также сохраняется. Генерация не расходует поток боя. Сохранение содержит исходные и разрешённые параметры, зерно, состояния потоков, модель, начальные счётчики и координаты стартов. Загрузка восстанавливает текущий мир, а не генерирует его заново; повреждённые метаданные отвергаются.

Поддержана миграция настоящих опубликованных сохранений схемы 19, включая очередь Wait и начатую дорогу. Предыдущие схемы продолжают проходить свои миграции. Предел входного файла поднят до 128 МиБ для больших разведанных миров. Квота localStorage браузера остаётся отдельным ограничением: при её исчерпании нужно экспортировать партию в файл; полноценное хранилище крупных партий ещё предстоит расширить.

Создание мира выполняется в Worker. Отмена завершает Worker и оставляет текущую партию без изменений. После окончания хода последовательно действуют все живые соперники через обычные команды ядра.

## Графика

Оригинальные PCX преобразованы в PNG без перерисовки: базовые переходы TGC/PGC/DGC/DPC/DGP, побережье/море/океан, холмы, горы, вулканы, болота, реки/дельты и бонусный луг. Порядок квадратов и маски рек проверяются по закреплённому исходному коду OpenCiv3. Базовый переход рисуется вокруг северной вершины клетки, речной квадрат — вокруг восточной; это устраняет разрывы, возникавшие при привязке обоих к центру.

Добавлены исходные американские и азиатские города к европейским, средиземноморским и ближневосточным. Названия берутся из 1 032 строк исходной таблицы RACE; первые столицы — Москва, Рим, Фивы, Афины. Цвета миникарты и подписей соответствуют выбранной цивилизации.

Все 32 NTP-палитры извлечены из оригинала. Для палитр помимо двух подготовленных вариантов цветовой индекс восстанавливается по паре RGB из NTP01 и NTP09: все 64 национальных индекса имеют уникальную пару. Затем подставляется исходный цвет целевой NTP. Одинаковые пиксели тела, дыма, тени и прозрачности сохраняются. Восьминаправленные кадры в двух дополнительных палитрах сравнены с независимым декодированием FLC. Реконструкция текстур проверена также в настоящем Chromium.

Для больших миров размер canvas ограничен видимой областью, а положение указателя учитывает прокрутку и масштаб. Прежнее управление — короткий выбор, G, намеренное перетаскивание, удержание, цифровой блок, камера и миникарта — сохраняется. В проверке карты 160 × 160 холст занимает 1 365 × 843 пикселя при указанном размере окна, а не весь мир.

Версия v2 добавляет [оценку роста под начальным правительством и нормализацию пищевых бонусов](ai-expansion-model.md). Старые карты v1 загружаются без регенерации и изменения местности.

## Проверки и открытые работы

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

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

[Текущая проверка генератора v2 и заселения: 460 автоматических проверок, DOM и 19 публичных сценариев Chromium](data/ai-expansion-verification.json) · [Первая итерация v1: 445 проверок и 18 сценариев](data/native-world-verification.json) · [Браузерная проверка генератора](data/browser-world-generator-verification.json)

[Начало новой партии](data/native-generated-start.png) · [Местность и национальные цвета](data/native-terrain-and-palettes.png). Второе изображение — подготовленный проверочный случай: карта раскрыта, иностранные юниты перемещены рядом для проверки палитр; это не снимок обычной разведки.

[Источники и происхождение данных](data/native-world-sources.json) · [Ход разработки](../development-progress.md) · [Управление юнитами](classic-unit-controls.md)
