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

Чуть больше года занимаюсь изучением веб программирования, а если конкретно - разработкой браузерной игры. До текущего момента вёл разработку с таким стеком технологий:
  1. 1) Фронтенд: jquery
  2. 2) Бэкенд: yii2, redis, nodejs, websockets, pjax


Если конкретно, то с фронтендом я вообще особо не заморачивался, скорее вникал в особенности разработки различных анимаций, оптимизации нагруженной вёрстки и пр., в общем стал гуру по css, html, svg, canvas, но не углублялся в мир современных технологий javascript и использовал банальный jquery. Пока дело не доходило до работы с сервером меня всё устраивало.

С бэкендом всё чуточку сложнее. Все страницы в основном генерировал непосредственно в yii2 и отдавал пользователю. Далее пользователь подключался с помощью вебсокетов к nodejs серверу и подписывался на определённый ветки событий. Все запросы каких-то действий как правило посылались через ajax в yii2. То есть если происходило какое-то событие (yii2 принял чей-то запрос, скажем сообщение в чате) и было необходимо обновить информацию у некоторых пользователей, то yii2 отправлял информацию об этом событии в redis, а nodejs подхватывал оттуда это событие и рассылал всем подписанным на него пользователям.

Переход между страницами осуществлялся с помощью pjax.

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

В плане фронтенда сейчас рассматриваю react.js, так как хотелось бы возложить работу по генерации вьюшек полностью на пользователей и максимально разгрузить сервер, а заодно это поможет унифицировать рендер нового и обновлённого контента, так как сейчас приходится переписывать по 2 раза одно и то же для того контента который был до захода в приложение (генерируется на yii2) и обновлённого (генерируется jquery по событию вебсокетов).

А вот в плане бэкенда я пока что очень слабо себе представляю в каком направление мне двигаться. Хочу полностью перенести все взаимодействия с сервером на вебсокеты и наверно nodejs. Но в таком случае абсолютно не понимаю как мне отправлять начальный html "набор" из ссылок на css и js файлы и скелета сайта. Не понимаю как стоит организовать авторизацию пользователей и взаимодействие с базой данных. Не будет ли проблем с ассинхронностью nodejs? Какие могут быть подводные камни? Как структурировать код nodejs сервера? Есть ли какие-то фреймворки для таких задач?

Может быть есть какие-то другие стеки технологий для таких задач?
  • Вопрос задан
  • 752 просмотра
Пригласить эксперта
Ответы на вопрос 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Но в таком случае абсолютно не понимаю как мне отправлять начальный html "набор" из ссылок на css и js файлы и скелета сайта.

nodejs прекрасно работает в качестве движка для обычных сайтов.
app.get('/', (req, res) => res.send('./index.html'))
Ну разве что для скорости стоит раздавать статику nginx'ом.
Если речь о серверном рендеринге React'а, то смотрите соответствующую документацию.

Не понимаю как стоит организовать авторизацию пользователей и взаимодействие с базой данных.

sequilize.js или Mongoose, Passport.js для авторизации

Не будет ли проблем с ассинхронностью nodejs?
Если вы понимаете, как JS устроен, то нет.

Как структурировать код nodejs сервера? Есть ли какие-то фреймворки для таких задач?

express.js/koa, kraken.js, sails.js. express никакой структуры не предусматривает, так что ищите бойлерплейты.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы