Total Annihilationのマップ、MOD、ユニット、ツールを作る
Total AnnihilationとTA: Kingdomsで何かを作るのに必要なものがそろっています。2作品に含まれるすべてのファイル形式をバイト単位で解説したリファレンス、それらを読み書きするツールキットkbot、そしてOpen Annihilation向けにマップ、MOD、ミューテータ、コンピューター用のブレインをパッケージにするためのガイドです。
ファイル形式リファレンスアーカイブからユニットスクリプトまで、2作品に含まれるすべての形式カタログ全体 ›
各ページでは、形式のディスク上の構造と、それを手元のインストールで確かめるkbotコマンドを並べて載せています。そのファイルが何か、ヘッダーとペイロードのバイト単位の構造、読み込む順序、実際のCavedogのファイルを分解した例、そして落とし穴です。
コンテナー・ラッパー形式
グラフィックとメディア
GAF
インデックスカラーのスプライトアニメーション(カーソル、爆発、ユニットの部品、地形物)
.gaf .tafTAF / TSF
TA: Kingdomsのトゥルーカラー(16ビットARGB)アニメーション(呪文のエフェクト、爆発、メニューの背景)と、その編集できるテキスト形式
.taf .tsfPCX
ZSoft Paintbrushのビットマップ。ユニットの肖像、GUIのパネル、TA:Kでパレットを収めたファイル
.pcxPAL / ALP / LHT / SHD
256色のカラーパレット(1,024バイト)とカラールックアップテーブル:.alp 256×256(65,536バイト)、.shd / .lht 32×256(8,192バイト)
.pal .alp .lht .shdFNT
1ピクセル1ビットの可変幅ビットマップフォント
.fntSmacker / ZRB
カットシーンのムービー(RAD Game ToolsのSmackerを.zrbに改名したもの)
.smk .zrbBink
TA: Kingdomsのカットシーンのムービー(RAD Bink 1)。Smackerの後継
.bikWAV / サウンド
普通のWAVと、3層のサウンドバンクのつながり
.wavマップと地形
ユニット、スクリプト、設定
3DO
ユニットや地形物の階層型3Dメッシュ。面はパレットのインデックスカラー
.3doCOB / BOS
すべてのユニットを動かす、スタックベースのアニメーション・スクリプト用バイトコード
.cob .bosTDF / FBI / OTA
INI形式の設定ツリー。ユニットの能力値、武器、マップのメタデータ。FBIの全フィールドの辞書付き。
.tdf .fbi .otagamedataのTDF
移動クラス、陣営データ、サウンドの割り当て、武器のリファレンス
gamedata/*.tdfAIプロファイル
難易度ごとのAIの重み付けとユニット上限を書いたプレーンテキスト(TAKのプロファイルにはplanがない。TAKの注記を参照)
ai/*.txtTA: KingdomsのGUI
チュートリアルとリファレンス
ツールキットkbotすべての形式を扱うひとつのコマンドラインツールGitHubのkbot ›
kbotはHPI、UFO、CCX、GP3のアーカイブを開き、マップ、セクション、スプライト、パレット、フォントを描画し、COBスクリプトを逆コンパイルしてチェックし、TDFとFBIのファイルを解析し、インストール全体をひとつのフォルダーとしてマウントして閲覧できるようにします。コンテキストを設定すれば、リファレンスのコマンドはどれも書いてあるとおりに動きます。
Goでインストールしてから、ゲームフォルダーを登録します:
go install github.com/coreprime/kbot/cmd/kbot@latest
kbot ctx add ~/games/totala --alias ta --game totala
Open AnnihilationのMOD制作mods.coreprime.netのMOD制作ガイドMOD制作情報 ›
自作のマップやMODはOpen Annihilationで遊べます。マップパックは.oamapファイル1つ、MODは.oamod、ミューテータは.oamut、コンピューター用のブレインは.oabrainで、どれも最上位にマニフェストを置いたzipです。チェックとインストールはゲームが行います。MOD制作ガイドでは、それぞれを章ごとに説明しています。
マップパックの構造
.oamapのzip、そのoamap.yamlマニフェスト、パッカーが書くマップインデックス、そしてマップのサイズと地形物でゲームに合うかどうかが決まる仕組み。
02MODの構造
.oamodのzipとプロファイルoamod.yaml。識別情報、レイアウト、上限、データキー、スクリプト拡張、有効にする標準ハック。
03ミューテータを作る
ベースゲームやどのMODにも重ねる小さな.oamut。フォルダー、マニフェスト、mutateが返すプラン、オプション、サンドボックス、重ねたときの適用順。
04Luaの例
実際のパッケージから取った、動作するスクリプト6つ。ルール1つ、上限付きの倍率変更、陣営別、ゲームを拒否できるunitsフック、featuresフック、フォルダーを重ねるfilesプラン。
05旧式ミューテータの移植
KroggyComm 1.1をアーカイブからパッケージへ。TA: Mutationのルールファイルはsmで残すか、Luaで書き直す。
06確認、パック、公開
oa-tool mutator checkとpack、ドライラン、カタログページに表示される内容、アイコン、そしてCore Primeへのパッケージの提出方法。
07ブレインを作る
コンピューターの席を1つプレイする.oabrain。フォルダー、マニフェストの全キー、タグ、レベル、全視界、スクリプトが動く場所、予算、停止したときに起きること。
08ブレインのLua
Steady Commanderのマニフェストとスクリプト、フック、ブレインが知りうることとできること、数値、乱数、タイマー、チャット。
09実例:Classic
Luaで書いた内蔵コンピューター。ファイル、タスク表、タスクの例、癖の注記、エンジンに残る部分、同じ命令を出すことの証明方法。
10学習済みネットワーク
ブレインが.oannを同梱する理由、整数演算、レイヤー、実行方法、oa-tool brain net、上限、ライブラリでの表示。
11ブレインの確認、パック、公開
oa-tool brain packとcheck、ヘッドレス対戦とトレース、ライブラリの確認と席のログ、カタログの種類oabrain、そしてCore Primeへのパッケージの提出方法。
12標準ハック
プロファイルが有効にできる文書化されたルールと、それぞれのキー、値、元になった挙動。シミュレーションハックはプレイヤー間で一致している必要があります。
13スクリプト拡張
ユニットの撃破数や所有者の同盟など、プロファイルがMODのユニットスクリプトに渡せる値と、COBスクリプトでのそれぞれの読み方。
14バージョンとリリース
バージョンは自由なテキストで、順序付けされません。packaging.revisionは再パックのたびに上がり、カタログはリリースに番号を振ります。同じバージョンとリビジョンを異なる中身で使い回してはいけません。
15Core Primeへの公開
パッケージの確認、コンテンツライブラリへの提出、リリースがカタログと全プレイヤーのライブラリに現れる仕組み、そして自前のレジストリの運営方法。