# Импорт Civilization III: BIQ, SAV и пределы совместимости

## Два разных слоя

[QueryCiv3/readme.md](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/QueryCiv3/readme.md) описывает читатель бинарных данных с четырёхсимвольными заголовками разделов и смещениями. `BiqData` и `SavData` извлекают структуры. Затем [C7Engine/C7GameData/ImportCiv3.cs](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/ImportCiv3.cs) преобразует их в собственную SaveGame.

Полезно различать пять результатов: файл распакован, разделы найдены, поля прочитаны, данные импортированы, поведение реализовано. Прохождение первых четырёх не гарантирует последнее.

## BIQ и SAV

BIQ содержит правила и, в зависимости от сценария, карту и заданное начальное состояние. SAV содержит состояние партии и может опираться на правила; загрузчик получает default BIQ как дополнительный источник.

`ImportSav` импортирует общий набор правил, лидеров, юнитов, города, сложность, историю, часть состояния победы, размеры, замыкание и клетки. Среди свойств клеток переносятся базовая и наложенная местность, графический вариант, реки, лагеря, руины, загрязнение и кратеры.

SAV нельзя трактовать как карту без населения и дипломатии, но и полное восстановление всего оригинального состояния в этом коде не доказано. В импорте остаются TODO по победителю, сопротивляющимся жителям, посольствам и деталям состояния юнитов.

Источники низкого уровня: [QueryCiv3/Biq.cs](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/QueryCiv3/Biq.cs), [QueryCiv3/Sav.cs](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/QueryCiv3/Sav.cs), [QueryCiv3/QueryCiv3.cs](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/QueryCiv3/QueryCiv3.cs).

## Сжатие и версии

Файлы могут использовать PKWare DCL; README проекта и NOTICE указывают на Blast как компонент распаковки. Сжатие не следует путать с привычным ZIP-контейнером. Структуры и размеры зависят от варианта файла; отдельные поля и сценарии остаются предметом исправлений.

При анализе конкретного раздела нужно проверять версию, длины, количество записей и битовые поля. Неизвестное поле нельзя автоматически присвоить стандартному смыслу из другой редакции. Предыдущие подробности: [сжатие](../civ3-conquests/knowledge-base/github-tools/save-compression.md), [встроенные правила](../civ3-conquests/knowledge-base/github-tools/save-rule-sections.md).

## Тексты и графические ссылки

Импорт связывает правила с PediaIcons и Civilopedia. Путь сценария влияет на поиск ресурсов. `Codex` читает текст в Windows-1252; это не подтверждает корректную обработку русской поставки Path of Atlants 2. Кодировку нужно определять и проверять отдельно.

Источники: [C7Engine/C7GameData/PediaIcons.cs](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/PediaIcons.cs), [C7Engine/C7GameData/Codex.cs](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/Codex.cs), [C7/GamePaths.cs](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7/GamePaths.cs).

## Для нашей поставки Atlants

OpenCiv3 полезен как сравнительный парсер, но фактические 17 уникальных BIQ и таблицы нашего профиля уже исследованы [отдельно](../original-game/rules-and-scenarios.md). Следующий практический шаг — сопоставление наших полей с runtime-моделью и отчёт о каждом неподдерживаемом флаге.

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

