Интересуют игры по типу agar.io, wormax.io и т.п. Поделитесь опытом проектирования браузерной реал тайм игры. Какие технологии и фреймворки лучше применять на ваш взгляд? Немного исследовав клиентскую часть данных проектов вижу, что обмен данными идёт по протоколу Web Socket, данные с сервера приходят частыми фреймами с задержкой (10-50 мс).
На скрине консоль разработчика на вкладке "Web Socket":
Каждый фрейм содержит данные в бинарном виде - Binary Frame (Opcode 2). Первый вопрос как формировать данные такого вида на сервере и как раскодировать их на клиенте?
Далее описание подхода, который сформировался на данный момент в голове. Его я хочу реализовать для первого тестового прототипа. В ответ хочу узнать какие ошибки и подводные камни могут быть в данном подходе:
- В качестве сервера хочу взять NodeJS
- На клиенте SPA приложение, вся графика самой игры будет рисоваться на canvas, формочки и менюшки просто html поверх канваса.
- Что бы не рисовать всё на голом WebGL думаю взять какой-то популярный html5 игровой движок, phaser или createjs, или может ещё что-то лучше для этих целей на ваш взгляд?
- Обмен данными через Web Socket, клиенты будут посылать только события с клавиатуры и мыши, сервер будет накапливать события от всех клиентов за определенные промежутки времени, делать расчёт нового игрового такта и отправлять всем клиентам.
- Для удобства работы с сокетами думаю взять socket.io, есть ли смысл в этом?
- На сервере хочу использовать так же какой-нибудь фреймворк для того, что бы не писать велосипеды для таких базовых вещей как контроллеры, модели и работа с базой. Вижу такие варианты: Express, Meteor. Что посоветуете в этом плане?