DCS World: Mod の構成

DCS の Mod (GameGUI) の構成について。備忘録。

ディレクトリ構成

基本となる構成:

saved games/
 |- dcs/
     |- Mods/
     |   |- tech/
     |       |- {MOD_NAME}/
     |           |- Options/
     |           |   |- (files)
     |           |- Theme/
     |           |   |- (files)
     |           |- entry.lua
     |- Scripts/
         |- Hooks
             |- {MOD_NAME}.lua

各ファイルについて

entry.lua

entry.lua は Mod のサマリファイルである。
デフォルトでは Mods/Aircraft/ もしくは Mods/tech/ の下がスキャン対象 (再帰的) になるらしい。Mod 用のディレクトリを作ってその中に配置するのが妥当かと思われる。
(DCS-SRS は Mods/Services の下に Mod 本体を配置しているので、例外がありそう)

declere_plugin(mod_id, information)および plugin_done()を記述することによって、Mod のメタデータを宣言することができる。これらの情報は DCS 起動時に読み込まれ、メインメニューにアイコンを表示したり settings 画面の項目を追加したりするのに使われる。 (詳細については後述)

Scripts/Hooks/***.lua

ゲーム実行中に発生した Hook/Callback の対象となる処理を記述するファイルである。

ここに置くファイルにフック処理を直接書いてもよいが、いくつかの Mod を見るとどうやら entry.lua の近くに配置した別ファイルをロードすることが多いようである。 (特にルールはない)
参考として、Tacview の場合は Mods/tech/tacview/bin/tacview.dll を呼び出していて、DCS-SRS の場合は Mods/Services/DCS-SRS/Script/DCS-SRSGameGUI.lua を呼び出している。

Theme ディレクトリ

Mod のアイコン画像ファイルを配置するディレクトリ。entry.lua 内でディレクトリ名を指定する。(ディレクトリ名は Theme でなくてもよい)

Options ディレクトリ

Mod の設定画面 (GUI) および設定項目を定義したファイルを配置するディレクトリ。 entry.lua 内でディレクトリ名を指定する。(ディレクトリ名は Options でなくてもよい)

利用できる API とコールバック

DCS のインストールディレクトリ下 (DCSWorld/API/DCS_ControlAPI.html) に、利用可能な API やコールバックを列挙したマニュアルが配置されている。

マニュアルの付近にヘッダファイル (.h) やテンプレートプロジェクト (.sln) などが存在するので、それらを利用することもできる。 (当方未確認)