見出し画像

【SoGツール公開】MODファイル作成ツール自作しました

もう5月です。最近暑くなってきましたね。
新型コロナもまだまだ猛威を振るっておりますし、体調には十分気をつけてください。

本題のMODファイル作成ツールについては、DLリンクを記事の最後に貼り付けています。
対応しているのはプレイヤー基礎パラメータ・移動パラメータのみ。
武器パラメータ、Wave設定については後日実装予定になります。


MOD機能について

さて、現在ソードオブガルガンチュアではMOD機能のα版が公開されております。

基本は一人用のモードで、MODによってステータスを改造したり、他プレイヤーが作成したステージを遊ぶことができます。
持ち込める武器はDojoモード、イベントで解放したもののみです。

α版に対応しているのはPCVRのみなのでOculus QuestではMOD機能を試すことはできませんが、5月中にβ版として対応するようです。
よむネコさんは仕事が速い!

MODファイルはmod.ioというサイトで管理されています。


MOD機能の使い方については上記サイトの「Guides」にまとめられているので、そちらをご参照ください。
α版ではEmailアドレスの登録が必要です。
また、MODを作成してアップロードするにはmod.ioへの登録が必要になります。

画像1



MODの作成はだいぶ面倒

詳しい説明はmod.ioのGuidesを参照していただくとして、ざっくりMOD作成について概要を。

MODで設定できるのは2種類。

・Parameter:プレイヤー、武器ステータスを変更します。
 対応ファイルは3種類。
 プレイヤー基礎パラメータを設定する「playerdefault.json」
 プレイヤー移動パラメータを設定する「player_movement.json」
 武器データを変更する「weaponP○○○XXXX.json」
 (○○○:武器の片手両手の種類、XXXX:武器ID)

・Wave:ステージと敵の出現パターンを設定します。
 対応ファイルは3種類。
 ステージリストを管理する「quest.json」
 ステージそのものを設定する「questXXXXX.json」
 (XXXXX:ステージID。作成者が任意で決める)
 Wave(敵出現パターン)を設定する「Wave_Mod○○.json」
 (Waveのみファイル名は自由なようです)

ステータスを上げて無双したり、逆に下げてプレイの練習をしてみたり。
特定シチュエーションを再現して苦手な敵との戦闘訓練をしたりなど、利用方法は色々あります。

しかしこのMOD、該当するパラメータファイルを作成する必要があるのですが、編集が大変です。
なにせJSONファイルをテキストでベタ打ちしないといけませんからね!

例えばプレイヤーの基礎パラメータを設定するplayerdefault.jsonの中身はこちら。

{
 "Health": 500,
 "AttackDamage": 0.0,
 "DrainHealthValuePerSeconds": 100,
 "Energy": {
   "MaxValue": 100,
   "DelaySecondsForIncrementValue": 1,
   "IncrementValuePerSecond": 30
 },
 "SpecialGage": {
   "MaxValue": 100,
   "DecreaseSpeed": 10,
   "IncreaseValues": {
     "TakeDamage": 2,
     "DodgeByVHS": 20
   }
 },
 "ResuscitateDelayTime": 0.5,
 "NotDominantHandDamageRate": 0.4,
 "NotDominantHandDamageRate_Throw": 0.5,
 "KnockBackLevels": [
   {
     "Level": 1,
     "Distance": 150.0,
     "Time": 0.1,
     "WholeTime": 0.5,
     "CameraBackDistance": 0.0,
     "CameraUpDistance": 0.0
   },
   {
     "Level": 2,
     "Distance": 300.0,
     "Time": 0.2,
     "WholeTime": 1.00,
     "CameraBackDistance": 0.0,
     "CameraUpDistance": 0.0
   },
   {
     "Level": 3,
     "Distance": 400.0,
     "Time": 0.3,
     "WholeTime": 1.25,
     "CameraBackDistance": 100.0,
     "CameraUpDistance": 15.0
   },
   {
     "Level": 4,
     "Distance": 800.0,
     "Time": 0.3,
     "WholeTime": 1.5,
     "CameraBackDistance": 100.0,
     "CameraUpDistance": 15.0
   },
   {
     "Level": 5,
     "Distance": 1000.0,
     "Time": 0.3,
     "WholeTime": 1.75,
     "CameraBackDistance": 100.0,
     "CameraUpDistance": 15.0
   }
 ],
 "GuardCrash": {
   "Time": 2.2,
   "CameraBackDistance": 100.0,
   "CameraUpDistance": 15.0,
 },
 "VHSCoolDownTime": 1.5,
}

凄く分かりづらい!!!

とはいえ、どの値を変えれば何が変わるのか、というのは慣れれば解決します。
該当する値を変更して保存するだけなので、プレイヤーや武器のステータスを弄るのはそれほど難しくありません。

ではWave設定ファイルはどうでしょう。
以下に公式が公開しているWave_Mod001.jsonの設定例を記します。

{
"SpawnWaves": [
{
"DelayTime" : 2.0,
"Spawn" : [
{
"EnemyId": "enemy_small_00",
"Point": "ESP2-1",
"Count" : 1,
"Limit" : 4
},

{
"EnemyId": "enemy_small_00",
"Point": "ESP6-3",
"Count" : 1,
"Limit" : 4
}
],
"Weapon": [
{
"SpawnPointActor": "WSP5-1",
"WeaponClass": "/Game/Item/Weapon/Blueprint/MeshConstraint/BP_p_wp_Mid1100_MC",
"Weight": 1.0
},
{
"SpawnPointActor": "WSP5-3",
"WeaponClass": "/Game/Item/Weapon/Blueprint/MeshConstraint/BP_p_wp_Shield1100_MC",
"Weight": 1.0
},
{
"SpawnPointActor": "WSP5-2",
"WeaponClass": "/Game/Item/Weapon/Blueprint/MeshConstraint/BP_p_wp_Mid1100_MC",
"Weight": 1.0
},
{
"SpawnPointActor": "WSP5-4",
"WeaponClass": "/Game/Item/Weapon/Blueprint/MeshConstraint/BP_p_wp_Shield1200_MC",
"Weight": 1.0
}
],
"WeaponSpawnIntervalTime": 0.0,
"StartSpawnWeaponCount": 4
},
{
"DelayTime" : 2.0,
"Spawn" : [
{
"EnemyId": "enemy_small_00",
"Point": "ESP5-1",
"Count" : 1,
"Limit" : 4
},
{
"EnemyId": "enemy_small_00",
"Point": "ESP8-1",
"Count" : 1,
"Limit" : 4
},
{
"EnemyId": "enemy_small_00",
"Point": "ESP8-2",
"Count" : 1,
"Limit" : 4
},
{
"EnemyId": "enemy_small_00",
"Point": "ESP1-1",
"Count" : 1,
"Limit" : 4
},
{
"EnemyId": "enemy_small_00",
"Point": "ESP3-1",
"Count" : 1,
"Limit" : 4
},
]
}
],
"ShowHUD": true,"AutoCleanUpEnemies": true, "WillShowAreaResult": true, "IsLoop": false,

"RequiredRank": 1,
"Achievement": {
"TeamRank": [
{
"Rank": 5,
"Mana": 200,
"Time": 180
},
{
"Rank": 4,
"Mana": 180,
"Time": 240
},
{
"Rank": 3,
"Mana": 150,
"Time": 300
},
{
"Rank": 2,
"Mana": 100,
"Time": 360
},
{
"Rank": 1,
"Mana": 0,
"Time": 0
}
],
"SoloRank": [
{
"Rank": 5,
"Time": 180
},
{
"Rank": 4,
"Time": 180
},
{
"Rank": 3,
"Time": 180
},
{
"Rank": 2,
"Time": 180
},
{
"Rank": 1,
"Time": 180
}
]
}
}

やっぱり分かりづらい!!

やっていることは敵の種類と数、出現位置と出現タイミングを記述しているだけなのですが、この出現位置が曲者です。

公式ガイドの画像を引用してみますと、ESPが敵の出現位置、WSPが武器出現位置です。

画像2

コードとして書くのはそれほど難しくはないのですが、マップのESP位置を覚えないと「この位置に出現させたい場合、どのESPを指定すれば良いんだっけ?」と混乱しかねません。

これをテキストベタ打ちで編集するのは直感的ではありませんし、Wave数が増えるほど非効率的です。位置指定ミスも起きやすいでしょう。

あくまでα版なので仕方ありませんが、MOD作成はそれほど難しくはありませんが結構面倒です。


というわけでMOD作成ツールを自作してみた

はい、面倒に感じましたのでMODファイル作成ツールを作成してみました。

とはいえ、プログラミングの勉強を兼ねてなので作りはお粗末ですし、現状はプレイヤー基礎パラメータ・移動パラメータのみの対応となります。

画面はこんな感じ。

画像3

画像4

ソードオブガルガンチュアのMODは記述していないパラメータはデフォルト値が適用されるため、必要な場所のみチェックボックスをONにして編集する方式にしました。

使用方法の流れとしては

①変更したいパラメータにチェックを入れる
②設定値を入力する
③画面上部の「パラメータファイル出力」で保存先を決めて保存

となります。

なお、既存ファイルの読み込み機能はありません。あしからず。


ツールの今後について

まずは武器データ、それからWave設定ができるように最低限の機能を追加していきたいと思います。
特にWaveは出現位置をマウスでポチポチ選択できた方が楽ですからね。

それから余裕があれば既存のMODファイルの読み込み機能や、入力値のチェック機能、動作テスト時の値調整を楽にする機能を実装したいところです。

……いつ完成するんでしょう(´・ω・)?

ソードオブガルガンチュア攻略情報の収集と解説動画の投稿もしたいので、一息に終わらせるか並列して進めるか悩みどころです。

というわけで今回の記事はここまでです。
MOD作成頑張ってください。

体調には本当にお気を付けて。


MODファイル作成ツールのダウンロードリンク

不具合などありましたら、コメント欄かTwitterで私宛にツイートをください。ツールが原因であれば対応いたします。(設定値がわかる画面SSを写してくださればより正確に対応できます)

ただし、一応言及しておきますが、あくまで有志による非公式ツールなので過度な期待はしないようお願いします。


サポートしていただけるとその分の価値を提供できてるんだなって励みになります。