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 з
BUTTON0–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 |
Довідкові каталоги містяться в окремих репозиторіях:
coreprime/reference-ta— 278 юнітів, 199 видів зброї, 45 будівельників.coreprime/reference-tak— 203 юніти, 198 видів зброї, 32 будівельники.
Див. також
internal/documentor— пакет Go, що відповідає за видобування даних з обох ігор.- Підводні камені — специфічні для кожної гри підводні камені в одному місці.
- Посібник із моддингу — наразі лише для TA; опис TA:K — відома прогалина.
- Глосарій — довідник термінів для обох ігор.