梔子 2023/04/19 14:32

【ゲーム制作日記#11】進捗と苦労した部分の話。次の作業予定【RPGツクールMZ】

どうも、こんにちは。
毎日進んではいますが、進捗はそんなに予定通りは行ってません。
新しいもの実装するたびに色んなバグが出てきて想像以上に時間がかかってます。
前回から4日くらいでこんな感じのものを実装できたよっていう報告です。

戦闘システムの進捗

バフデバフの実装と敵のバリア、バリアゲージ実装ができた。

まだ仮だが、動画の通りウィッチレイスは奇数ターンにバフで自分の攻撃力をアップ、ラミアはバリア貼りと攻撃をランダムで、アイススライムはこちらの攻撃力を下げるデバフを打ってくる。

苦労した部分1

まずダメージ計算を全てコモンイベントでやっているので、ターゲットした相手がどのデバフ状況であるかを調べる事に苦戦。
最初はプラグインを作ってやろうとしていたが、コモンイベントで事足りることに気づいてコモンイベントで管理することにした。


最終的にはそんな難しくなく、そのまんまの実装になった。
やな様のBeforeCommonプラグインを利用し、ターゲットのIDを変数83に入れてターゲット対象が敵か味方か判定し、それに応じてデバフの付与をisStateAffectedで調べてダメージ倍率を計算している。
素の状態のままだとRPGツクールの変数に小数を入れると整数になってしまうので、トリアコンタン様の変数小数演算プラグインを使っている。
デバフ時の倍率はこれから作るレリック等で変更可能にしようとしているため、変数92~95で倍率を管理している。
例えば炎症デバフの場合は今は150が素で入っているので、100で割って、1.5倍するような計算にしているが、レリックの効果で1.75倍にしたい場合は敵炎症倍率変数の92番に175と代入すればよい。

苦労した部分2

バリアを張った敵に対して、バリアグラフィックの表示と敵1体ごとのバリア数値管理。戦闘開始時に相手の位置を全て変数で取得し、それに応じてごにょごにょすることにより解決した。
戦闘開始時に下記のようなコモンイベントを動かしている。


ci-enにコード記入するとぶっ壊れて投稿できなくなるので、画像ですいません。

ちなみに、少し見ればわかると思うがこの仕様だと8体以上の敵が出ると、X座標がY座標の領域まで来てしまうためバグってしまう。
私は多くて6体までということに決めているので、このような仕様にした。

敵が増えれば増える程、バリアゲージ、魔力アップアイコンなどの数を増やさなければいけないことと、画面の狭さ的にも基本3体くらいが限界のため、6体をマックスとした。

苦労した部分3

バフデバフ状況によって、敵の行動予測、ヘルプテキストを変更する事。
敵の行動予測はtomoaky様のTMFutureSight.jsを使用させていただいているが、大分改変させてもらっている。TMFutureSight.jsのプラグイン内でデバフの判定をし、それに応じて苦労した部分1と同じようなダメージ計算を行ってテキスト化している。

また、文字を作成している部分を計算してもリアルタイムで反映されてないため、プラグインのupdate部分で文字を変更するようにし、リアルタイムでデバフのダメージ計算が反映されるようにした。

主人公側のヘルプテキストは更に無理やり実装している。
rmmz_window.jsに直接このように書きこんでいる。


カードは全て内部ではアイテム扱いなので、setItem関数にて処理。
アイテムタイプIDが1かつ取得TP量が1の場合はダメージ系カードとして判定して、計算し、取得TP量が2の場合は防御系カードとして判定している。それ以外は特にヘルプテキストをいじらずそのまま処理している。

ヘルプテキスト内から上手く数字を取り出すことができなかったため、parseInt関数を使いテキスト内の先頭の数字を取り出す処理をしてゴリ押ししている。
なので、全てのカードのヘルプテキストで最初に出てくる数字はダメージやバリア値にしなくてはいけない。

もっといい方法を思いついたらおそらく変わると思う仕様。

苦労した部分4

手札を引いた順番通りに手札に配置すること。
先ほども言ったが、カードは全て内部ではアイテム扱いなのである。RPGツクールの仕様だと同じアイテムは一つにまとまり、その中で個数の情報を持って管理される。
つまり、同じアイテムの中で並び順も糞もないのである。
まずデフォルトの状態だと同じアイテムは重なって個数表示され、アイテムIDの若い順に自動で並べられてしまう。
まず、アイテムが重ならないようにするのにノリミツ様の『NLM_ItemDilution.js』を使用させていただいた。しかし、アイテムIDの若い順に並べられてしまう問題は解決しなかったため、ゲーム内コモンイベントでドローした時にドローした順番をゲーム内変数に保管し、その情報を元に並び替えるように改変した。
改変したが問題のある仕様であり、同じアイテム内でどのアイテムを使用したかはどう頑張っても取得できなさそうなため、同じアイテムが複数手札にある場合は一番左のアイテムから使用されていく仕様になっているのが気持ち悪い。が、仕方ない。

例:手札が『ファイア バリア ファイア ファイア ファイア』となっている時、3,4,5番目のファイアを使用しても1番目のファイアが消えてしまう。

ここまで来て、そもそもカードをアイテムとして管理せず自分で作れば良かったと後悔もあるが、アイテムであることでかなり楽出来てる部分もあるので仕方ない。
というかそこまですると、本当にRPGツクールを利用している意味が会話部分だけになりそうである。

次の作業予定

前回言ったマップ作成システムも作りたいが、先にSlaytheSpireで言うレリック的な物を実装しようと思っている。これもバフデバフの一種のようなものなので。
これはRPGツクール内の武器か何かとスイッチでリンクするように所持を管理して、実装しようかなと考え中。
例:武器1を所持していると、武器1所持スイッチがオンになり、武器1所持スイッチがオンの場合は炎症デバフ倍率1.75倍になる。
また、手に入れた順番もできれば変数で管理し、画面の左上に入手した順でアイコンを表示したい……。

これも実装するたびに今までの部分がバグったりするんだろうなぁ。
目標としては4月中に戦闘、マップ、報酬画面のゲーム部分を完成させること。
出来ればボス敵やバランス調整も。
元々は1作目のため、4月中にゲーム自体完成させるくらいのつもりで始めたが、戦闘システムに凝り出したのが終わりの始まりだった。
今は5月中完成目指してます。

それではバイバイ。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

限定特典から探す

記事を検索