Усі сторінки форматів ↓
Посібники й довідка

TA і TA: Kingdoms — відмінності форматів

Джерело: coreprime/kbot @ 0ab97bf · Редагувати на GitHub

Одна сторінка, що підсумовує, що однакове, що схоже, а що відрізняється між Total Annihilation (1997) і TA: Kingdoms (1999). Стане в пригоді, коли ви переносите напрацювання з однієї гри на іншу або вирішуєте, яку гру має підтримувати ваш інструмент.

Tip

Коротко. TA:K зберегла більшість контейнерних форматів TA (HPI, GAF, TDF, COB), але спростила обгортки (жодного XOR в HPI v2, жодного окремого каталогу weapons/, жодної сітки будівництва 2×3) і додала поверх зовсім нові речі (4 сторони, економіку на ресурсі mogrium, «зброю» у вигляді заклинань, архіви .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 bpp Той самий формат, зазвичай більший набір гліфів ✅ читання
Секції мап 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 —
Підключення звукових банків Трирівневе: SoundCategory у FBI → gamedata/sound.tdf → sounds/*.wav Поля soundclass= / soundcategory= з іншим способом розв'язання ✅ підключення в TA; ⚠️ підключення в TA:K ще треба описати
Відео Smacker / ZRB data/*.zrb (перейменований .smk) Той самий формат Smacker під іншими розширеннями ✅ обидві
Меню інтерфейсу .gui (формат відмінний від TA:K) .gui — дерево віджетів, розділене пробілами; див. takgui.md ⚠️ описано лише TAK; .gui із TA ще не охоплено

Умовні позначення: ✅ повноцінна підтримка · ⚠️ часткова · ❌ не підтримується · — не застосовно або не планується


Що справді спільне

Ті самі байти, той самий парсер, ті самі типи Go:

  • Маркер HPI ('HAPI') — з нього починається кожен контейнер архіву.
  • Граматика TDF — обидві гри розбирають FBI/OTA/TDF зброї тим самим парсером. Назви полів різняться, але синтаксис ідентичний.
  • Байткод COB — опкоди, стекова модель, маски сигналів, кожне значення 0x10xxxxxx, внесене до каталогу в cob.md, працюють в обох.
  • Відео Smacker — .smk / .zrb ідентичні до біта; змінюється лише розширення імені файлу.
  • Концепція ієрархії 3DO — обидві гри використовують дерева іменованих частин із зв'язками parent/child/sibling, координати з фіксованою комою й примітиви, що посилаються на текстури за іменем.

Що відрізняється в дрібницях (читайте уважно)

  • Структура заголовка HPI. v1 = 20 байтів загалом (5 × uint32). v2 = 8 байтів прологу + 24-байтовий підзаголовок. Перші 8 байтів в обох однакові (маркер + версія), тож читач, що знає лише v1, успішно перевірить магічне число, перш ніж упасти на решті. Див. HPI v2 у hpi.md.
  • Економічні поля FBI. TA: BuildCostMetal= + BuildCostEnergy=. TA:K: один buildcost= (mogrium). 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.
  • Економіка з одним ресурсом — mogrium (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 HPI v2 у TA: Kingdoms, повний шістнадцятковий розбір — у Додатку — Jersey.hpi
ai.md TA: Kingdoms — профілі без plan
takgui.md Уся сторінка стосується лише TA:K
takmap.md Уся сторінка стосується лише TA:K

Довідкові каталоги містяться в окремих репозиторіях:


Див. також