めざせ!プログラミング勇者! part.3

こんにちは!ちぇるしー🍩です!
part.1とpart.2に続いて、part.3も無事に更新することができました!

そして今回のテーマはズバリ!『戦闘システムをつくる』です!
前回の記事よりゲームシステムに踏み込んだ解説と作業報告になります!

戦闘システムをつくるというと大変な作業を想像されるかもしれませんが、例の如くRPGツクールMVには初めから戦闘システムは用意されています!
改めて一から構築する必要は全くありません!

ただ敵のステータスなんかは自分で考える必要があり…これがまた難しい…_(:3 」∠)_
元々用意されていた敵データの情報を参考に頑張っているところです💪

目次
1.戦闘画面の改変
2.戦闘システムについて
 2-1.戦闘システムの実装方法

前回と同じ要領でデフォルトのものと比較して解説していきます☺
まずはこちらの動画で戦闘の流れをご確認ください✨

では変更点を見ていきましょう!

1.戦闘画面の改変

まずデフォルトの戦闘画面がこちらですね!ううーん、なんというか、文字中心でまさに地味…って感じですね…
敵のグラフィックがあるのに対して、主人公側のグラフィックがないのは寂しい気がします。

というわけで改変後がこちら。見た目がずいぶん華やかになりました!
で、自分でどこまで手を加えたの?と思われたでしょう…実はプラグインを導入しただけで私がした作業は顔のグラフィックの用意だけなのです…!

お借りしたのはMoghunter様のMOG_BattleHudMOG_BattleCommandの二つ。英文のサイトですが、使い方は画像を使って説明して下さってるのでほとんど迷うことはありません!これらのプラグインを使用したデモゲームもあるので参考にしました✨

MOG_BattleHudにはいくつかデザインが用意されており、自分の好みに画面をいじることができます。私はClassicの雰囲気が好きなのでそちらを使用しました!自分で画像を用意すればオリジナルの画面も簡単に作れると思いますが、こだわり始めると一生触っちゃう気がするので…とりあえず今はこのままで(笑)

元のデザインにはTP(タクティカルポイント)の表示もありましたが、使用しないので非表示にしています。

そして、MOG_BattleCommandを導入するとバトルコマンドの表示を変えることができます。戦う、逃げるとか、攻撃、防御みたいなコマンドのところです。サークル状のものを選びましたが、デフォルトに近いようなものもあるのでご使用される場合はお好みで!

2.戦闘システムについて

画面の改変はただの自分のこだわりですので、このゲームを作るうえで重要なのはむしろこの戦闘システムの設定ですね!

part.1で説明した通り、ただゲームを作るのではなくプログラミングを学習できるゲームを作るという目的があります。
ただ攻撃や魔法を使用するだけでは普通のRPGになってしまいます…かといってクイズ方式にするのもなんだか!新鮮さがない上に面白くもない!

ですので、今回のゲームでは集めた情報を使って魔法の代わりにプログラミングコードの断片を選択し、正しい構文を作って攻撃するという形をとっています✨
どちらかというとクイズ形式に近いかもしれない…?

因みにバトルはYanfly様のYEP_X_BattleSysSTBというプラグインを使用して、各キャラの速度に基づいて行動順が決定するスタンダードバトルを導入しています。
ターンの概念があるので、全員が行動を終えるまで次の行動がとれません。
要するに素早さの順番で一人ずつ攻撃していくシステムです。

このプラグインはYEP_BattleEngineCoreというコアプラグインも追加しておかなければならないので注意です!

YEP_BattleEngineCoreを使うと戦闘の前に出てくるパーティコマンド(「戦う」「逃げる」の選択肢)を非表示にしていきなりアクターコマンド(「攻撃」「防御」「魔法」)を選ぶようにできます。
私はパーティコマンドがあるとテンポが悪くなると思ったのでアクターコマンドからの開始にしています。

このゲームでの主人公側の攻撃の順番は
ミサキ(主人公)→ミスト→シェーン→ツバサ
です!画面の並び通りに行動を選択していきます。

先に言った通り、戦闘では魔法の代わりにプログラミングのコードの断片を正しく組み合わせて攻撃するシステムをとっています。
順番を固定したことも戦闘システムに関係しています!

まず、主人公のミサキがどのようなコードを作っていくかを選択します。
今はまだfor文しか選べるものがないですね!隣のコードは最後にもう一度ミサキにターンが回ってきたときに使うものです!

ミストのターンではfor文を作るために必要な式のうちの一つ、初期化式を選択していきます。正しい数値がどれなのかはきちんと探索パートにヒントが隠されているので、よーくチェックしてくださいね!

ちなみにミサキのターンでfor文を選択していないと、for文に関係するコードはこのような灰色の表示になり選択ができません。
これはこのあとのシェーン、ツバサも同じで順番に必要なコードを選んでいかないと使用することができない設定になっています!

そして最後に先ほどミサキの選択欄に表示されていたfor文の隣のコードを選ぶとバグを退治するための攻撃魔法として実行されます。
この画像はコードを間違えた時の画面です…

間違えた場合はこのような文章が表示され、もう一度コードを選択することになります!ミサキのターンは終わったところからになりますが、for文というコマンドを再度選択する必要はないのでどんどん挑戦していきましょう!

そして正しく実行できた時の画面がこちら。
上のテキストが変化しているのがわかりますか?きちんと答えが表示されていますね!
※正解がわかってしまうので、このブログの画像では数値を消しています。

2-1.戦闘システムの実装方法
では、このシステムの仕組みについて解説します!

実はこのシステム、隠れた変数で管理しています。
for文のコードで攻撃魔法を実行するまでに、正しく選ばなければいけないコマンドは全部で3つ。
なので、正しくコードを選択した時だけ変数に1をプラスしています。

その式をコモンイベントとして管理してスキルの使用効果で発動するようにしています!

コモンイベントは正しいコードのスキルにだけつけています。

そして、この変数を元にミサキが最後に選択するスキルに変化をつけました✨メモ欄に書いてあるのは先ほどの変数が3の時に30番のスキルに変化する…という意味のものです!
スキルを変化させるために鳥小屋.txtさんのスキル変化条件設定さん for MVをお借りしました!

30番のスキルってなんやねん!って感じだと思うのでお見せすると

こちらですね!ほとんど同じ内容ですが使用効果に戦闘不能100%が追加されているのと、メッセージの表示が変わっています!
実は正解の時と失敗の時で違うスキルを実行していることになります☺

コード正否判定というコモンイベントの中身がこちら!
正しく実行した時は変数の中身を0にするだけですね!そして間違えた時は文章が表示されるようになっているのに加えて、変数の中身が0に!さらに、初期化式の設定、条件式の設定というスイッチをオフにしています。

急に出てきましたこちらの設定のスイッチですが、前提条件を満たしていない場合にスキルを使用不可にするために使ったものです。
RTK_ActionLimitというプラグインを導入するとスイッチがオンの時だけスキルを使用できるようにするという設定ができるようになるのです!

なのでこうして一旦オンになったスイッチをオフにすることで、もう一度最初から順番に選ばなければいけない状況を作ることができます。

初期化式、条件式のコードを選んだ時に使用効果にそれぞれのスイッチをオンにするコモンイベントをいれているので、うっかり通常攻撃をしてしまったりするとコードの入力が続けられなくなります!注意してくださいね!

作業中は試行錯誤してるので、難しい!と感じていますが、こうやって改めて振り返ってみると…RPGツクールMVの手軽さには驚かされます💦
ちょっとした工夫で望んだとおりのシステムに変えていくことができるのは楽しいですね✨

では、文章が多くなりましたが今回はこのあたりで!
一応、次回で一旦区切りをつけようと思っていますので楽しみに待っていてください😊

ちぇるしー🍩