2010-08-22 1 views
2

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

или на большинстве из них вы видите каждую деталь, которую игрок делает каждую секунду, и оба игрока видят то же самое движение на своем клиенте? как игровым серверам удается отправлять эти ходы всем клиентам (игрокам) в одно и то же время?

ответ

3

Они не видят их в одно и то же время.

Сервер определит, попал ли выстрел или отправил обновления клиентам. Затем клиенты будут рисовать пули, кровь и т. Д.

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

С их точки зрения они работают плавно, но из-за латентности ваш клиент не получает обновление достаточно быстро.

1

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