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

У меня есть флеш-игра с использованием TCP-сокетов, которые подключаются к серверу C / Linux.Игра очень простая.Клиентов почти невозможно обмануть, так как в основном это текстовая игра с некоторой графикой.

Проблема с таймером синхронизации:

В игре есть таймер, который должен быть одинаковым для каждого клиента (например, начиная с 60 секунд и считая до 0).Я подумал о некотором базовом методе, где сервер применяет таймер для каждого клиента, например, отправку серверного времени каждому клиенту каждую секунду, но это может привести к значительному расходу ресурсов на сервере и значительному использованию полосы пропускания.Я надеюсь, что кто-то может дать мне несколько советов по технике синхронизации, которая будет минимальной по пропускной способности и времени обработки сервера.

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

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 27 июля 2012

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

Трудно пройти синхронизацию box2d по TCP. Я предлагаю вам использовать P2P.

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

Рассматривали ли вы NTP ? Это то, что использует «Windows, Network Time» и Linux.

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