RPGツクールで作る悪魔合体法則と剰余計算の利用
お世話になっております。
新盆法要に時間を取られてバタバタしておりました。
…新盆?何それ知らん…初めて聞いた風習でした…(実家は真言宗)
先々週の締めでポロッと口走ったネタ、そういえば数的処理の珍しい使い方するなァと思ったので記事にしてみました。
お題は!悪魔合体法則!おいでよ!メガテニストの森!
…とは言ってもそこまで本格的なものではなく、以前悪魔合体システムの草案で触れた内容に精霊ランクアップ合体を足すとどうなるか?程度となります。
1.剰余計算…?

端的に言えば、割り算の余りが何になるか?を計算する処理のことですね。
X %= Y;
といった計算式を、プログラミングをかじった方なら見たことがあるのではないでしょうか。
私はCとJavaを扱っていたので、時々使うかな?くらいには馴染みがあります。けども、世間一般的にはあんまり使わないんじゃないかな…
えめぼり様が分かりやすい動画を作られていたのでご紹介。
こちらの動画を見ていただければ、実際のゲームでどう使うかが何となくでも想像つくのではないでしょうか。
この剰余計算、RPGツクールの仕様からすると、メガテン的なゲームシステムにはなかなか便利なのです。
2.ツクールのデフォルト仕様では種族設定が扱いづらい

ツクールの基本パラメータはHP・MP・攻撃力・防御力・魔法攻撃力・魔法防御力・素早さ・運の8項目で、他に使えそうな設定値と言っても名前・職業・二つ名くらいのものです。
しかも、二つ名はともかく、職業についてはステータスやスキルに直結してしまうため、イマイチメガテン的なゲームを扱うには微妙な立ち位置だったりします。
少なくとも、原作で設定されている大種族(神族や飛天系、獣族や鬼族などの大区分)・小種族(妖精・地霊・破壊神・地母神などの小区分)と設定するには困ってしまいます。
Frogboy 様のRaceCore.jsを導入して、そもそも種族という概念を増設するという発想も有りなんですけどね!
MV用ですが、キッチリMZでも稼働しますしね!
…ともあれ、プラグインを使わずともメガテン的な種族を規定する方法は無きにしもあらず、なのです。それは…

アクターID(敵キャラID)を種族として扱う、というものです。
例えば↑の画像のもので言えば、ID:10とID:20には種族:怨霊を設定してあります。
同じようにID:3とID:13には種族:水精を設定してあります。
先ほど、剰余計算とは~というお話をしました。
アレは、ここで生きてくるのです。
つまり、
ID:10とID:20は10で割り算すると余りは「0」です。
同じく、ID:3とID:13を10で割り算すると余りは「3」です。
このように、剰余計算の値によって特定の数値を特定の種族である、と計算処理できるわけです。
少々脱線します。
わざわざ剰余計算など使わなくても…という考え方もあります。
同じようにアクターIDを使うにしても、ID:10~ID:19を妖精族に、ID:20~ID:29を妖魔族に…
といったように、数字の十の位、あるいは百の位を種族として割り振る…そんなやり方もあろうかと思います。
正直に言えば、作者次第、好みの問題ではあります。
この場合考える必要があるのは、各種族を何段階まで用意するのか?が問題になってくるでしょうか。
5~7体程度だと空欄がやたら増えてしまいますし、10体以上用意しようとするとどの桁で種族判定するかが難しくなってしまうことが気になる、くらいでしょうか。
逆に、この記事で取り上げている剰余計算でIDを当てはめる設計の場合、各種族の段階は順次増設していけますが、全体で何種族いるのか、つまり、剰余計算する時に「何の数値で割るのか?」を最初から構想しておく必要があるわけです。
ついでに言えば、私は悪魔合体法則というものをあまり複雑にしたくないので、それぞれのIDを足し算した数値で合体結果を算出できると楽でいいな…という発想もあったりします。
順番の都合上、剰余計算の数値の大きな種族がやたら高ランク悪魔を作りやすくなる…みたいな弊害も一部起こってしまいますがね!
…そこはまあ…計算値が後ろの方の種族をDARK悪魔にするなどして例外処理するという手法もあるので…後からでも考えられますから…
3.実際のイベント作例

試しに、剰余計算を使った悪魔合体法則の例外処理を↑の画像のように作ってみました。
変数:23と24はそれぞれ合体させるために選択されたアクターを格納したもので、合体後の加入予定アクターのIDを変数:28に格納しています。
また、これらの処理を行うために、変数:37と38を合体素材となるアクターの種族判定に使っています。つまり、剰余計算の結果を新たに確保しているわけですね。
変数:37と38が同値…同じ種族である場合は原作で言うところの精霊作成合体となり、特定のアクターを例外的に作成する…
また、ID:10やID:20などの10で割った時の剰余計算が「0」になる種族を原作で言う精霊として扱い(画像でお見せした私の作例では怨霊としてしまいましたが…)、もう一体の合体素材のIDに+10してワンランク上になるように例外処理をしています。
では実際にゲーム内で動かしてみましょう。

ID:2のバケビとID:20のオシズを合体しようとすると本来ID:22を算出してNG処理(現状でそこまでアクターを作ってない)になるところが…

ID:20のオシズが原作の精霊合体素材扱いなので、ID:2に対して+10、結果、ID:12のカゼンボウを合体結果として算出…
できてそうですね!
(今のままだと精霊(怨霊)同士の合体処理などがスルーされてしまうのでバグが多そうですけれども!)
…といったように、剰余計算という一見してよー分からんヤツですが、ツクールでのゲーム制作ではなかなか便利なヤツなのです!
4.おわりに
時間が押してる上にまだまだ開発途中の素材を使ったがために、何ともアラの多い記事になってしまいましたが…
とりあえずは、こういった設計と処理をすれば合体法則も細かく作っていけますぜ!というのはご理解いただけたのではないでしょうか。
…大丈夫かな…多分、実際に作ってもらえば大丈夫かな…
ところで、ここ数日久しぶりにセガサターンなど引っ張り出して初代デビルサマナーなど遊んでいました。
シヴァなどの特殊合体、DARK合体、精霊合体、御霊合体、新月・満月の合体事故、悪魔ごとの魔法継承パターン…
ハチャメチャに考える要素多いなぁ!?
よくできているものです。
…ナハトコボルドのスクンダの継承先がヨモツシコメくらいしかねぇ…どうなってんの…あっコレ、ンダ系は攻撃魔法扱いなのか…
懐かしくもあり、改めてゲーム制作的なノウハウも得られ、学びの多い作品でしたね…
それではまた来週お目にかかりたいと思います。
