Синхронизация физики игровой сети с Objective C и Box2d - PullRequest
0 голосов
/ 22 октября 2011

У меня есть настольная хоккейная игра для iphone, и теперь я делаю многопользовательскую часть.Я решил, что iphone, который запускает состязание, является сервером.

Физика работает на сервере и на клиенте, поэтому внешний вид клиента остается гладким, а не "прыгающим", поскольку это действительно быстрая игра.

Сервер отправляет постоянные сообщения клиенту, чтобы клиент мог регулировать свою позицию и скорость.Проблема в том, что иногда клиент возвращается на позицию из-за задержки.

Я выполнил синхронизацию часов на клиенте и на сервере, поэтому я могу компенсировать положение X и Y с помощью разности часов и скорости, которую отправил сервер.Проблема в том, что это выглядит немного нервно.Как я могу синхронизировать эту вещь?Я пробовал разные вещи, но это не сработало.

Спасибо.

1 Ответ

2 голосов
/ 22 октября 2011

Вы описываете известную проблему с синхронизацией состояния игры клиент / сервер.Цитирование этой статьи :

Самая сложная часть предсказания на стороне клиента - обработка исправления с сервера.Это сложно, потому что исправления от сервера приходят в прошлом из-за задержки связи клиент / сервер.Нам нужно применить это исправление в прошлом, а затем вычислить результирующую исправленную позицию в настоящее время на клиенте.

Взгляните на эту статью, особенно на раздел, озаглавленный «Прогнозирование на стороне клиента».

...