TAとTA: Kingdoms — 形式の違い
Total Annihilation(1997年)とTA: Kingdoms(1999年)の間で、何が同じで、何が似ていて、何が違うかを1ページにまとめました。2つのゲームの間で作業を移植するときや、自分のツールがどちらのゲームに対応すべきかを決めるときに役立ちます。
Tip
要点:TA:KはTAのコンテナ形式(HPI、GAF、TDF、COB)の大半を引き継ぎましたが、包み方を簡素化し(HPI v2にはXORがなく、独立したweapons/ディレクトリもなく、2×3の建設グリッドもない)、そのうえにまったく新しい要素(4つの陣営、mogriumの経済、呪文を唱える「武器」、ミッションごとの.kmpアーカイブ)を加えました。
早見表
| 形式 | TA | TA: Kingdoms | kbotでの対応状況 |
|---|---|---|---|
| HPI / UFO / CCX / GP3アーカイブ | v1:XORで暗号化、1ファイルに複数チャンク、チャンクは64 KiB以下 | v2:平文の外枠、1ファイルにSQSHチャンク1つ、約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のパレット付き) |
.tafの隣に置く1×1のパレットを運ぶファイルとして使用 |
✅ 読み書き |
| PAL / ALP / LHT / SHD | 共通のTAパレットとルックアップテーブル | 陣営ごと、地形ごとのパレットで、大半はパレットを運ぶPCXの中にある。palettes/には、そのほぼすべてについて、同じ配置の.alp(65,536バイト)と.shd / .lht(8,192バイト)もある(41組) |
✅ 両方(kbot pal lookup --paletteは.palと.pcxのどちらも受け付ける) |
| FNTビットマップフォント | fonts/*.fntの1bppのグリフ |
同じ形式で、グリフの数は多めなのが普通 | ✅ 読み込み |
| 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にあり、名前で参照される |
あり。各ユニットのFBIの中の[WEAPON1]/[WEAPON2]/[WEAPON3]サブセクション |
✅ 両方(documentor経由) |
| AIプロファイル | ai/*.txtで、plan/weight/limitのディレクティブを使う |
ai/*.txtで、weight/limitだけ(planのブロックはない) |
✅ 両方 |
| 建設メニュー | 静的なgamedata/sidedata.tdfの[CANBUILD]+動的に重ねるdownload/*.tdfの[MENUENTRY] |
建設ユニットごとのディレクトリcanbuild/<builder>/<unit>.tdfで、それぞれに[Menu].Priorityがある |
✅ 両方 |
| 建設メニューのグリッド | 1ページが2列×3行(BUTTON 0〜5) | 建設ユニットごとの一列のリストで、Priorityの順に並ぶ | — |
| サウンドバンクの結び付け | 3層:FBIのSoundCategory → gamedata/sound.tdf → sounds/*.wav |
soundclass= / soundcategory=のフィールドで、解決の仕方が異なる |
✅ TAの結び付け、⚠️ TA:Kの結び付けは要文書化 |
| Smacker / ZRB動画 | data/*.zrb(.smkを改名したもの) |
同じSmacker形式で、拡張子が異なる | ✅ 両方 |
| GUIメニュー | .gui(TA:Kとは別の形式) |
空白文字区切りのウィジェットツリーの.gui。takgui.mdを参照 |
⚠️ TAKのみ説明済み、TAの.guiはまだ扱っていない |
凡例:✅ 本格対応 · ⚠️ 部分的 · ❌ 非対応 · — 該当なし、または予定なし
本当に共通しているもの
同じバイト、同じパーサー、同じGoの型:
- HPIのマーカー(
'HAPI'):どのアーカイブのコンテナもこれで始まります。 - TDFの文法:どちらのゲームも、FBI/OTA/武器のTDFを同じパーサーで解析します。フィールド名は異なりますが、構文は同じです。
- COBのバイトコード:オペコード、スタックモデル、シグナルマスク、そしてcob.mdに載っているすべての
0x10xxxxxxの値が、どちらでも機能します。 - 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=(mogrium)1つです。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という1つの文字列です。 - ダメージのモデル:どちらも、武器の下の
[DAMAGE]サブセクションに、default=と対象ごとの上書きを置きます。TA:Kはさらに、大まかな分類ごとの耐性を表すために、各ユニットでdamagecategory=(Human、Building、Magical)を使います。
TAにしかないもの
- HPIアーカイブの複数チャンクに分かれたファイルのペイロード(「64 KiB以下のチャンクとサイズテーブル」の方式)。
- HPIのXOR暗号化(位置ごとのシード+変換した鍵)。
- sidedata.tdfを丸ごと作り替えずに建設メニューのエントリを追加するための、
download/*.tdfの[MENUENTRY]による上乗せ。 BUTTON0〜5(左上から右下)の2×3の建設メニューのグリッド。- 名前で参照されるTDFを集めた、独立した
weapons/ディレクトリ。 - SCT(セクション)のエディター形式:TAE専用。
- すべてのアセットの描画に使われる共通のパレットが1つ(
palettes/palette.pal)と、.alp/.shd/.lhtのテーブルが1組。TA: Kingdomsは陣営ごと、地形セットごとにパレットを持ち、その大半に同じ配置のテーブルがあります。
TA: Kingdomsにしかないもの
- ファイルのペイロードを1チャンクに簡素化したHPI v2。
- 建設メニューへの登録に使う、
canbuild/<builder>/<unit>.tdfのディレクトリツリー(一列で、グリッドはない)。 - FBIの中に直接書くインラインの
[WEAPONn]武器定義。 - mogriumだけの単一資源の経済(
buildcost=。金属とエネルギーの区別はない)。 .tafアニメーションファイルの隣に置かれる、1×1のPCXのスタブに入った陣営ごとのパレット。- 武器が呪文である、魔法・呪文を唱えるユニット(
arapries、vermage、zonsham)。 - 4つ(+1つ)の陣営:Aramon、Taros、Veruna、Zhon、そして拡張パックIron PlagueのCreon。
anims/buildpic/*.jpg:64×48のJPGによるユニットの肖像画(TAはunitpics/のPCXを使います)。- ミッションごとのマップとミッションのスクリプトをまとめた、
.kmpのキャンペーンミッション用HPI v2アーカイブ。 -disablecavedogverification:改造したファイルの大半を読み込むのに必要なコマンドライン引数。
ページごとの差分 — 各ゲームの説明がある場所
TA:K固有の内容がある形式のページには、はっきりと区別された「TA: Kingdoms」の節があります。簡単な索引:
| ページ | TA:Kの節 |
|---|---|
| hpi.md | TA: KingdomsのHPI v2。16進ダンプをすべてたどる解説は付録 — 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のパッケージ。- 落とし穴:ゲームごとの注意点を1か所にまとめたもの。
- MOD制作のチュートリアル:現在はTAのみ。TA:Kについての説明が欠けていることは把握済みです。
- 用語集:ゲームをまたいだ用語のリファレンス。