Основываясь на моих исследованиях, websockets - это надежный способ быстрой передачи данных между клиентом и сервером, поскольку нет накладных расходов HTTP.Цитирование объектов игры на сервере Node.js + websocket?
socket.io пример показывает логика происходит только в сокет сообщений:
https://github.com/socketio/socket.io/blob/master/examples/chat/index.js
В режиме реального времени игры, логика должна произойти за пределами сокетов соединений, например. для перемещения монстров, снарядов, таймеров выключения и т. д.
Я предполагаю, что любое хорошее решение для 1 игрового экземпляра будет хорошо работать для нескольких игровых экземпляров.
Возможно, Node.js async.each()
и async.parallel()
будут работать?
Я хотел бы сохранить согласованные внутренние часы или скорость кадров для обновления игровой логики.
На стороне клиента, я могу использовать
loop() {
this.now = Date.now();
var delta = this.now - this.last;
this.last = this.now;
this.dt = this.dt + delta;
if (this.dt < this.rate) {
window.requestAnimationFrame(this.loop.bind(this));
return;
} else {
this.game.loop();
this.draw();
this.dt = this.dt - this.rate;
}
this.game.loopKeyboardInput(this.key_pressed_map);
window.requestAnimationFrame(this.loop.bind(this));
}
для отслеживания времени дельты.
Как я могу сделать что-то подобное на сервере?