Я пытаюсь запустить сервер, который запускает физическое моделирование на сервере. Затем клиенты подключаются к этому серверу через websockets / socket.io. Я знаю, что могу вычислить Engine отдельно от рендеринга с помощью Matter. js. Итак, мой вопрос: как мне передать данные движка клиенту ??
У меня есть класс Game, и при соединении через сокет я хочу передать «мир» клиенту для рендеринга.
var g = new Game()
g.initEngine()
io.sockets.on('connection', function(socket) {
io.emit('gamestate', g.getGameState())
});
В игровом состоянии я не совсем уверен, что передать ???
var Game = function(Player1, Player2) {
var self = this
this.gameID = 22
this.engine = null
this.world = null
// Get game state - WHAT DO I SEND HERE!??
this.getGameState = function() {
return self.engine
}
// Create the engine
this.initEngine = function() {
self.engine = M.Engine.create();
self.world = self.engine.world;
self.world.gravity.x = 0;
self.world.gravity.y = 0;
M.Engine.update(self.engine, 122000 / 60);
}
}
Когда я пытаюсь передать себя, или self.engine, или self.world, я просто создаю sh приложение. и он говорит, что Превышен максимальный размер стека вызовов.
Какие данные мне нужно извлечь из self.engine, чтобы аккуратно отправить клиенту через WebSockets.
Я знаю, что мне нужны данные о положении тел. Но даже когда я пытаюсь
return self.engine.world.bodies;
, это также приводит к сбою.
Как я могу просто передать движок / мир клиентам ?? Без сбоя или превышения размера стека