Ограничения многопользовательских игр p2p против клиент-сервера [закрыто]

12

Я читаю архитектуру многопользовательских игр.

Пока что большинство статей, которые я нашел, имеют дело с моделью клиент-сервер.

Я хотел бы знать, каковы ограничения для использования архитектуры p2p? Какой «класс» игр можно (или чаще) реализовать с его помощью? которые не? и в целом, каковы его основные отличия и ограничения от модели клиент-сервер.

spaceOwl
источник
связанные gamedev.stackexchange.com/questions/3887/…
Сиро Сантилли 法轮功 病毒 审查 六四 事件 法轮功
В качестве примера настоящей P2P-игры вы можете взглянуть на Gunz: The Duel, из-за которого возникают огромные проблемы в мультиплеере и со взломом.
fhyve

Ответы:

11

Вот мои два цента:

P2P :

  • Плюсы:
    • Нет необходимости в центральном сервере : это делает его намного дешевле и более жизнеспособным для малобюджетных инди-игр.
    • Очень хорошо масштабируется (до определенного момента, когда обычный клиент просто не может справиться с пропускной способностью).
    • Очень хорошо для распространения данных : подходит для игр, в которых пользовательский контент динамически синхронизируется (например, торренты).
    • Более стабильный: никогда не может случиться, что на сервере возникнут проблемы, и никто не сможет играть (зависит от реализации).
  • Минусы:
    • Сложно реализовать : гораздо сложнее создать надежную P2P-архитектуру, чем сервер-клиент.
    • В такой системе очень трудно предотвратить мошенничество , если только вы не назначите авторитетного партнера (что помешает любым преимуществам масштабирования от P2P).
    • Безопасность трудно достичь.
    • Интернет-соединение клиента может повлиять на игру и для других.
    • Задержка обычно намного больше (хотя она может быть лучше, например, при присоединении к интернет-игре с несколькими людьми из локальной сети).
    • Может потребоваться переадресация портов : P2P через Интернет требует переадресации портов, и не все технически склонны к этому. Кроме того, интернет-провайдер может предотвратить переадресацию портов, что увеличивает барьер для входа.

Сервер-Клиент :

  • Плюсы:
    • Легко реализовать: это так же просто, как и получается.
    • При хорошей реализации масштабируется очень хорошо (если работа может быть распределена по нескольким серверам).
    • Обмана можно легко избежать (по сравнению с P2P).
    • Меньшая задержка : Если сервер имеет прочную связь задержка может быть очень низкой.
    • Интернет-соединение игрока никогда не влияет на чужую игру.
  • Минусы:
    • Затраты денег на запуск серверов : определенно не подходят для бесплатной игры (если вы не позволите игрокам настроить выделенный сервер, но это может быть проблемой безопасности).
    • Если на сервере есть проблемы, у всех есть.

Я бы посчитал P2P хорошим выбором, потому что среднее интернет-соединение становится все лучше и лучше, в будущем задержка P2P может вообще не быть проблемой. Также многое о P2P зависит от конкретной реализации.

Есть также некоторые архитектуры, которые объединяют P2P с сервером-клиентом.

akaltar
источник
P2P Con: Matchmaking, если только это не игра по локальной сети, вы не знаете, как найти своего партнера. CS: Более низкая задержка не в том случае, если один игрок, скажем, в Германии, а другой в Австралии. Это все еще проблема 6й спустя. CS: На самом деле вы стоите не так много денег . Серверы становятся довольно дешевыми. Кроме того, вы можете начать с размещения игры на своем ПК, используя веб-прокси, чтобы указать на нее.
Badunius
2

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

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

Philipp
источник
Используя консенсусную модель, мошенничество не является более серьезной проблемой, чем в модели клиент-сервер.
Йерун
1

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

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

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

Другие игры, в которых используется одноранговая сеть, просто динамически выбирают одну из Peers для размещения игры (например, CoD MW2), что приводит к таким проблемам, как миграция хоста, если хост отключается.

Horstinator
источник
3
Что вы имеете в виду "не применимо в данный момент"? Есть много игр, которые используют P2P для работы в сети. Кроме того, «никто из сверстников не знает всех других сверстников» сформулировано неправильно. В то время как на практике необходимо поддерживать ретрансляторы для повышения надежности, вполне возможно иметь идеальную топологию для всех и каждого, особенно с небольшим количеством пиров или в локальной сети, где нет помех от маршрутизаторов NAT.
Тапио
@Tapio Конечно, можно построить p2p-сеть для игр, но она будет ограничена с точки зрения задержки, количества пользователей или среды, в которой она используется. По этой причине большинство игр не используют подход p2p.
Horstinator
@Horstinator Я знаю игру, в которой для игры в FPS используется P2P, она надежно поддерживает 50-100 игроков без каких-либо проблем с задержкой (это называется войной на крупье для всех, кому небезразлично)
akaltar
@akaltar Это открытый исходный код? Мне бы хотелось посмотреть, как они это делают.
Хорстинатор
@ Хорстинатор Слишком плохо, но, насколько я знаю, это не так. Вы можете спросить создателя на форуме (это очень маленький проект, поэтому кто-то должен ответить).
Акалтар