風薙鳥 ゲーム制作日誌

新戦闘システムの準備段階

RPGツクールVX Aceで、モンスター育成RPGを制作中です。

新戦闘システムを作り始めますが、その前提となる動作がいくつか必要なので、それらを先に実装しました。
新戦闘システムはシンボルエンカウントを採用し、エンカウント時に画面が切り替わらず、そのままの配置で戦闘に移ります。
最近クロノ・トリガーを久々に少しプレイしたので、その影響かもしれませんw

まず、モンスターのシンボルと隣接したら戦闘開始するようにしました(今は開始処理だけ)
プレイヤーだけでなく、引き連れている仲間モンスター(いわゆる隊列)が隣接した場合も戦闘に入ります。
仲間モンスターを引き連れるようにしたのは、仲間モンスター用のイベントを各マップに配置する手間を省くためです。
隊列の仲間も「Game_Characterクラス」を継承しているので、手を加えれば、個別に動かすことが可能なはずです。

モンスターは2匹1組で、2組連れ歩けるようにしたいのですが、主人公を入れて5キャラになると、隊列の上限をオーバーします。
これは「Game_Partyクラス」の「max_battle_members」を1行いじるだけで上限を変更できました。
ここをいじると、本来なら戦闘にも影響があると思われますが、戦闘システムは自作するので問題ないです(多分)。

イベントコマンドで書いていたモンスターが一緒に動く処理を、スクリプトで書き直しました。
その方がインタプリタを通さない分処理が軽そうですし、複雑な処理だとイベントコマンドは見にくいです。
ツクール2000でアクションを作った時に痛感したので、読みやすいスクリプトを使っていく方がいいですね。
昔は逆に思っていた気がするんですけどねw

後衛のモンスターは、前衛のモンスターが動くと同時に前衛がいた位置に移動する仕様になっています。
しかし、完全に同じフレームに移動しようとすると、前衛のモンスターがまだそこにいる判定で動けないので、1フレーム遅らせて移動させています。
その1フレームにプレイヤーが間に割り込めるケースがあったので、プレイヤーの移動可能判定を改造し、モンスターの移動前座標・移動後座標の両方と判定するようにしました。
これらの座標は、標準で@real_x、@xと別々に記憶されているので、判定は楽でした。

だいぶ基盤ができてきたので、戦闘システム自体の実装にも入っていきます。