TA и TA: Kingdoms — различия форматов
Источник: coreprime/kbot @ 0ab97bf · Редактировать на GitHub
Одна страница о том, что совпадает, что похоже, а что различается в Total Annihilation (1997) и TA: Kingdoms (1999). Пригодится, когда вы переносите наработки из одной игры в другую или решаете, какую игру должен поддерживать ваш инструмент.
Tip
Коротко. TA:K сохранила большинство контейнерных форматов TA (HPI,
GAF, TDF, COB), но упростила обёртки (в HPI v2 нет XOR, нет отдельного
каталога weapons/, нет сетки строительства 2×3) и добавила поверх
совершенно новое (4 стороны, экономика на могриуме, «оружие»-заклинания,
архивы .kmp для каждой миссии).
Сводная таблица
| Формат | TA | TA: Kingdoms | Поддержка в kbot |
|---|---|---|---|
| Архив HPI / UFO / CCX / GP3 | v1 — шифрование XOR, файл из нескольких фрагментов, фрагменты ≤64 КиБ | v2 — оболочка открытым текстом, один фрагмент SQSH на файл, заголовок около 32 байт | ✅ чтение обеих; ✅ запись v1; ❌ запись v2 |
Архивы кампании .kmp |
Нет | HPI v2 с другим расширением; содержит карту, скрипты и GAF отдельной миссии | ✅ чтение |
| Анимации спрайтов GAF / TAF | .gaf, палитра берётся из palettes/palette.pal |
.taf с палитрой (тот же двоичный формат), палитра из .pcx стороны; плюс полноцветный вариант .taf/.tsf (16-битный ARGB, см. taf.md) |
✅ чтение всех; ✅ запись GAF и полноцветных TAF/TSF |
| Изображения PCX | unitpics/<name>.pcx — портреты юнитов (96×96, с палитрой) |
Используется как носитель палитры 1×1 рядом с .taf |
✅ чтение/запись |
| PAL / ALP / LHT / SHD | Глобальная палитра TA + таблицы поиска | Палитры для каждой стороны и каждого типа рельефа, в основном внутри носителей PCX; в palettes/ почти для каждой из них лежат также .alp (65 536 байт) и .shd / .lht (8 192 байта) того же устройства (41 набор) |
✅ обе (kbot pal lookup --palette принимает .pal или .pcx) |
| Растровые шрифты FNT | fonts/*.fnt, глифы 1 бит на пиксель |
Тот же формат, набор глифов обычно больше | ✅ чтение |
| Секции карт SCT | sections/<biome>/*.sct — многоразовые блоки тайлов для редактора TAE |
Не используется — система тайлов в TA:K другая | ✅ TA; нет в TA:K |
| Рельеф карты TNT | IDVersion == 0x2000, сетка тайлов + карта высот + объекты + миникарта |
IDVersion == 0x4000 (вариант); общая структура та же, декодер тайлов другой |
✅ TA; ⚠️ TA:K (заголовок читается, тайлы не декодируются) |
| Сопутствующие файлы карт TA:K | Нет | .ota (метаданные TDF), .txt (описание), .crt (двоичный, назначение неизвестно) |
✅ .ota; — .crt/.txt |
| Модели 3DO | Иерархические, грани в цветах палитры или с текстурами | Похожи, но модель наложения текстур другая; у примитивов есть дополнительные поля | ✅ TA; ⚠️ TA:K (загружаются, но кинематика отличается) |
| Скрипты юнитов COB / BOS | scripts/*.cob; стековый байткод |
Тот же формат байткода и те же опкоды; добавлено несколько портов GET_UNIT_VALUE |
✅ обе |
| Текстовые конфигурации TDF / FBI / OTA | Одинаковая грамматика в духе INI | Та же грамматика | ✅ обе |
| Встроенные определения оружия | Нет — оружие лежит в weapons/*.tdf, на него ссылаются по имени |
Да — подсекции [WEAPON1]/[WEAPON2]/[WEAPON3] внутри FBI каждого юнита |
✅ обе, через documentor |
| Профили ИИ | ai/*.txt с директивами plan/weight/limit |
ai/*.txt только с weight/limit (без блока plan) |
✅ обе |
| Меню строительства | Статический [CANBUILD] в gamedata/sidedata.tdf + динамические надстройки [MENUENTRY] в download/*.tdf |
Каталог на каждого строителя canbuild/<builder>/<unit>.tdf, в каждом файле [Menu].Priority |
✅ обе |
| Сетка меню строительства | 2 столбца × 3 строки на странице (BUTTON 0–5) | Линейный список для каждого строителя, упорядоченный по Priority | — |
| Подключение звуковых банков | 3 уровня: SoundCategory в FBI → gamedata/sound.tdf → sounds/*.wav |
Поля soundclass= / soundcategory= с другим порядком разрешения |
✅ подключение в TA; ⚠️ для TA:K ещё не описано |
| Видео Smacker / ZRB | data/*.zrb (переименованный .smk) |
Тот же формат Smacker под другими расширениями | ✅ обе |
| Меню GUI | .gui (формат отличается от TA:K) |
.gui — дерево виджетов с разделением пробелами; см. takgui.md |
⚠️ описан только TAK; .gui из TA пока не разобран |
Условные обозначения: ✅ полноценно · ⚠️ частично · ❌ не поддерживается · — неприменимо или не планируется
Что действительно общее
Те же байты, тот же парсер, те же типы Go:
- Маркер HPI (
'HAPI') — с него начинается любой контейнер-архив. - Грамматика TDF — обе игры разбирают FBI/OTA/TDF оружия одним и тем же парсером. Имена полей различаются, синтаксис идентичен.
- Байткод COB — опкоды, модель стека, маски сигналов, все значения
0x10xxxxxxиз каталога в cob.md работают в обеих играх. - Видео Smacker —
.smk/.zrbпобитово идентичны, меняется только расширение файла. - Иерархия 3DO — обе игры используют деревья именованных деталей с отношениями родитель/потомок/сосед, координаты с фиксированной точкой и примитивы, которые ссылаются на текстуры по имени.
Что различается в мелочах (читайте внимательно)
- Устройство заголовка HPI. v1 — всего 20 байт (5 × uint32). v2 — 8 байт пролога + 24-байтовый подзаголовок. Первые 8 байт в обеих версиях одинаковы (маркер + версия), поэтому читатель, знающий только v1, успешно проверит магическое число и лишь потом упадёт на остальном. См. hpi.md, HPI v2.
- Экономические поля FBI. TA:
BuildCostMetal=+BuildCostEnergy=. TA:K: одно полеbuildcost=(могриум). documentor обрабатывает оба случая черезUnit.BuildMetal/BuildEnergy(TA) иUnit.BuildCost(TA:K) — см. types.go. - Коды сторон. TA:
ARM/CORE. TA:K:ARA/TAR/VER/ZON+CRE(Iron Plague) +MON/LIF/NPC. - Архетип оружия. TA: набор булевых полей (
ballistic=1,lineofsight=1,guidance=1,beamweapon=1, …). TA:K: одна строкаtype=Ballistic/Missile/Magical/Melee. - Модель урона. Обе игры используют подсекцию
[DAMAGE]внутри оружия сdefault=и переопределениями для отдельных целей. TA:K дополнительно задаёт каждому юнитуdamagecategory=(Human,Building,Magical), чтобы моделировать сопротивление по широким классам.
Что есть только в TA
- Полезная нагрузка файла из нескольких фрагментов в архивах HPI (модель «фрагменты ≤64 КиБ с таблицей размеров»).
- Шифрование XOR в HPI (начальное значение по позиции + преобразованный ключ).
- Надстройка
[MENUENTRY]вdownload/*.tdf— добавление пунктов меню строительства без форка sidedata.tdf. - Сетка меню строительства 2×3 с
BUTTON0–5 (от левого верхнего угла к правому нижнему). - Отдельный каталог
weapons/с TDF, на которые ссылаются по имени. - Формат редактора SCT (секции) — особенность TAE.
- Одна глобальная палитра (
palettes/palette.pal), которой рисуются все ресурсы, и один набор таблиц.alp/.shd/.lht. В TA: Kingdoms своя палитра у каждой стороны и каждого набора рельефа, и у большинства из них есть таблицы того же устройства.
Что есть только в TA: Kingdoms
- HPI v2 с упрощённой полезной нагрузкой файла из одного фрагмента.
- Дерево каталогов
canbuild/<builder>/<unit>.tdfдля регистрации в меню строительства (линейный список, без сетки). - Встроенные определения оружия
[WEAPONn]внутри FBI. - Экономика на одном ресурсе — могриуме (
buildcost=, без деления на металл и энергию). - Палитры сторон внутри заглушек PCX 1×1, лежащих рядом с файлами
анимаций
.taf. - Юниты-маги и заклинатели (
arapries,vermage,zonsham), чьё оружие — заклинания. - Четыре (+1) стороны: Aramon, Taros, Veruna, Zhon — плюс Creon из дополнения Iron Plague.
anims/buildpic/*.jpg— портреты юнитов в виде JPG 64×48 (TA использует PCX вunitpics/).- Архивы HPI v2
.kmpдля миссий кампании, в которых карты миссий лежат вместе со скриптами миссий. - Ключ командной строки
-disablecavedogverification, без которого большинство изменённых файлов не загружается.
Различия по страницам — где найти описание каждой игры
На каждой странице формата, где у TA:K есть особенности, есть заметно выделенный раздел «TA: Kingdoms». Краткий указатель:
| Страница | Раздел о TA:K |
|---|---|
| hpi.md | TA: Kingdoms, HPI v2, полный разбор дампа в Приложении — Jersey.hpi |
| ai.md | TA: Kingdoms — профили без plan |
| takgui.md | Вся страница только о TA:K |
| takmap.md | Вся страница только о TA:K |
Справочные каталоги лежат в отдельных репозиториях:
coreprime/reference-ta— 278 юнитов, 199 видов оружия, 45 строителей.coreprime/reference-tak— 203 юнита, 198 видов оружия, 32 строителя.
См. также
internal/documentor— пакет Go, который извлекает данные обеих игр.- Подводные камни — особенности каждой игры в одном месте.
- Руководство по моддингу — пока только для TA, описание TA:K — известный пробел.
- Глоссарий — справочник терминов для обеих игр.