新しい武器などを追加する
0.31環境では、アイテムデータなどがJSONファイルで管理されるようになり、 旧バージョンよりも手軽に編集できるようになったので、とりあえず簡単な説明などしてみる。
方針としては、このゲームには.45の拳銃弾があるのに、それを撃てる拳銃が存在しないので、 Vlok 17のバリエーションとして.45仕様の拳銃を追加してみよう。(米人しぐさ)
※注意※
この文章は、2023/07/28(ゲームバージョン0.31.20)時点でのものです。
将来的にずっと同じ方法が使える保証はありません。
※重要な注意※
ゲームやセーブデータに不具合が発生したりしても執筆者は一切関知しません。
自分でバックアップして自分でなんとかしてください。
0、準備
・セーブデータとゲームデータのバックアップ
JSONファイルは、ゲームフォルダの ZS_vanilla 下に入っているので、 とりあえず、それをまるごとコピーしておくといいだろう。
・お好みのテキストエディタ。あるいはJSONエディタ。
メモ帳とかでもいいけど、JSON対応でシンタックスハイライトとかしてくれる方がいいと思う。
ちなみに、以下のスクリーンショットはVSCodeのもの。
とりあえずVSCodeでいいんじゃないか? とも思うが、 あれはあれでちょっとクセがあるので、勧めちゃっていいものか微妙。
・JSON形式についての基本的な知識
数値と文字列と真偽値。配列 [ ] とオブジェクト { } 。
あたりはふまえておくと、ゲーム起動したらエラー落ち。とかが減るかも知れない。
JSONは構造体をそのまま保存できて、多くのエンジンや言語で読み書きライブラリがあるから、 このゲームに限らず、データをテキスト管理する場合にJSON使ってることは結構多い。
ゲームデータとかをいじりたいなら覚えておいて損はない気がする。
1、武器を増やす
エディタで、
ゲームフォルダ/ZS_vanilla/gamedata/weapon.json
を開き。
Vlok 17の武器データをコピー。
この時点で、オブジェクトのキーがかぶってるので、キーをglock17_45とでも変更しよう。
このオブジェクトキーはアイテムIDで、他と重なってはいけない。
ここで一旦保存してゲームを開始。デバッグモードで武器を確認してみよう。
Vlokが2個並んでいればとりあえずここまでOKである。
JSONデータはゲーム開始時に読み込まれるので、今後、テストのたびに終了・再起動すること。
2、武器データを改造する。
目標通り、追加した武器の弾薬を.45にする。
.45のSMGからコピーするでもいいし、ammo.jsonやcaliber.jsonを見てもいいだろう。
色々なパラメータが変更できるが、まあ、とりあえず装弾数だけ13に減らしてみよう。
武器名は何でもいいけど、とりあえずVlok21とでもつけておく。
この状態でJSONを保存し、ゲームを起動したら、デバッグモードで武器を確認してみよう。
ちゃんと弾薬や装弾数の変更が反映されている。
3、武器改造対応
元のVlokでもマズルブレーキやサイレンサーが装着できるので、改造品にも装着できるようにしよう。
ゲーム内で、.45対応のマズルはサイレンサーだけしかないので、サイレンサーだけ対応とする。
w_mod.jsonを開く、
開いた時点でJSONの構文エラーになってたりするので、気になるようならとりあえず直してしまってもよい。
.45サイレンサーの対応武器に、glock17_45を追加する。
すると、.45サイレンサーの対応武器にVlok 21が追加され、
ちゃんと装着できるようになる。
これで、新武器が追加できたことになる。
自分が使うだけならこれでもいいが、ゲームに登場させる方法についても触れていこう。
4、店売りに追加
trader.jsonを開く。
赤軍の店に置くのが妥当なんだろうけど、テストがめんどくさいのでバーマンに追加する。
ここで、itemはアイテムID、quantityは個数、levelは購入可能レベルの設定。
他の商品を見て、適宜設定すればよいかと思う。
ゲームを開始し、朝7時まで時間をすすめるなりニューゲームするなりして商品を確認しよう。
ここまでできれば「新武器追加だぜ」とか言っちゃっていいと思う。
5、そのほか
その他あれこれ
箱とか
chest.jsonを調整すれば箱に入れることもできるはずである。
テストがめんどくさいから試してないが。
NPCとか
npc.jsonを調整して赤軍に持たせたいところだが、赤軍の武器リストはこのファイル内には存在せず、 gml_GlobalScript_npc_get_weapon.gmlというコードに書かれている。
data.winをいじるのは今回のテーマから外れるのでそちらの対応はしない。
必要な武器リストを指定しちゃえば、npc.jsonだけで対応できるので、
"arma" : "{crimson army}",とか書いてるところを、
["ump_1", "mp5", "mp153", "m4a1", "scar_h_1", "glock_17_1", "r700_1", "m1a", "spas_12_1", "dvl", "vector", "vector_9x19", "pp19_bizon_9x19"],
みたいな配列データに置き換えてやればnpc.jsonだけで対応可能になるはず。
そうした上で、そこに "Glock17_45" を追加してやれば、追加武器を赤軍に持たせることができるはず。
テストがめんどくさいから試してないが。
ドット絵とか
ドット絵を描いてSprite追加してやれば、完全オリジナルの武器を作ることもたぶん可能なはず。
テストがめんどくさいから試してないが。
他の種類のアイテムとか
同じようにjsonファイルを色々いじれば、武器だけじゃなくて色々と追加できるはず。
テストがめんどくさいから試してないが。
このページの総アクセス数: 6173
今日: 13
昨日: 23
コメント
最新を表示する
>> 返信元
ありがとうございます!
どうやらjsonファイルのidが違ってたようです。
ほかはあってるようなので大丈夫そうです。
>> 返信元
data.win内の
・s_mod_(任意の武器id)_base
・s_mod_(任意の武器id)_base_game
の設定は(他の武器と同じように)しました?
自分がやったときはここの設定ミスってて多分同じエラーが出た気が...
ちなみにデータはちゃんとpng形式?pixel数は適切ですか?
ゲームインベントリ1マスが8x8pixelで、武器画像も多分全部縦横その倍数だから違ったら一応避けたほうがいいかも...
>> 返信元
data.winのファイル置き換えてませんでした。
本当に申し訳ないです。
しかし今度はdata.winにインポートした武器グラフィックの画像が認識されないと出てきました。
しばらく自分で検討してみます。
>> 返信元
weapon.jsonの武器の追加は、ベースにした武器の部分をコピーして、使用するspriteの部分を.winにインポートした武器グラフィックのものにしてw_mod.jsonも同じようにしました。
trader.jsonはテストでメデックにsv98(別グラフィック)だけ追加して起動した結果エラーがでました。
プログラミング等の知識はなくwikiだけ参考にしたのでエラーにあるスクリプトをみてもよくわかりませんでした。
結構時間がかかったので動くようにしたいです。
>> 返信元
武器の追加と色違い武器の追加、バンディット等敵モブ全般(人型)と自キャラのグラフィックを変更をして起動してゲームを始めたら以下のエラーがでました。
いじったのはdata.win(キャラはグラフィックのすり替え的な感じで、キャラ用のspriteをインポートして変えたわけではない。それからspriteをインポートして新しい武器グラフィックの追加。)、武器グラフィックの追加で、weapon、w_mod、traderのjsonファイルも書き加えました。
グラフィックをいじっていたら以下のエラーがでました。
どなたか解決方法を教えていただきたいです。
ERROR in action number 1
of Draw Event
for object obj_noc_weapon:
Trying to draw non-existing sprite.
at gml_Script_item_weapon_draw_modded
gml_Script_item_weapon_draw modded (ine-1)
gml_Object_obj_noc_weapon_Draw_0
完全オリジナル武器は
PSとかで適当にアタッチメントつけてない状態のドット絵作ってpngファイルで書き出す
→scriptsって名前のファイル作って放り込む
→UTMでData.win開いてScripts
→Resource Repackers→ImportGraphics.csxで読み込む
→適当に数値いじる
→weapon.jsonでアタッチメントの位置いじる(めんどい)
→w_mod.jsonでアタッチメント対応させる(これもめんどい)
で一応作れる 自キャラ画像差し替えが参考になるね
20式小銃風の銃を振り回しながらやるの中々楽しい
0.31でアイテムの追加修正とかが簡単になった感じなので、とりあえず簡単な説明とか。
みんな武器追加とかしたいよな?
NG表示方式
NGID一覧