phaser3でスプライトの出現が重くて焦った話

起こったこと

Phaser3でゲーム制作をしているときのこと、Phaser.Physics.Arcade.Groupを使って敵データ(Sprite)をたくさん出現させていた。 ステージクリア型のゲームで、ステージをクリアしたタイミングで現在の敵データをdestroyし、現在のGroupを持つ変数を次のステージのGroupに上書きする処理をしていた。

しかし、ステージがある程度進むと重くなっていった。

ステージをデバッグする機能を用いて敵を100ほど出現させても処理落ちしなかったが、次ステージに移ると処理落ちが激しい状態になった。

groupのclearメソッド

以下のリンクが答えだった。敵データをdestroyしてもgroupに存在しつづける仕様らしい。groupからも明示的にSpriteとのリンクを解除するメソッド(clear)を用いる必要があった。

www.html5gamedevs.com

作ったゲームの紹介

所謂固定シューティングというもので、キャラは左右にだけ動くことができるシューティングです。撃って避けてしゃがんでください。しゃがみ中は相手と重なっても弾に当たっても全くダメージを受けません。シューティングでは結構難易度低めだと思います。

extab-az.itch.io

またいつかしっかりとブログに書きたいところ。