Runing Matter. js на сервере узла - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь запустить сервер, который запускает физическое моделирование на сервере. Затем клиенты подключаются к этому серверу через 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;

, это также приводит к сбою.

Как я могу просто передать движок / мир клиентам ?? Без сбоя или превышения размера стека

...