【BeamNG drive】キーコンフィグの作り方 ~Mod作成記#6~

オリジナルアクションを追加した時のキーコンフィグOption画面の例 BeamNG.drive[JP]

「Modやオリジナルのコマンドをキーボード/コントローラから操作したい!!」
ということがあったので、方法を調べてみました。

方法

方法はいたってシンプルで、キーコンフィグ用のファイルを作成する、たったこれだけです。

ファイルさえ作ってしまえば、通常のキー割り当てと同じようにオプション画面からキー割り当ての設定ができます。

※ここでは通常アクションの設定方法を紹介します。車両独自のアクションの設定については参考に記載のURLを参照してください。

1.キーコンフィグのファイルを作成

まずはキーコンフィグ用のファイルを作成していきます。

このファイルは、キー割り当ての対象にしたいアクション(Luaコマンドなど)を記載したファイルです。
このファイルを所定のフォルダに置いておくことで、ファイルに記載したアクションがオプション画面のCONTROLSで設定できるようになります。

ファイルは以下のフォルダに「○○.json」という形式で作成します。

ユーザフォルダ\AppData\Local\BeamNG.drive\0.25\lua\ge\extensions\core\input\actions

※フォルダがない場合は新規作成してください。
※「○○.json」の○○の部分は他のファイルと名前が被らないようにしましょう。

○○.jsonには、"アクション名" : {アクションの設定}という形式で、アクション毎に設定を記載します。

{
    "アクション名1": {
        (ここにアクションの設定を記載(後述の一覧参照))
    },
    "アクション名2": {
        (ここにアクションの設定を記載(後述の一覧参照))
    },
    ...
}

1ファイルに複数のアクションを記載することが可能ですが、アクション名はグローバルな名前空間で一意の名称とする必要がある点に注意してください。

アクション設定の部分は、かなり細かい設定になるのですが、一例としては以下のような記載になります。

{
    "thrill-drive-mod_crash_breaker": {
        "title": "Toggle Crash Breaker",
        "desc": "Explode player vehicle and other nearby vehicles.",
        "isBasic": true,
        "cat": "vehicle",
        "order": 1,
        "isCentered": false,
        "actionMap": "VehicleCommon",
        "ctx": "elua",
        "onDown": "mathkuro_thrillDrive.crashBreaker()"
    }
}


各項目の詳細については以下の一覧をご確認ください。

項目名必須概要
titleこのアクションのタイトルを指定する。
Option画面(以下画像参照)で表示される。
descこのアクションの説明を指定する。
Option画面(以下画像参照)でアクションにカーソルをホバーした際に表示される。
isBasicOption画面(以下画像参照)でデフォルト表示するかどうかをtrue/falseで指定する。
falseの場合は”List advanced bindings too”が設定されている場合のみ表示される。

デフォルト:true
catOption画面(以下画像参照)で表示するカテゴリを指定する。

カテゴリは以下のいずれかを指定
vehicle_specific, vehicle, general, gameplay, camera, menu, slowmotion, replay, editor, flowgraph, debug, vehicle_debug
orderOption画面(以下画像参照)で表示する順番を指定する。(小数点可)
小さい番号が先に表示される。
(被る番号を指定した場合はアルファベット順になるっぽい)
isCenterd値を中央から扱うかどうかをtrue/falseで指定する。
true: -1~+1 (ステアリング、視点操作など)
false: 0~1 (ブレーキ、ハンドブレーキなど)

デフォルト: false
actionMapActionMapを指定する。
※説明が長いので詳細は後述(リンク)

デフォルト:Normal
ctxアクションの実行方法を以下のいずれかで指定する。
ui: javascript (async)
vlua: 車両毎のLuaコマンドをアクティブの車両に実行(async)
bvlua: 車両毎のLuaコマンドをスポーンしている全車両に実行(async)
elua: ゲームエンジンのLuaコマンドを実行(async)
tlua: ゲームエンジンのLuaコマンドを実行(sync)
ts: torquescript?(未確認)
onXX実行したいアクションを指定する。

onXXには以下のいずれか一つを指定する。
onChange: キー/ボタン/アナログ入力の状態が変化したときに実行
onDown: キー/ボタンが押された時に実行
onUp: キー/ボタンが離された時に実行
onRelative: 右クリックのマウス操作に対応?(未確認)

例、キー押下時に車両爆破コマンド実行
“onDown”: “fire.explodeVehicle()”


○○.jsonファイルを作成すると、オプション画面のキーコンフィグに追加したオリジナルのアクションが表示されます。

オリジナルアクションを追加した時のキーコンフィグOption画面の例

※もし追加したアクションが出てこない場合はCtrl+Lでリロードしてみてください。
(それでも表示されない場合は、設定かファイルパスが間違ってるかも)

2.キーコンフィグを設定

ファイルを作成したら、あとは通常通りゲーム内でキーコンフィグの設定を行うだけです。

Option -> CONTROLSを開き、追加したアクションを選択します。
+をクリックし、通常通りキーコンフィグを設定してください。

Options -> CONTROLSで追加したアクションを選択し、通常通りキーコンフィグを設定する

参考

Action Mapについて

Action Mapはキーコンフィグのグルーピングで、上述の”cat”(カテゴリ)に近いのですが、カテゴリがオプション画面上の分類なのに対して、Action Mapは実際の処理上での分類を表します。

デフォルトの分類は以下になりますが、独自の名前の分類を作成することも可能です。

名前概要
GlobalUIにフォーカスされている場合も動作
Menu上述の”cat”に”Menu”が設定されている場合は自動的に割り当てられる
Normalデフォルト値
Normalおよび以下2つは、Menuのアクションがトリガーされる条件下では動作しない
VehicleCommon車両に適用されるアクション
上述の”ctx”に”vlua”が設定されている場合は自動的に割り当てられる
VehicleSpecific現在アクティブな車両に対してのみ適用されるアクション
vehicle-specificのアクションの.jsonファイルを作成した場合は自動的に割り当てられる
※本記事では触れていないため以下URLのリンク先を参照

参考URL

基本的には以下に全て書いてあります。
https://documentation.beamng.com/modding/input/

コメント / COMMENT

タイトルとURLをコピーしました