前提・実現したいこと
node.jsでブラウザゲームを作っています。今回はサーバー側の処理についてです。
プレイヤーや敵などのエンティティの処理はfor
文でエンティティの数
分をループしているのですが、
エンティティ同士のあたり判定や最短距離のエンティティの取得などでは、
さらにfor
文でエンティティの数
分をループしています。
自分のゲームではエンティティの数は推定でも1,000
以上は出ると思うので、
仮に1,000
回ループを行うと、1,000
×1,000
=1,000,000
回ループしなければならない計算になります。
そこで、for文の高速化の為にするべきことを教えてほしいです。
簡潔に言えばコードの最適化、でしょうか?よろしくお願いします。
該当のソースコード
javascript
1let entities = /*エンティティの情報*/; 2for (let key in entities) { // 1000回(仮定)の処理 3 for (let _key in entities) { // 1000回の処理 を 1000回 行う 4 if (_key != key) { 5 /* あたり判定などの処理 */ 6 } 7 } 8}
試したこと
######エンティティの数:50
→ FPS:55
~60
前後
→ ループ回数:250
######エンティティの数:500
→ FPS:5
~6
前後
→ ループ回数:25,000
######エンティティの数:1000
→ ほぼ動いてない
→ ループ回数:1,000,000
######※FPS・・・サーバー側のFPS
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/05/05 02:57