Задать вопрос
rework
@rework
Помог ответ? В благодарность отметь его решением

Какой правильный подход к реализации браузерных многопользовательских реал тайм игр?

Интересуют игры по типу agar.io, wormax.io и т.п. Поделитесь опытом проектирования браузерной реал тайм игры. Какие технологии и фреймворки лучше применять на ваш взгляд? Немного исследовав клиентскую часть данных проектов вижу, что обмен данными идёт по протоколу Web Socket, данные с сервера приходят частыми фреймами с задержкой (10-50 мс).

На скрине консоль разработчика на вкладке "Web Socket":

5a56f0d29d844060826340.png

Каждый фрейм содержит данные в бинарном виде - Binary Frame (Opcode 2). Первый вопрос как формировать данные такого вида на сервере и как раскодировать их на клиенте?

Далее описание подхода, который сформировался на данный момент в голове. Его я хочу реализовать для первого тестового прототипа. В ответ хочу узнать какие ошибки и подводные камни могут быть в данном подходе:
  1. В качестве сервера хочу взять NodeJS
  2. На клиенте SPA приложение, вся графика самой игры будет рисоваться на canvas, формочки и менюшки просто html поверх канваса.
  3. Что бы не рисовать всё на голом WebGL думаю взять какой-то популярный html5 игровой движок, phaser или createjs, или может ещё что-то лучше для этих целей на ваш взгляд?
  4. Обмен данными через Web Socket, клиенты будут посылать только события с клавиатуры и мыши, сервер будет накапливать события от всех клиентов за определенные промежутки времени, делать расчёт нового игрового такта и отправлять всем клиентам.
  5. Для удобства работы с сокетами думаю взять socket.io, есть ли смысл в этом?
  6. На сервере хочу использовать так же какой-нибудь фреймворк для того, что бы не писать велосипеды для таких базовых вещей как контроллеры, модели и работа с базой. Вижу такие варианты: Express, Meteor. Что посоветуете в этом плане?
  • Вопрос задан
  • 689 просмотров
Подписаться 5 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
3. помимо phaser можно так же поглядеть https://github.com/gamestdio/pixi-engine

5. socket.io был нужен когда не везде поддерживались сокеты.

6. meteor для agar.io — overkill, ну и в целом неоднозначное решение
Ответ написан
GavriKos
@GavriKos Куратор тега Разработка игр
В целом - вы все верно расписали. Возможны нюансы, но в целом - можно садиться и делать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы