【制作者向け】プラグインの競合解消の話【RPGツクール】
ツクーラーさんの役に立てばいいなの記事
予告通り、RPGツクールMVのプラグインの競合のお話。
開発中に発生した競合と解消についての情報共有。
たぶんMZでも、内容的には9割同じやね|˙꒳˙)ノ
プラグインの競合で困ってる人を何人か見かけたのと、
プラグインの競合についての話は、検索しても書いてる人が少なそうだったので書く事にした。
『ツクーラー向けで、競合に困ってる』そんな対象がめっちゃ狭い内容であります|'ω')ゝ
でも、こういう文章を書いて、偶然これを製作者が見て、
『本来完成しなかったゲームが、完成する未来に変わる』
みたいな展開あったら熱い╭(๑•̀ㅂ•́)و
知ってる範囲で解消する方法に関してざっくり書く。
専門用語あまり使わずにザックリね|˙꒳˙)
基本
基本から書いていく。わかる人は流し読み|˙꒳˙)っ
基本として、ツクールMV内の記述は、
命令群の名前 = fμnction(){
動かす内容
}
※投稿規制の問題でuをμに変えています。
こんな感じのを大量につなぎ合わせて出来ている。
プロジェクトにある、jsフォルダの中のファイル開くとわかるけど、大体そんな感じね|˙꒳˙)
プラグインの順番
Aっていう命令群が2個あった場合、後にある方が優先される。
例えば、Aが足し算をするってした場合、
A = fμnction(){
1+1;
}
A = fμnction(){
1+2;
}
後で書いた、1+2の方が優先される。
これが、プラグインの順番を変えれば動いたりする理由ね。
動かす内容の追加
プラグインなので、元々のツクールのデータを残さないといけない縛りがある。
なので、元のデータを一回、別の所に保存してからもう一度命令群を作る。
B = A; //ここでAをBにコピーする。
A = fμnction(){
B.apple(~); //←元のAだったものを張りつける
2+3;
}
こうすると、Aの内容に加えて、2+3を追加できる。
こうやって追加できる範囲の場合は、競合はあまり起きない。
ここまでが基本ね|˙꒳˙)ノ
競合の原因と対策
1.追加じゃなくて削除や変更しないといけない場合
例えば、戦闘時のコマンドリスト。
ツクールMV公式のがこちら
長いので画像ね|˙꒳˙)ノ
ステラレコードでは、いつでも防御システムなので、防御コマンドを抜いております|˙꒳˙)センデン
追加じゃなくて削除なので、プラグインを作る場合、
Window_ActorCommand.prototype.makeCommandListを
『this.addGuardCommand();』の部分を消して、新しく作る事になる。
こういう場合、ちゃんとしたプラグインでは、『/*Overwrite*/』上書きだよ~ってメモしてくれてたりするね。
そしてステラレコードでは、リミットゲージが溜まると、攻撃コマンドがリミットブレイクになる機能も実装した。
これも、追加じゃなくて変更なので、新しく作る事になる。
『防御コマンド削除プラグイン』と、
『リミットブレイクプラグイン』の
2つを作った場合は競合する。
どっちか片方しか発動できない。
なので、解決方としては、防御コマンド削除+リミットブレイク実装プラグインの混ざったのを作れば良いね|˙꒳˙)
実際どうなってるか気になる人は、ステラレコードに入ってる専用に作った『lily_sutereco.js』の149行目見てね❤
露骨な宣伝|˙꒳˙)✨
2.そもそも変更した部分の機能が使われてない
core系との競合に多いかもしれない。
「公式のは機能がヨワヨワなので、ツヨツヨの作って使うぜ」
ってcore系がやって、入れたいプラグインがデフォルトの方の機能に追加してたりするパターン。
YEPさんのとか、有名なプラグインとの競合だと、プラグインの製作者さんが対応してくれてたりする。
if(Imported.YEP_BattleEngineCore){
動かす内容
}
こんな感じの
「もし、YEP_BattleEngineCoreが入ってるなら~」
みたいな記述があるとそうね。
簡単なのなら、有名どころには対応してくれてる製作者さんは結構多い。
じゃぁ、簡単じゃなくて、システムの基礎部分から変わってるモノ。
具体的な例をあげると、例えば戦闘画面
←のプラグインで見た目を変えてしまってるのと
→のデフォルト。
そして、例えば「戦闘画面の名前の横にバイオリズムを表示します」みたいなプラグインがあるとする。
作り手は、デフォルトの方のHPとかがあるウィンドウの名前の横に月のマークを表示する気でいた。
しかし、見た目を変えてる方は、そもそもウィンドウがない('ω';)
当然、月マークは見えないし、場合によってはエラーが出るかもしれない。
この場合、表示部分を見た目を変えているプラグインに移植してあげる必要がある。
ちょっと面倒|_˙꒳˙)_
移植の場合、競合が起きるプラグイン入れてない人にとっては邪魔な部分だし、MITライセンスのプラグインだったとしても、他の製作者さんへの敬意があったりするし、皆が使えるプラグインで配布みたいになったりすると厳しい。
プラグイン製作者としては、専用のを依頼されたりしない限りは、対応するのは難しいと思う。
なので、自分で必要個所を移植する|_˙꒳˙)_
3.引数追加したパターン
このタイプのプラグインは、あまり見たことが無いけど、
命令群を作る時に引数と呼ばれるものを追加できる。
A = fμnction(){
}
()の部分に、数字とか文字とかキャラクターデータを入れる事ができる。
ここが、引数の部分。
ダメージ計算 = fμnction(主人公,敵){
ダメージ ⁼ 主人公の攻撃力-敵の防御力;
}
みたいな事が出来る。
なので、この引数を追加した場合は、追加したプラグインより下にある同じ命令群の引数に全部追加しないと上手く動作しない。
逆にいうと、全部に追加すれば競合せずに動作する。
引数追加に関しては、過去記事のこちらを参考
プラグイン作ったりする話|˙꒳˙)ノ
おわり
他にも色々原因あるかもだけど、制作中に出会った競合はこれくらい。
それでは、良い制作ライフを|˙꒳˙)ノ✨
ヽ('ω')最近お世話になってる人の作品情報('ω')ノ
温室育ちのお嬢様にエロゲの知識しかない俺がHな授業をする事になった件!
ハイパーうさぎ工房
Le dernier saint chevalier
B.H.C