WebSocketを使ったゲーム開発をしています
複数のプレイヤーとマップ上に100体のモブがリアルタイムで動くようにしています。
そこで問題が発生しています。
全てのプレイヤーとモブがリアルタイムにgetBoundingClientRect()を使い座標を算出しながら衝突判定を行い動かしています。
getBoundingClientRect()を使うとDOMをリフローすることから相当の負担がかかるようです
その処理を毎秒100体以上が並列して動かすということから、メモリリークというのか?
まともに動かせない状態になります。
そしてJSの問題というかブラウザ側の制約なのか、
setIntervalやsetTimeout、requestAnimationFrameを実行中に別タブを表示すると、
キューがため込まれる仕様なのか、
非アクティブにしてから1時間後にタブを戻すと一気にキューが解放されて凄惨な状態になり最悪PCがフリーズする事象が発生します
JSでゲーム開発は無謀なのでしょうか?
WebWorkerだの色々試しても結果変わらず。
リアルタイムであることとgetBoundingClientRect()は絶対に外せないです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。