2012-02-27 2 views
0

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

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

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

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

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

ответ

0

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

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

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

+0

Спасибо за ответ. Мне интересно, будет ли это работать: у меня есть сервер, который запускает собственный таймер, а затем говорит всем клиентам запускать один и тот же таймер в своей системе. Затем сервер игнорирует любые клиентские запросы, которые появляются после обратного отсчета таймера, чтобы избежать отставания клиента на секунду или 2 и принятия некорректного запроса. –

Смежные вопросы