@Farrien
Tell me who

AJAX или сокеты для карточной игры?

Не могу решить, что будет лучше для карточной игры. Движок будет на PHP без вопросов, а вот как взаимодействовать клиент будет не решился: через ajax или сокеты?
AJAX вполне простенько для меня, а вот с сокетами сложнее, но разбираться ли с ним.
Говорят сокеты работают с меньшей нагрузкой, чем посылать ajax запросы для каждого действия игроков.
Для сокетов пишется, что еще обязательно демоны будут нужны, но с ними я никогда не работал.
"Перегрузка" заметная будет ли. Просто тот же ВК использует кажись только ajax, судя по анализу на странице диалогов.
  • Вопрос задан
  • 451 просмотр
Пригласить эксперта
Ответы на вопрос 3
abyrkov
@abyrkov
JavaScripter
Полностью согласен с GavriKos. Добавлю от себя.

Во-первых, если бэкенд на РНР, сокеты - красноглазие. А если на ноде - то вполне симпатично.
Во-вторых, поправлю GavriKos'а: если у вас однонаправленый обмен - то AJAX, если обмен в направлении клиент -> сервер, или Komet, если наоборот, если двунаправленый - то лучше сокеты, хотя вам никто на мешает сделать AJAX + Komet. Но красноглазно.
Ответ написан
Комментировать
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel
Написал пошаговую браузерку. Попробовал так и этак. По скорости и трафику существенных различий нет.
- ajax, если у вас например четыре игрока, то клиент игрока должен отправить три запроса серверу что бы получить ответные ходы, а после сделать свой.
- websockets, клиент или сервер отправил сообщение и не знает принято оно или нет, не знает какое из его почти одновременных сообщений будет принято раньше и будет ли вообще. Сервер получил сообщение хода, но не в очередь, что серверу делать с этим ходом? В итоге в пошаговой игре для поддержания consistent state на клиентах и сервере приходится вводить механизмы синхронизации, практически дописывать модель запрос-ответ изначально реализованную в ajax поверх websocket транспорта, а состояние постоянно сбивается-плывет и игра валится и трудно дебажить.
websocket однозначно лучше для стрелялок где скорость важна, а детерменированное состояние не обязательно, ну пропустил пару шагов или выстрелов да и ладно.
Пошаговую следующую игру буду наверное делать на ajax.
Ответ написан
Комментировать
GavriKos
@GavriKos Куратор тега Разработка игр
Если в игре нужен реалтайм и важна скорость реакции - то сокеты. Если не важна скорость реакции (четкий детерминированый ход) - то можно и ajax.
Ответ написан
Ваш ответ на вопрос

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

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