Answer the question
In order to leave comments, you need to log in
How to sync players in a browser based turn based game?
Здравствуйте! Подскажите, пожалуйста, как можно решить проблему с синхронизацией в такой игре.
Вот что у меня уже готово и более менее работает.
1. Клиенты заходят в игру и после того, как игра началась запускаются следующие процедуры:
1.1. каждые 10 секунд отправляют запросы серверу: завершил ли ход соперник?
1.2. у игроков стартует в обратный отсчет таймер конца хода - 90 секунд;
1.3. начинают считаться игровые такты в каждом из клиентов игроков. Т. е. каждые 10 секунд значение переменной игрового такта увеличивается на 1.
2. Сервер каждые 10 секунд увеличивает у себя игровые такты на 1.
3. Если клиент игрок получает сообщение о том, что очередь хода перешла к нему, то клиент обновляет и показывает данные о ходе в следующем игровом такте.
Сейчас вроде бы все работает, но таймеры на клиентах игроков бывает уходят в минус.
Может быть попробовать отправлять данные чаще чем раз в 10 секунд?
Клиент написан на angular. Сервер на php. Думаю может быть не те технологии для разработки выбраны?
Answer the question
In order to leave comments, you need to log in
Сейчас вроде бы все работает, но таймеры на клиентах игроков бывает уходят в минус.
Можно сделать наоборот. Не использовать таймер обратного отсчёта, но в момент начала хода рассчитать время его окончания и сравнивать по таймеру текущее время с рассчитанным. Как только рассчитанное время наступило спросить у сервера текущее состояние игры. Такой вариант позволит сгладить фризы таймера на клиенте.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question