Методы синхронизации в онлайн играх?

Добрый день %USERNAME%.


Появилось желание научится полноценно писать мультиплеер игры. Пока не важно какой язык. Нужна теория.

С остальным все понятно, но как раз с методами синхронизации все плохо.

Какие методы используются в современных играх?

Какой метод использован, например, в казуалке TeeWorlds?


Ах да, жанр пусть будет платформер.
  • Вопрос задан
  • 7902 просмотра
Пригласить эксперта
Ответы на вопрос 3
ertaquo
@ertaquo
В Teeworlds используется такой метод. С какой-то частотой передаются пакеты с состояниями всех игроков, которые являются как бы эталонными. На основе нескольких предыдущих состояний и физики игры рассчитываются действия каждого игрока (prediction). Если в консоли написать cl_predict 0, то будет все дергаться. А вообще, по слову
Ответ написан
@s0rr0w
Если брать CounterStrike, то там работает следующая логика

Каждый игрок имеет свой latency (сетевая задержка). На каждый момент времени сервер знает вектор движения, координаты, текущее действие игрока, среду, в которой он находится. По каждому из игроков рассчитывается предсказание результата, который был бы через половину времени задержки сигнала. Исходя из этого принимается решение, что игрок передвинется в нужную позицию, получит урон, умрет или еще что. Принятие решение не исполняется, пока не будет подтверждено, что игрок действительно остался в том месте, которое и было предсказано. Поэтому возникает ситуация, когда игрок с более низким latency умирает за углом от выстрела игрока с более высокими задержками.

Ситуация на сервере и в клиенте немного асинхронная, игрок может изменить свое местоположение в клиенте, но сервер узнает про это только через время.
Ответ написан
Комментировать
@sergei-grigorev
Простая теория про варианты синхронизации в сетевых играх
enepomnyaschih.livejournal.com/1610.html
Устранение эффекта запаздывания в сетевых играх (уже на более конкретном примере)
www.gamedev.ru/code/articles/?id=4257
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы