Правила OpenCiv3: сущности и состав данных
Что измерено
Автоматический разбор базового ruleset дал:
| Таблица | Записей |
|---|---|
| Типы местности | 14 |
| Улучшения местности | 9 |
| Ресурсы | 26 |
| Прототипы юнитов | 124 |
| Здания и чудеса | 82 |
| Технологии | 83 |
| Цивилизации, включая специальные записи | 32 |
| Правительства | 8 |
| Типы жителей | 6 |
| Работы по преобразованию местности | 13 |
| Уровни сложности | 8 |
| Размеры мира | 5 |
Числа относятся к данным этого коммита. Прототип может быть непроизводимым, иметь особый способ появления или неподдерживаемые свойства. Количество зданий не равно количеству законченных эффектов.
Standalone-дополнение оставляет 27 типов юнитов по таблице доступной графики и удаляет upgrade-ссылки на отсутствующие замены. Источник: C7/Lua/standalone/ruleset.lua; проверяемые результаты: ruleset-summary.json.
Определение и экземпляр
UnitPrototype задаёт стоимость, атаку, защиту, движение, ресурсные и технологические требования, действия, флаги, графику и обновления. MapUnit содержит конкретного владельца, местоположение, здоровье, остаток движения и назначение AI. Аналогично отделены определения зданий и построенные городские объекты.
Источники: C7Engine/C7GameData/UnitPrototype.cs, C7Engine/C7GameData/MapUnit.cs, C7Engine/C7GameData/Building.cs, C7Engine/C7GameData/City.cs.
Данные сохранений используют отдельные SaveUnitPrototype, SaveUnit, SaveCity и другие представления. Ссылки восстанавливаются по идентификаторам и ключам, вместо сериализации всего циклического графа объектов.
Что нельзя смешивать
Наш профиль Path of Atlants 2 содержит 413 типов юнитов, 236 технологий и 244 здания по разбору оригинальной поставки. Базовый набор OpenCiv3 не заменяет этот профиль и не доказывает поддержку его флагов.
Рабочая таблица совместимости должна различать: «поле разобрано из BIQ», «перенесено в нашу схему», «влияет на правила», «объясняется интерфейсом», «проверено сценарием». При импорте неизвестное свойство следует сохранять или выдавать диагностику, а не терять молча.
Для редактора
Использовать устойчивые ключи для сущностей, отдельные локализованные названия и явный список возможностей. Не определять роль по отображаемому имени «Worker». При изменении прототипа заранее определить, меняются ли характеристики существующих экземпляров. Состав профиля, правила и сохранённая партия должны иметь отдельные версии.