Обновлено:

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

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

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

QueryCiv3/readme.md описывает читатель бинарных данных с четырёхсимвольными заголовками разделов и смещениями. BiqData и SavData извлекают структуры. Затем C7Engine/C7GameData/ImportCiv3.cs преобразует их в собственную SaveGame.

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

BIQ и SAV

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

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

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

Источники низкого уровня: QueryCiv3/Biq.cs, QueryCiv3/Sav.cs, QueryCiv3/QueryCiv3.cs.

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

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

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

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

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

Источники: C7Engine/C7GameData/PediaIcons.cs, C7Engine/C7GameData/Codex.cs, C7/GamePaths.cs.

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

OpenCiv3 полезен как сравнительный парсер, но фактические 17 уникальных BIQ и таблицы нашего профиля уже исследованы отдельно. Следующий практический шаг — сопоставление наших полей с runtime-моделью и отчёт о каждом неподдерживаемом флаге.

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