1

私は2Dゲームに取り組んでいます。ゲームマップをgameMapというjsオブジェクト{}に保存しています。私の問題は、マトリックス上のアイテムの読み取りに時間がかかりすぎることです。衝突検出の場合、通常、マップマトリックスの10または20項目をチェックする必要があります。これには約1ミリ秒かかり、画面に10文字ある衝突検出がアプリのボトルネックになり、各フレームの16ミリ秒のうち10ミリ秒かかるはずです。また、マップが大きくなりすぎると、スケールアップします。

マップに1000x1000のアイテムがあるとします。今、私がチェックしたい位置(-100,200)にあるものをチェックしたい場合gameMap['-100'][200]。私の考えは、100x100のアイテムをグループ化する象限にマップを分割することです。だからチェックするため(-100,200)に私はテストしgameMap[quadrantName][-100][200]ます。これは、gameMapがほぼ同じサイズである一方で、はるかに少ないアイテムで動作し、おそらく読み取り速度がはるかに小さい割合でスケールアップすることを意味します。これが読書を速くするかどうか誰かが知っていますか?読み取り速度を向上させるために他に何ができますか?

4

1 に答える 1

0

まず、10000x10000バイトの配列は100MBを消費します!本当にこのような大きな配列が必要ですか。おそらく、すべての要素の座標だけを保存したほうがよいでしょう...

あなたの質問に関しては、2D配列を1D配列に変換し、経由ですべてのセルにアクセスできます。

gameMap[y * 10000 + x]

ここで、10000はマップの「幅」になります。したがって、マップを象限に分割する必要はありません。

于 2012-12-19T07:40:06.647 に答える