Все страницы форматов ↓
Руководства и справка

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 с BUTTON 0–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

Справочные каталоги лежат в отдельных репозиториях:


См. также