Архитектура игры P2P присоединяется к середине игры - PullRequest
0 голосов
/ 11 сентября 2018

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

Я читал эту статью: https://gafferongames.com/post/what_every_programmer_needs_to_know_about_game_networking/

И этот параграф говорит об ограничениях p2p для игр:

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

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

Может кто-нибудь сказать мне, почему это? Это потому, что может быть слишком много данных для передачи, и это может создать проблемы с задержкой, или есть другая проблема?

1 Ответ

0 голосов
/ 12 сентября 2018

Объем передаваемых данных на самом деле не самая большая проблема, но, безусловно, может оказать влияние.

Чтобы упростить ситуацию, я приведу пример того, что следует делать вмодель клиент / сервер, т.е. игроки подключаются к центральному серверу, который запускает игровой движок и отправляет информацию о состоянии игры на компьютеры игроков.Задача сервера состоит в том, чтобы поддерживать максимально возможную согласованность представления клиентов об игре, т. Е. Здоровье / положение игрока, положение объектов на карте и т. Д.

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

В случае P2P-игрыВ модели, где сервер является одной из машин игроков, проблема, связанная с сетью, усиливается, так как обычно серверы имеют лучшее подключение к Интернету по сравнению с вашим средним домашним хозяйством.Вышесказанное остается в силе.

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

...