# Что применить из OpenCiv3 в нашей браузерной игре

## Исходная точка

По локальным `README.md` и `dist/app.js` наша игра уже имеет изометрическую карту, редактор местности и типов юнитов, движение, бой, захват городов, производство, простой AI, localStorage и JSON-экспорт. Карта хранится полным прямоугольным массивом; интерфейс и правила находятся в одном JS-модуле. Полноценная экономика Civ3 пока из этого не следует.

Вывод исследования: OpenCiv3 полезнее всего как источник архитектурных решений и проверочных примеров. Переход на Godot и подмена нашего баланса чужим ruleset не требуются для использования этих идей.

## Последовательность внедрения

| Приоритет | Конкретный результат | Зависимости | Критерий готовности |
| --- | --- | --- | --- |
| 1 | Выделенные модель и команды | Текущее состояние и редакторы | Человек и AI вызывают одну проверку движения, боя и производства |
| 2 | Версии схемы и профиля, PRNG | Явная модель | После сохранения и загрузки партия продолжается без повторного хода и иной последовательности бросков |
| 3 | Структурированный профиль правил | [Наши таблицы](../original-game/data/README.md) | Все ID и ссылки проверены; неподдерживаемые флаги перечислены |
| 4 | Еда, население, рост и один заказ города | Профиль и цикл хода | Прогноз совпадает с фактом, население не становится нулевым |
| 5 | Слои клеток и рабочие | Доходы, задания юнитов | Дорога совместима с ресурсом и местностью, прогресс работ переживает загрузку |
| 6 | Наука, казна, содержание | Производство и доходы | Суммы и округления объяснимы, дефицит предсказуем |
| 7 | Ресурсы и торговая сеть | Дороги, технологии, владение | Разрыв сети сразу меняет доступность производства |
| 8 | Роли AI и многотуровые цели | Общий API команд | AI заканчивает ход и выбирает достижимые цели |
| 9 | Культура, настроение, дипломатия | Экономика и владельцы | Последствия видно до подтверждения команды, договоры сохраняются |
| 10 | Расширение до полного профиля Atlants | Проверенный ограниченный цикл | По каждому сценарию опубликована матрица совместимости |

Это наш план внедрения, не roadmap OpenCiv3 и не уже выполненная переработка игры.

## Что взять как образец

- Отделение прототипа от экземпляра: [модель данных](rules-and-data-model.md).
- Явный порядок межходовых расчётов: [цикл хода](turns-and-victory.md).
- Отдельные определения улучшений и работ: [рабочие и доходность](terrain-yields-and-workers.md).
- Независимые DTO сохранений и восстановление ссылок: [сохранения](saves-and-serialization.md).
- Графика по логическим ключам, lazy loading и кэш: [отрисовка](graphics-audio-and-rendering.md).
- Небольшие сценарии для сложных границ: [проверка](development-and-testing.md).

## Что нужно изменить при адаптации

Наши координаты не совпадают со смещённой сеткой Civ3. Импорт должен преобразовывать соседство и размеры отдельно от экранной проекции.

Наше поведение захвата городов следует сохранить или заменить явным правилом: изученный путь OpenCiv3 уничтожает город. Привязки AI к именам юнитов нужно заменить способностями. Точность A* при нулевой цене, состояние RNG, спорные формулы обстрела и возраст культуры требуют собственного решения.

Состав standalone нельзя использовать как полный игровой профиль: он обусловлен наличием графики. Для Atlants нужны все фактические таблицы и отчёт о неподдерживаемых возможностях.

## Минимальный завершённый срез

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

Результат можно считать готовым, когда полный путь от основания города до победы проходит вручную и после промежуточной загрузки, а редакторы не нарушают целостность данных. Далее расширять содержимое по [существующему плану переноса](../original-game/migration-plan.md).

