Javascript - requestAnimationFrame с WebSockets - проблемы с производительностью - PullRequest
0 голосов
/ 04 октября 2018

Я планирую написать «игру» в реальном времени для хобби.Моя идея состоит в том, чтобы использовать websockets и canvas, и я хочу имитировать то же поведение, что и slither.io, поэтому я хотел бы иметь функцию, которая, когда пользователь перемещается, другие пользователи могут видеть его перемещение в то же время.

Сначала подумайте, что у меня на уме было использовать WebSockets и requestAnimationFrame, чтобы я мог для каждого события отправки кадра от клиента к серверу через сокет и передавать информацию о моих координатах в другие сокеты.

Мойпроблема в том, что меня беспокоит то, что это не будет эффективно и убило бы мой сервер событиями.

Так это хороший способ спроектировать коммуникацию в реальном времени в браузерной игре или есть лучший способ сделать это?

1 Ответ

0 голосов
/ 04 октября 2018

Вы, безусловно, можете использовать WebSockets, и здесь есть несколько замечательных ресурсов: Подходят ли WebSockets для многопользовательских игр в реальном времени?

Следует учитывать более низкую скорость тиков, чемпросто сделать это один раз для каждого кадра анимации.Обновление состояния каждого видеокадра, которое может происходить до 60 раз в секунду, вероятно, является излишним.Для сравнения, Overwatch, игра с умеренным темпом, запускается каждые 20 секунд.

Чтобы выполнить обновление состояния независимо, например, в socket.io, вы можете использовать setInterval

var dataTickRate = 30;

setInterval(function() {
  socket.emit('playerState', playerState);
}, 1000 / dataTickRate);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...