MOD制作情報
マップパックは1つの.oamapファイル、MODは1つの.oamodファイル、ミューテータは1つの.oamutファイル、ブレインは1つの.oabrainファイルで、いずれも最上位にマニフェストを置いたzipです。ゲームはマニフェストを検証し、パッケージをIDごとにインストールして、宣言されたルールどおりにプレイします。このガイドはフォルダーからカタログのリリースまでを順に案内し、各章からはエンジン自身のドキュメントにある元の規格へリンクしています。
フォルダーからプレイヤーのゲームまでインタラクティブなフロー図
マップパックの構造
.oamapのzip、そのoamap.yamlマニフェスト、パッカーが書くマップインデックス、そしてマップのサイズと地形物でゲームに合うかどうかが決まる仕組み。
GitHub ·docs/maps/oamap-standard.md02MODの構造
.oamodのzipとプロファイルoamod.yaml。識別情報、レイアウト、上限、データキー、スクリプト拡張、有効にする標準ハック。
GitHub ·docs/mods/oamod-standard.md03ミューテータを作る
ベースゲームやどのMODにも重ねる小さな.oamut。フォルダー、マニフェスト、mutateが返すプラン、オプション、サンドボックス、重ねたときの適用順。
GitHub ·docs/mutators/oamut-standard.md04Luaの例
実際のパッケージから取った、動作するスクリプト6つ。ルール1つ、上限付きの倍率変更、陣営別、ゲームを拒否できるunitsフック、featuresフック、フォルダーを重ねるfilesプラン。
GitHub ·docs/mutators/oamut-standard.md#61-the-lua-forms05旧式ミューテータの移植
KroggyComm 1.1をアーカイブからパッケージへ。TA: Mutationのルールファイルはsmで残すか、Luaで書き直す。
GitHub ·docs/mutators/authoring.md#15-importing-a-ta-mutation-mutator06確認、パック、公開
oa-tool mutator checkとpack、ドライラン、カタログページに表示される内容、アイコン、そしてCore Primeへのパッケージの提出方法。
GitHub ·docs/mutators/authoring.md#1-a-first-mutator07ブレインを作る
コンピューターの席を1つプレイする.oabrain。フォルダー、マニフェストの全キー、タグ、レベル、全視界、スクリプトが動く場所、予算、停止したときに起きること。
GitHub ·docs/brains/oabrain-standard.md08ブレインのLua
Steady Commanderのマニフェストとスクリプト、フック、ブレインが知りうることとできること、数値、乱数、タイマー、チャット。
GitHub ·docs/brains/oabrain-standard.md#7-what-a-brain-may-know09実例:Classic
Luaで書いた内蔵コンピューター。ファイル、タスク表、タスクの例、癖の注記、エンジンに残る部分、同じ命令を出すことの証明方法。
GitHub ·docs/brains/authoring.md#13-classic-a-walkthrough10学習済みネットワーク
ブレインが.oannを同梱する理由、整数演算、レイヤー、実行方法、oa-tool brain net、上限、ライブラリでの表示。
GitHub ·docs/brains/oabrain-standard.md#9-neural-networks11ブレインの確認、パック、公開
oa-tool brain packとcheck、ヘッドレス対戦とトレース、ライブラリの確認と席のログ、カタログの種類oabrain、そしてCore Primeへのパッケージの提出方法。
GitHub ·docs/brains/authoring.md#11-testing12標準ハック
プロファイルが有効にできる文書化されたルールと、それぞれのキー、値、元になった挙動。シミュレーションハックはプレイヤー間で一致している必要があります。
GitHub ·docs/mods/standard-hacks13スクリプト拡張
ユニットの撃破数や所有者の同盟など、プロファイルがMODのユニットスクリプトに渡せる値と、COBスクリプトでのそれぞれの読み方。
GitHub ·docs/mods/script-extensions14バージョンとリリース
バージョンは自由なテキストで、順序付けされません。packaging.revisionは再パックのたびに上がり、カタログはリリースに番号を振ります。同じバージョンとリビジョンを異なる中身で使い回してはいけません。
GitHub ·docs/mods/oamod-standard.md#47-catalogue-releases15Core Primeへの公開
パッケージの確認、コンテンツライブラリへの提出、リリースがカタログと全プレイヤーのライブラリに現れる仕組み、そして自前のレジストリの運営方法。
GitHub ·docs/registriesクイックスタート:マップパック
# フォルダー1つ、中にマップ、最上位にマニフェスト my-maps/ oamap.yaml Ridge.tnt Ridge.ota Long Lakes.tnt Long Lakes.ota # oamap.yaml oamap: 1 id: my-maps name: My Maps version: "1.0" author: {name: A. Mapper} packaging: {revision: 1, date: 2026-10-18, packager: A. Mapper} # 検証してパック。インデックスは自動で書かれる $ oa-tool pack my-maps/ -o my-maps.oamap
クイックスタート:MOD
# ユニット上限を引き上げ、共通ルールを2つ有効にするMOD oamod: 1 id: small-mod name: Small Mod version: "1.0" author: {name: A. Modder} packaging: {revision: 1, date: 2026-10-04, packager: A. Modder} limits: units-per-player: {default: 500, max: 1000} hacks: units.id-reuse-delay: true economy.deterministic-wind: true # ファイルに書かれていない部分はすべて3.1cどおりに動作 $ oa-tool pack small-mod/ -o small-mod.oamod
クイックスタート:ミューテータ
# DrinkenのCommander Radar:フォルダー1つ、最上位にマニフェスト commander-radar/ oamut.yaml mutator.lua # mutator.lua:ルール1つ。radarオプションで距離を選ぶ function mutate(ctx) local distance = ctx.options.radar == "none" and 0 or 2880 return { rules = { where { commander = 1, bmcode = 1 }:change { radardistance = set(distance), }, }, } end # フォルダーの外からパックし、.oamutを確認 $ oa-tool mutator pack commander-radar $ oa-tool mutator check commander-radar-1.oamut
クイックスタート:ブレイン
# Steady Commander:フォルダー1つ、最上位にマニフェスト steady-commander/ oabrain.yaml brain.lua # oabrain.yaml oabrain: 1 id: steady-commander name: Steady Commander version: "1.0" author: name: Ridge Workshop description: "Builds a little economy, then a factory, and sends a squad when it is ready." tags: - economy - teaching works-with: - "*" # フォルダーをパックし、.oabrainをゲームに対して確認 $ build/oa-tool brain pack brains/examples/steady-commander --out /tmp/brain-scratch/steady-commander.oabrain $ build/oa-tool brain check /tmp/brain-scratch/steady-commander.oabrain --game-dir "$OA_GAME_DIR"