Lunatlazur 2022/06/14 03:45

とのストとガストロを行ったり来たり【記:あおたく】

こんばんは、あおたくです。

この一週間はとのストの処理落ちの調査、LPの実装の続きをやりつつ、ガストロのメニュー画面用のウインドウスキンの実装を進めていました。

とのストの処理落ちの調査

とのストではシンボル遭遇方式を採用しているんですが、普段はランダム移動、プレイヤーが敵の知覚範囲内に入ると敵が追ってきて、知覚範囲外に出るとランダム移動に戻る、という実装になっています。
プレイヤーの発見後は、プレイヤーを見失わないようにプレイヤーに接近してほしく、プレイヤーに向かって前進するようになっています。
このプレイヤーに向かって前進する処理を移動ルートのスクリプトで実装していたのですが、それ以上近づくことができない位置で前進処理を行おうとすると1フレーム内の処理量を超えて移動を繰り返そうとしてしまい、処理落ちが発生してしまっていました。

どうも通常の移動ルートのコマンドは移動できなかった場合は、どうも次のフレームになるまで移動しないようになっているみたいなんですが、スクリプトだとそうはなっていない。
どうしたものかと思っていたんですが、今回はやろうとしていたことが単にプレイヤーに向かって前進する、というだけの処理だったので、ほぼ同じ処理を行う移動ルートのコマンドに置き換えるだけでよかったのでした。今となってはなんでスクリプトで書いていたのか……。

ちゃんとプリセットのコードを読むと既存のコマンドの中身がどうなっているのかわかるので、スクリプトを書く前に、その処理が既存のコマンドで実現できないか確認してみるようにしたほうがいいですね。いい教訓になりました。

とのストのLPの実装

今はこんな感じになっています。メニュー画面にLPを表示する以外の処理は組み終わっています。

  • HPが0になったら行動不能になってLPが1減る
  • HPを回復させると行動不能が解除される
  • LPが0になるとLPを回復するまでHPを回復できなくなる

というシンプルな実装になっています。
ところで、ツクールの戦闘不能はHPが0になったときに自動的に付与されるステートという仕様なんですが、今回はLPが0になったときに付与されるようにして、HPが0になったときはそれとは別のステートを付与して行動不能扱いにするようにしています。
この関係で既存のプラグインの死亡判定にかなり影響が出て、バグと格闘する羽目になってしまいました。
とはいえLP0のほうを新規ステートにするとしても、別のところで影響を受けるので、ここはトレードオフだったろうと思います。
今回はこっちのほうがエディタ上のデータの整合性を取りやすかったので、LP0で従来の戦闘不能ステート扱いするようにしました。

ガストロのウインドウスキンの拡張

戦闘画面を組んだときに独自のウインドウスキンを使えるようプラグインを書きましたが、これはデフォルトのウインドウスキンを置き換える実装になっていたので、異なるウインドウスキンを切り替えて使うということができません。
というわけで、ウインドウごとに使うスキンを指定できるように拡張する必要があります。今はその処理を書いている最中です。特に見せられる画面はないです。
内部の処理の書き換えはちょっとずつ進んでいます。
一から書き起こすより今ある処理を壊さずに書き換えていくほうが大変だったりします。
こういう苦労をしないためには日頃から「動けばいいコード」ではなく「後から書き換えやすいコード」を意識するのが大事ですね。
さいわいにも昔の自分がある程度はリファクタリングしてくれていたので地獄を見ずに済んでいます。

フォロワー以上限定無料

ゲームに使える楽曲探しの話

無料

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

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

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索