自作プラグインの動作を軽くしたい
Posted: 2024年7月19日(金) 05:30
お世話になっております。
今回は自作したプラグインの動作が特定条件で重くなってしまうという問題があり、どうすれば軽減できるかアドバイスをいただければと思い相談いたしました。
●プラグインPF_SAN_TileToner_MovingRangeDisplyay.jsについて
このプラグインはサンシロ氏のSAN_TileTonerの機能を使って、SRPGでよくあるような移動範囲や攻撃範囲を表示するために作りました。
基本的な流れは
①MovingRangeTestで呼び出されるとsetMoverとsetActorで対象とするキャラクターの座標やステータスを取得
②startSearchは再帰処理でsearch4を呼び出し続けて移動範囲を作成する
という手順になっています。
困っているのは、今のところ対象キャラクターの敏捷性分だけ移動できるように設定しているのですが、
この数値が8~9くらいから少し表示までにラグが生じ、13~14くらいに設定するとほぼスタック状態になってしまいます。これを軽減するにはどのような改善方法があるでしょうか?
●わかっていること
重いのはMoving_Range.prototype.searchの処理ということはわかるのですが、
例えば$gameMap.setTileTone(タイル染色の処理)を省いてもあまり変化はなく、単純に処理の繰り返し回数が増えすぎているということなのかなと思っています。
ただこの再帰処理を使った移動範囲作成も、解説サイトなどをみてみようみまねで作った感じなので、無駄な処理がまだ色々あるのかなと考えて投稿した次第です。ご助言ありましたらぜひよろしくお願いします。
サンプルプロジェクト↓
https://drive.google.com/file/d/11Z15hy ... sp=sharing
SAN_TileToner(サンシロ氏のサイト)↓
https://github.com/rev2nym/SAN_TileToner
今回は自作したプラグインの動作が特定条件で重くなってしまうという問題があり、どうすれば軽減できるかアドバイスをいただければと思い相談いたしました。
●プラグインPF_SAN_TileToner_MovingRangeDisplyay.jsについて
このプラグインはサンシロ氏のSAN_TileTonerの機能を使って、SRPGでよくあるような移動範囲や攻撃範囲を表示するために作りました。
基本的な流れは
①MovingRangeTestで呼び出されるとsetMoverとsetActorで対象とするキャラクターの座標やステータスを取得
②startSearchは再帰処理でsearch4を呼び出し続けて移動範囲を作成する
という手順になっています。
困っているのは、今のところ対象キャラクターの敏捷性分だけ移動できるように設定しているのですが、
この数値が8~9くらいから少し表示までにラグが生じ、13~14くらいに設定するとほぼスタック状態になってしまいます。これを軽減するにはどのような改善方法があるでしょうか?
●わかっていること
重いのはMoving_Range.prototype.searchの処理ということはわかるのですが、
例えば$gameMap.setTileTone(タイル染色の処理)を省いてもあまり変化はなく、単純に処理の繰り返し回数が増えすぎているということなのかなと思っています。
ただこの再帰処理を使った移動範囲作成も、解説サイトなどをみてみようみまねで作った感じなので、無駄な処理がまだ色々あるのかなと考えて投稿した次第です。ご助言ありましたらぜひよろしくお願いします。
サンプルプロジェクト↓
https://drive.google.com/file/d/11Z15hy ... sp=sharing
SAN_TileToner(サンシロ氏のサイト)↓
https://github.com/rev2nym/SAN_TileToner