私は最近 Web ワーカーで遊んでいて、次の手法を使用して A* パス検索をワーカー スレッドにオフロードすることができました...
- オブジェクトがワーカーにメッセージを投稿するときに、オブジェクトへの参照を配列にプッシュします
- ワーカーがポストバックしたときに、配列から次のアイテムをシフトします
私のゲームには、クリーチャーが環境内のノイズに反応する機能があります。理想的に達成したいことは...
- ゲーム内の何かが半径のある音を立てる
- ノイズの発生源とクリーチャーのリストを Web ワーカーに渡す
- Web ワーカーは、ノイズの範囲内にあるクリーチャーのリストで応答します
オブジェクトの配列をワーカーに渡すことができず、これを回避する方法を考えるのに苦労しているため、明らかに問題があります。
更新された質問: クリーチャー X とクリーチャー Y が音を聞いたことをメインスレッドに (効率的に) 伝えるにはどうすればよいですか?
助言がありますか?
Webワーカーに投稿しようとしているものの例を挙げていただけますか。たとえば、オフロードする直前にコンソールにログを記録してください
このようなもの...
var iNoiseRadius = 100;
var aCreatures = [
{id: 1, x: 0, y: 0},
{id: 2, x: 200, y: 0},
{id: 3, x: 100, y: 100},
{id: 4, x: 50, y: 400},
{id: 5, x: 100, y: 0}
];
....
oWorker.postMessage({
type: 'noise',
originator: aCreatures[2],
radius: iNoiseRadius,
creatures: aCreatures
});
生き物の配列は、メッセージを投稿してから応答を受信するまでの間に変化する可能性があるため、配列インデックスは役に立ちません。