Я думаю, что имеет смысл использовать WebWorkers для игры, но да, это будет означать, что вам придется сохранить объект состояния игры, который можно преобразовать в действительный JSON, который вы можете передать веб-работникам. С другой стороны, вы также можете поместить много внутренних данных в этих веб-работников.
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.
}
}
}
затем вы настраиваете веб-работника для патрулирования и возможных событий (вы также можете вызывать других веб-работников внутри веб-работника и обрабатывать события патрулирования)
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 на самом деле является в значительной степени архитектурным решением, и если вы хотите их использовать, оно потребует большого количества рефакторинга. Без рефакторинга, я сомневаюсь, что это вам вообще пригодится.