TCP - синхронизация клиента - PullRequest
0 голосов
/ 27 февраля 2012

Я работаю над сетевой флеш-игрой с использованием TCP-сокетов (вынужден использовать TCP b / c flash). Игра довольно простая, так как в основном это текстовая игра. Единственная реальная синхронизация, которая должна выполняться, - это таймер обратного отсчета для каждого клиента. Этот таймер начнется через 60 секунд и обратный отсчет до 0, а при 0 произойдет некоторое изменение состояния игры, поэтому важно, чтобы все клиенты достигли 0 в одно и то же время.

Я мог бы отправить команду «начать отсчет времени» со своего сервера всем клиентам и использовать системные часы клиентов, но если пакет будет отброшен или задержан, тогда клиент может выйти из синхронизации с другими. Я также мог бы применить некоторый протокол клиент-сервер, где клиент должен «регистрироваться» на сервере каждую секунду (или меньше), а сервер обеспечивает синхронизацию всех клиентов. Моя забота об этом - эффективность. Моя игра - медленная текстовая игра, поэтому вполне возможно, что у клиента может не быть данных для отправки на сервер в течение 30 секунд за один раз.

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

Заранее спасибо.

P.S. Я не думаю, что NTP возможен со вспышкой.

1 Ответ

0 голосов
/ 27 февраля 2012

Представьте себе ситуацию, когда некоторые клиенты отстают - что вы будете делать?

Я имею в виду, представьте, что есть идеальная синхронизация, но один из клиентов отключается во время обратного отсчета.Целое событие отменено или остальные клиенты все еще «участвуют»?

Существует механизм, который серверы потокового видео используют для потоковой передачи видео на Flash.Они отправляют пакет фиксированного размера много раз и измеряют время, необходимое для перемещения туда и обратно (клиент Flash должен также отвечать пакетом фиксированного размера).Таким образом, это позволяет записать задержку, которая существует между временем сервера и клиентом.Возможно, вы могли бы создать справочную таблицу для клиентов и отправить сообщение с учетом задержки - если это не достаточно хорошо ... это, скорее, относится к категории научных исследований, а не к играм :) Итак, возможно, попросив пользователей установить дополнительныепрограммное обеспечение / плагины не будет проблемой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...