2016-04-18 3 views
-1

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

Но Я пришел к следующему:

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

Так что, интересно, как мне его реализовать?

Есть ли шаблон дизайна?

ответ

1

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

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

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