ゲームにWebWorkersを使用することは理にかなっていると思いますが、そうです、Webworkersに渡すことができる有効なJSONに変換できるゲーム状態オブジェクトを保持する必要があることを意味します。明るい面としては、これらのWebワーカー内に多くの固有のデータを配置することもできます。
var gameState = {
sprites: {
{
type: 'rifleman', // damage, accuracy, speed etc set inside appropriate webworker.
owner: 'playerA',
x: 100,
y: 100,
z: 0,
level: 1, // used to fetch modifiers to dmg, acc, speed etc.
},
{
// each sprite it's own state obj.
}
}
}
次に、パトロールと発生する可能性のあるイベント用にWebワーカーを設定します(Webワーカー内の他のWebワーカーに電話して、パトロールイベントを処理することもできます)
var patrolWorker = new WebWorker('patrolWorker');
patrolWorker.onmessage = function(e){
render(e.data); // your render function, can ALSO be a webworker if you like ;)
}
patrolWorker.postMessage(gameState.sprites);
WebWorkersを使用することは、実際には非常にアーキテクチャ上の決定であり、WebWorkersを使用する場合は、多くのリファクタリングが必要になることを、これまでに明らかにする必要があります。リファクタリングがなければ、それがあなたにとってまったく役に立たないと思います。