アドオン製作ガイド:jsonコーディング
アドオン製作ガイド 目次 |
---|
・概要 ・ファイル構成 ・モデリング・テクスチャ ・jsonコーディング < ・動作チェック ・規約・配布 ・知恵袋 |
車両の名前、使用するテクスチャやモデルの指定、走行性能などの設定はjsonでまとめて行ないます。
項目を編集する際は、
- 記号やスペースに全角を使っていないか
- 各項目の末尾の「,」が消えていないか(ファイル最後の項目には不要)
- "~"や[~]のカッコが閉じられているか
- スペルミスをしていないか
に注意してください。
一気に多くの項目を書き換えてしまうと、エラーが出た時に原因が分かりにくくなります。
慣れないうちは、まず車両名・車体モデル・台車モデルを設定し、動作テストを繰り返しながら一つずつ編集するようにしてください。泥沼にはまってしまったら、一度最初から作業しなおすのも手です。
RTMで使うJSON構文(書式)の解説をまとめたページはこちらです。
また、構文エラーのチェックができるwebページもあります。
JSON Pretty Linter - JSONの整形と構文チェック
目次
- trainName (車両名/ID)
- trainType (車両タイプ)
- tags (タグ)
- trainModel2 (車体モデル)
- オプション:Light
- オプション:Light(単行車の場合)
- オプション:AlphaBlend
- bogieModelX (台車モデル)
- buttonTexture (ボタン画像)
- rollsignXXX (方向幕)
- sound_XXX (サウンド)
- サウンドの追加
- slotPos (客席)
- playerPos (運転席位置)
- bogiePos (台車位置)
- trainDistance (車体全長÷2)
- interiorLights (室内灯) *オプション
- smoke (パーティクル) *オプション
- rolling (車体傾斜) *オプション
- door_XX (ドア) *オプション
- pantograph_front (パンタグラフ) *オプション
- 走行性能 *オプション
- 描画設定 *オプション
trainName (車両名/ID)
"trainName": "Template",
編集例
"trainName": "Yuduki_JRW_112kumoha",
RTMで読み込む際の車両名を記述します。
競合の原因になるので他のモデルと名前が被らないよう注意してください。
プレイ中に表示されることはありませんが、車両選択画面ではこの車両名順に表示されます。
trainType (車両タイプ)
"trainType": "EC",
編集例
"trainType": "DC",
電車・気動車等のどのアイテムで扱うかを記述します。
電車は「EC」、気動車は「DC」、貨車は「CC」、タンク車は「TC」です。
tags (タグ)
"tags": "test",
編集例
"tags": "Yuduki JRW 113"
車両選択画面でタグ検索できる機能です。
スペースで区切って複数設定できます。
trainModel2 (車体モデル)
"trainModel2": {
"modelFile": "test/Template.mqo",
"textures": [
["body", "textures/train/test/Template_body.png", "Light"],
["body_alpha", "textures/train/test/Template_body.png", "AlphaBlend"],
["door1", "textures/train/test/Template_door1.png", ""],
["door2", "textures/train/test/Template_door2.png", ""]
]
},
}
編集例
"trainModel2": {
"modelFile": "Yuduki/JRW_112kumoha.mqo",
"textures": [
["mat1", "textures/train/test/Template_body.png", ""]
]
},
}
この車両で使う車体モデルファイルと、テクスチャファイルを指定します。
modelFileのみ、パックzip/assets/minecraft/models/ がファイルパスの起点になるので注意してください。
それ以外は パックzip/assets/minecraft/ が起点なのでtextures/~から指定します。
textures以下の行でモデルの材質ごとにテクスチャファイルとオプションを指定します。
※ここの指定と実際のモデル内の材質数が異なるとnullでエラー落ちします
オプション:Light
テクスチャに前照灯・尾灯の発光機能を適用します。
指定したテクスチャを編集し、以下のようなライトテクスチャを同フォルダに配置しておきます。
オプション:Light(単行車の場合)
前後に運転台とライトがある車両の場合、進行方向に応じてライトの前後が切り替わる設定が可能です。
ライト用テクスチャを以下のように加工し、json内の任意の位置に単行車オプションを追加してください。
単行車オプション
"isSingleTrain":true,
オプション:AlphaBlend
テクスチャの半透明描画を有効化します。
仕様として、影mod(シェーダー)環境下では完全に透明な部分も透けて表示されてしまうので使い所に注意。
>参考:TTKマニュアル - 影mod(シェーダー)に対応させる
bogieModelX (台車モデル)
前後同じ台車(bogieModel2)
"bogieModel2": {
"modelFile": "test/Template_bogie.mqo",
"textures": [
["mat1", "textures/train/test/Template_bogie.png", ""]
]
},
}
前後別の台車(bogieModel3)
"bogieModel3": [
{
"modelFile": "test/Template_bogieFront.mqo",
"textures": [
["mat1", "textures/train/test/Template_bogie.png", ""]
]
},
{
"modelFile": "test/Template_bogieBack.mqo",
"textures": [
["mat1", "textures/train/test/Template_bogie.png", ""]
]
}
],
}
この車両で使う台車モデルファイルと、テクスチャファイルを指定します。
素材として配布されている台車モデルを装備する場合、ここで車体と同様にモデルとテクスチャを指定します。
buttonTexture (ボタン画像)
"buttonTexture": "textures/train/test/button_Template.png",
編集例
"buttonTexture": "textures/train/Yuduki/button_JRW_112kumoha.png",
車両選択画面で表示するボタン画像を指定します。
rollsignXXX (方向幕)
RTM本体の223系モデルを例にします。*1
"rollsignTexture": "textures/train/223/rollsign_223h.png", …(0)
"rollsignNames": [
"S-Rapid_Aboshi", "S-Rapid_Tsuruga", "S-Rapid_", "S-Rapid_", "S-Rapid_", "S-Rapid_",
"Rapid_Kyoto", "Rapid_Himeji", "Rapid_", "Rapid_", "None", "None", "None", "None", "None", "None"
], …(1)
"rollsigns": [
{
"uv": [0.0, 0.28125, 0.0, 1.0], …(2)
"pos": [
[[0.3125, 2.625, 10.25], [0.3125, 2.375, 10.25], [-0.3125, 2.375, 10.25], [-0.3125, 2.625, 10.25]],
[[1.5, 2.6875, -3.1875], [1.5, 2.4375, -3.1875], [1.5, 2.4375, -2.5625], [1.5, 2.6875, -2.5625]],
[[-1.5, 2.6875, 3.1875], [-1.5, 2.4375, 3.1875], [-1.5, 2.4375, 2.5625], [-1.5, 2.6875, 2.5625]]
…(3)
],
"doAnimation": true, …(4)
"disableLighting": false …(5)
},
{
"uv": [0.65625, 1.0, 0.0, 1.0],
"pos": [
[[1.1875, 2.5625, 10.25], [1.1875, 2.375, 10.25], [0.5, 2.375, 10.25], [0.5, 2.5625, 10.25]]
],
"doAnimation": false,
"disableLighting": false
}
],
0.
rollsignTexture で方向幕に使用するテクスチャを指定します。
ファイルは1つなので幕が複数種ある場合も1画像にまとめましょう。
1.
rollsignNames で方向幕のコマ名とコマ数を決めます。
名前はどんな付け方でも構いませんが、日本語は使わず、半角英数字のみを使用してください。ちなみに上の例では「種別_行き先」としています。
2.
uv でテクスチャのどの部分を割り当てるかを設定します。
テクスチャの上での位置は横をU、縦をVとする座標で表し、左上が( 0.0, 0.0 )、右下が( 1.0, 1.0 )になります。
Json内では[ Uの最小値, Uの最大値, Vの最小値, Vの最大値 ]と書きます。下図の例だと、[ 0.0, 0.3, 0.0, 1.0 ]となります。
3.
pos で車両における方向幕の位置を設定します。
方向幕の四隅の座標を使い、[ [右上のx,y,z座標], [右下], [左下], [左上] ]と表します。
下図の例だと下記のようになります。
"pos": [
[ [a1], [a2], [a3], [a4] ],
[ [b1], [b2], [b3], [b4] ]
],
(例では各点のx,y,zの数値は省略しています。)座標の単位はメートルになっています。
4.
doAnimation: 方向幕を回転させるかどうかを設定します。LED式などの場合にはfalseにしてください。
5.
disableLighting: 発光させないかどうかを設定します。ヘッドマークやサボに使いたい場合はtrueにしてください。
sound_XXX (サウンド)
走行音、ドア開閉音、警笛などの効果音を指定します。
RTMに収録されているサウンドを使う設定は以下のようになります。
電車(VVVF)
"soundScriptPath": "scripts/sound_223.js",
"sound_BrakeRelease": "train.rtm_223_release",
"sound_BrakeRelease2": "train.brakeR_w",
電車(吊り掛け)
"soundScriptPath": "scripts/sound_o220.js",
"sound_BrakeRelease": "train.o220_release",
"sound_BrakeRelease2": "train.brakeR_w",
気動車
"sound_Stop": "train.rtm_dc40r_stn",
"sound_S_A": "train.rtm_dc40r_go-a",
"sound_Acceleration": "train.rtm_dc40r_a",
"sound_Deceleration": "train.rtm_dc40r_i",
"sound_D_S": "train.rtm_dc40r_i-stop",
"sound_BrakeRelease": "train.brakeR_w",
"sound_BrakeRelease2": "train.brakeR_w",
+効果音
"sound_Horn": "train.rtm_wh_00l",
"sound_DoorOpen": "train.door",
"sound_DoorClose": "train.door",
+車内放送(↓の手順でAAA.oggとBBB.oggを追加した場合)
"sound_Announcement": [
["AAA", "sound_test:train.AAA"],
["BBB", "sound_test:train.BBB"]
],
サウンドの追加
独自のサウンドファイル(ogg形式のみ)を登録して指定することもできます。
テンプレートの例では「car-horn1.ogg」と「slidingdoor-open2.ogg」を「アドオンzip/assets/sound_test/sounds/train」に置き、以下のように指定しています。
sounds.json (サウンド登録)
{
"train.car-horn1": {
"category": "neutral",
"sounds": [
"train/car-horn1"
]
},
"train.slidingdoor-open2": {
"category": "neutral",
"sounds": [
"train/slidingdoor-open2"
]
}
}
車両json (サウンド指定)
"sound_Horn": "sound_test:train.car-horn1",
"sound_DoorOpen": "sound_test:train.slidingdoor-open2",
"sound_DoorClose": "sound_test:train.slidingdoor-open2",
slotPos (客席)
"slotPos": [
[0.8, 0, 5.4, 2], [0.8, 0, 4.2, 2], [0.8, 0, 3.0, 2], [0.8, 0, 1.8, 2],
[0.8, 0, 0.6, 2], [0.8, 0, -5.4, 2], [0.8, 0, -4.2, 2], [0.8, 0, -3.0, 2],
[0.8, 0, -1.8, 2], [0.8, 0, -0.6, 2], [-0.8, 0, 5.4, 2], [-0.8, 0, 4.2, 2],
[-0.8, 0, 3.0, 2], [-0.8, 0, 1.8, 2], [-0.8, 0, 0.6, 2], [-0.8, 0, -5.4, 2],
[-0.8, 0, -4.2, 2], [-0.8, 0, -3.0, 2], [-0.8, 0, -1.8, 2], [-0.8, 0, -0.6, 2]
],
}
客席の位置と、座席表示の有無を指定します。
一つ一つの記述は、[X座標, Y座標, Z座標, 座席タイプ]となっています。
座標はm単位で、座席タイプは0:無効・1:座席あり(クロスシートを表示)・2:座席あり(モデル表示なし)です。
モデルで座席を作り、客席の位置を合わせて「2:モデル表示なし」にしておくことで、自由なモデルの座席に座ることができます。
一般的な車両はY座標0のままでほぼ合いますが、-0以下にして下げることもできます。
ただし、座席の当たり判定が車体や台車の当たり判定と重なると無効化され、着席できないので注意してください。
「seatPos」という同じ機能のプロパティがありますが、古い方式で座標単位が面倒(1=1/16m、小数不可)なので忘れて構いません
playerPos (運転席位置)
"playerPos": [[0.85, 0.2, 8.95], [-0.85, 0.2, -8.95]],
運転する際のプレイヤー位置を指定します。前方・後方の2箇所あります(同座標にしても問題なし)。
bogiePos (台車位置)
"bogiePos": [[0.0, 0.0, 7.0], [0.0, 0.0, -7.0]],
前後の台車位置を指定します。
trainDistance (車体全長÷2)
"trainDistance": 10.0,
車体の中央から連結面までの距離を指定します。いわゆる20m級車両なら10.0になります。
interiorLights (室内灯) *オプション
"interiorLights": [
{"pos": [0.0, 2.5, 5.0]},
{"pos": [0.0, 2.5, -5.0]}
],
室内灯機能を使う場合の光源位置設定です。単位はm、例のように複数指定可能です。
車内の天井付近に2箇所ほど指定しておきましょう。
smoke (パーティクル) *オプション
"smoke": [
[-1.0, 3.0, 9.0, "explode", 1, 2]
[-1.0, 3.0, 9.0, "largesmoke", 0, 2]
],
指定位置からマイクラのパーティクルを発生させるオプションで、主に煙に使われます。
項目は [X座標, Y座標, Z座標, パーティクル名, 停車時の量, 走行時の量] となります。
パーティクル名はマイクラのパーティクルコマンドのものが指定できます。
rolling (車体傾斜) *オプション
"rolling": 0.4,
カーブで車体を傾ける設定です。(0.0~1.0)
設定値とカーブ半径と通過速度に応じて車体が傾きます。
door_XX (ドア) *オプション
*本家「モデルパック作成マニュアル(キット)」を参照ください
pantograph_front (パンタグラフ) *オプション
*本家「モデルパック作成マニュアル(キット)」を参照ください
走行性能 *オプション
"accelerateion" : 0.0008,
"maxSpeed": [0.40, 0.84, 0.97, 1.20, 1.39],
}
- accelerateion: 加速度設定です。加速度(km/h/s)÷1000÷1.443 を適当に四捨五入してください。*2
- maxSpeed: それぞれ加速ノッチ1~5段での上限速度です。速度(km/h)÷72を適当に四捨五入してください。
描画設定 *オプション
"smoothing": true,
"doCulling": true,
"accuracy": "LOW",
}
- smoothing(true/false)
モデルをスムージング表示します。スムージング角はmqoのオブジェクト設定が適用されます。 - doCulling(true/false)
モデルのポリゴンを片面表示します。 - accuracy(LOW/MEDIUM)
描画精度の設定です。LOWにするとメモリ使用量を削減できますが微小なマッピングずれが起こります。
~~※本稿の画像・テキストは許可を得て TTKマニュアル および モデルパック作成マニュアル より引用しています
アドオン製作ガイド 目次 |
---|
・概要 ・ファイル構成 ・モデリング・テクスチャ ・jsonコーディング < ・動作チェック ・規約・配布 ・知恵袋 |