用語集
Total AnnihilationのMOD制作で繰り返し出てくる用語を、形式の垣根を越えてまとめたリファレンスです。各用語には、それを最も詳しく扱っているページへのリンクがあります。
アンカーオブジェクト(Anchor object)
頂点が1つでプリミティブが0個の3DOのピース。実行時には見えません。COBスクリプトのコマンド(emit-sfx from <anchor>;)で使う、名前付きの座標の役目を果たします。
アーカイブ(Archive)
HPI / UFO / CCX / GP3ファイル。4つの拡張子はどれもディスク上では同じ形式で、違うのは読み込み順だけです。
ARGB4444 / ARGB1555
トゥルーカラーのTAFで使われる、2つの16ビットのピクセル符号化。ARGB4444はアルファ、赤、緑、青をそれぞれ4ビットずつ詰めたもの(16段階の柔らかなアルファ)で、ARGB1555は1ビットのアルファとRGB各5ビットを詰めたもの(くっきりした切り抜き)です。どちらを使うかは、フレームのFormatバイト(4または5)で選びます。
属性セル(Attribute cell)
TNT(またはSCT)マップにある16×16ピクセルのセル。各タイルは32×32 pxなので、属性セルを4つ含みます。高さ、地形物の配置、経路探索や建設の可否は、属性セルごとに格納されます。
軸(Axis)
COB/3DOでは、3つの回転軸の1つを示す数値のIDです(0 = X、1 = Y、2 = Z)。MOVE/TURN/SPINのCOBオペコードは、軸をインラインのオペランドとして取ります。3DOファイルでは、Yが上です。
BOS
「Basic Object Script」。ユニットのアニメーションと振る舞いのスクリプトを書く、C風のソース言語です。COBにコンパイルされます。MOD制作者が手で書くもので、kbot cob decompileでCOBから復元できます。
COB
「Cobble」。エンジンが実際に実行する、スタックベースのバイトコードです。COB / BOSを参照してください。
圧縮チャンク(Compression chunk)
HPIファイル内の、展開後64 KiB以下のブロック。各チャンクは、それぞれのSQSHヘッダー、圧縮方式(LZ77 / ZLib / なし)、サイズの組、任意の2段目のXORスクランブルを持ちます。
埋め込みパレット(Embedded palette)
PCXファイルのRLEピクセルデータの直後に付け加えられたPALで、先頭に0x0Cのマーカーバイトが付きます。合計769バイトです。
地形物(Feature)
TNTマップに置かれる、ユニットではない静的なオブジェクト。木、岩、金属の鉱床、地熱の噴出口、給水地などです。features/**/*.tdfファイルで定義され(TDFを参照)、TNTから名前で参照されます。
固定小数点(Fixed-point)
3DOモデルの座標系。各int32座標はvalue / 65536.0ワールド空間単位を表します。つまり0x00010000はちょうど1ワールド単位、0x00018000は1.5ワールド単位です。
フットプリント(Footprint)
ユニットや地形物のグリッド上の外接矩形で、16ピクセルの属性セル単位(FootprintX × FootprintZ)で表します。エンジンはこれを建設の配置と経路探索に使います。
ゲームティック(Game tick)
基本の時間単位。1秒あたり30ティックです。COBやGAFのタイミングのフィールドは、ほとんどがティックを使います。
HPI
「HAPI」アーカイブ。HPI / UFO / CCX / GP3を参照してください。
レイヤー構造(Layering)
エンジンが起動時に複数のHPIアーカイブを組み合わせる方法。後から読み込まれたアーカイブのファイルは、それより前のアーカイブにある同じパスのファイルを覆い隠します。読み込み順は(優先度の低いものから高いものへ).hpi → .ufo → .ccx → .gp3です。
ルックアップテーブル(Lookup table)
.alp、.lht、.shdファイル。(RGBではなく)256個のパレットインデックスからなる行の並びで、元の色ごとに1列あります。.alpは65,536バイト(混色の相手ごとに1行で256行)、.shdや.lhtは8,192バイト(陰影や明るさの段階ごとに1行で32行)です。エンジンは必要な行で現在の色を引き、その結果は、通常の8bppの描画処理で描ける別のパレットインデックスです。ゲームがテーブルを使うのは、そのサイズがぴったりのときだけです。テーブルがない場合や、それ以外のサイズの場合は、パレットから作り直されます。PALを参照してください。
LZ77
CompMethod == 1のときにHPIのチャンクで使われる、スライド窓による圧縮。4 KiBの窓、2〜17バイトの一致、LSBファーストのタグビットです。
マジックピンク(Magic pink)
標準のTAパレットのインデックス9(#5454FC)。エディターのツールが、元のPCX/GAFファイルで透過させる領域の塗りつぶし色として使い、また多くのGAFフレームが格納しているキーでもあるため、それらのフレームでは透過になります。それ以外の場所では、ふつうの色です。透過キーを参照してください。
オブジェクト名(Object name)
ユニットの3DO、COB、PCXファイルが共有する、小文字のベース名。FBIのObjectnameフィールドで宣言されます。ほかの設定ファイルが使う外部の識別子であるUnitNameとは別物です。
OTA
「Online Total Annihilation」。TNTマップのメタデータのサイドカーです。TDF形式(TDF)のプレーンテキストで、ミッション名、説明、AIへの指示、開始位置、環境についてのヒントを持ちます。
パレット画像(Paletted image)
ピクセルの値が直接のRGBの3つ組ではなく、別にある256項目のPALへの8ビットのインデックスになっているビットマップ。TAに付属する目に見えるアセットは、どれもパレット画像です。PCX、GAF、SCT、TNTのタイルのピクセル、そして埋め込みのミニマップがそうです。目立つ例外は、TA: KingdomsのトゥルーカラーのTAFアニメーションです。
ピース(Piece)
3DOにある名前付きのサブオブジェクト。COBスクリプトはピースを名前で操作します(turn turret1 to y-axis [90] speed [60];)。
スキーマ(Schema)
TNTと対になるOTAファイルの中にある、名前付きの別のゲーム設定。スキーマが違えば、ふつうはプレイヤー数ごとに異なる開始位置の配置を持ちます。
海面(Sea level)
TNTヘッダーのSeaLevelフィールド。Heightバイトが海面より小さい属性セルは、水中として扱われます。SeaLevel == 0のマップでは何も水中になく、SeaLevel == 255のマップではすべてが水中です。
セクション(Section)
SCTファイル。CavedogのTAEエディターがつなぎ合わせて最終的なTNTマップを作った、再利用できるタイルのかたまりです。
シグナルマスク(Signal mask)
COBスクリプトで宣言されるビットマスク(set-signal-mask <n>)で、どのsignalメッセージが現在のスクリプトのインスタンスに割り込むかを決めます。状態が変わったときに、Walk/Aim/Idleのアニメーションをきれいに打ち切るために使います。
陣営(Side)
TAではARMかCORE、TA: KingdomsではAramon、Taros、Veruna、Zhonのいずれか。ユニットごとにFBIのSideフィールドで宣言されます。TA: Kingdomsでは、GAFアニメーションをどの陣営のパレットで描画するかにも関係します。
SQSH
HPI内の各圧縮チャンクの先頭にあるマーカー(LEで0x48535153)。チャンクが「押しつぶされた(squashed)」データであることをもじった、遊び心のある名前です。
サブフレーム(Sub-frame)
入れ子になったGAFのフレーム。目に見える1つのアニメーションフレームは、順に転送される複数のサブフレームの合成であることがあり、各サブフレームはそれぞれ原点のオフセットとピクセルデータを持ちます。
TAF
TA: Kingdomsのトゥルーカラーアニメーション。GAFのコンテナの配置を流用していますが、パレットインデックスの代わりに16ビットのARGB4444 / ARGB1555ピクセルを格納するので、自身の色とアルファを持ちます。.taf拡張子はパレット付きのGAF風のファイルと共通で、フレームごとのフォーマットバイトで両者を見分けます。
ティック(Tick)
ゲームティックを参照してください。
タイル(Tile)
マップ画像の32×32ピクセルのかたまり。TNTとSCTの基本の表示単位です。タイルのグリッドはuint16でインデックス付けされるので、理論上は1つのマップに最大65,536種類のタイルを持てます。
透過キー(Transparency key)
GAFのフレームが透過として格納するパレットインデックス。ゲームは、非圧縮フレームではその値のピクセルを描かずに残します。圧縮フレームで透過になるピクセルはスキップのランで、それ以外のピクセルはキーと等しくても描かれます。パレット全体で共通の透過インデックスはありません。地形、ミニマップ、PCXの背景、モデルのテクスチャは、パレットインデックス0(黒)も含めて、すべてのインデックスを描画します。トゥルーカラーのTAFのフレームにはキーがなく、透過は代わりにピクセルごとのアルファチャンネルで決まります。
トゥルーカラー(Truecolor)
パレットへのインデックスではなく、ピクセルごとに色(とアルファ)を格納するビットマップ。ほかはすべてパレット画像であるTAのアートの中での例外で、TA: KingdomsのTAFアニメーションは16ビットのARGB4444 / ARGB1555ピクセルを使います。
TSF
「TAF Source Format」。TAFを、人が読める波かっこ区切りのテキストで表した形式です。TA: KingdomsのGUIローダーは、メニューの背景用に.tsfを直接読みます。kbot taf decompileがこれを出力し、kbot taf compileが読み戻します。TAF / TSFを参照してください。
仮想ファイルシステム(VFS)
インストールのルートにあるHPI系のアーカイブをすべて重ね合わせた後に、エンジン(とkbot mount / kbot mcp)が見る、統合されたファイルのツリー。units/ARMCOM.fbiのようなファイルを、それがtotala1.hpiにあるのか、ccdata.ccxにあるのか、展開済みのディレクトリにあるのかを気にせずに参照できます。
ボイドセル(Void cell)
Feature == 0xFFFCのTNTの属性セル。それ自体は地形物ではないものの、そこに地形物があるかのように扱うべき、通行できない地形(峡谷の壁、深い水の境界)を示します。
ヤードマップ(Yardmap)
FBIにある複数行のASCIIのグリッドで、建物のフットプリントのマスごとの制約を表します。よく使われる文字は、o = 開けた土地、c = 閉じている(建物がある)、w = 水上のみ、です。