Насколько осуществимой была бы полностью / полуавтономная P2P-сеть для многопользовательских игр?

StackOverflow https://stackoverflow.com/questions/597303

  •  11-09-2019
  •  | 
  •  

Вопрос

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

Кстати, это относится к игре любого масштаба, от игры в шашки для двух игроков до игры FPS с участием более 30 игроков.

Я сумасшедший?

Это было полезно?

Решение

Я думал о том же.У меня давнее предубеждение, что распределенные системы должны быть распределенный, без необходимости использования центрального контроллера.Проблема с MMO или подобной игрой заключается в том, что каждый игрок должен иметь возможность видеть один и тот же «мир».В конечном итоге вы сталкиваетесь с проблемой, похожей на эйнштейновскую теорию относительности и «одновременность»: чем дальше вы находитесь друг от друга, тем больше различается ваш взгляд на мир.

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

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

Другие советы

Большая проблема не в пропускной способности, задержке или распространении изменений в состоянии игры.Большая проблема – доверие.

Если я скажу вам, что убил монстра, как вы подтвердите, что я действительно это сделал?Как проверить, что у меня действительно 45 уровень?Как вы проверяете, что я не телепортируюсь по всему миру?Помните, что вы не можете проверить сервер на предмет каждой мелочи:это то, чего мы пытаемся избежать!

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

В вашем вопросе есть много вещей, которые следует учитывать:

1) Распределенный мастер - кто тогда запускает игру?где я могу найти первый узел?что, если все решат одновременно закрыть свой P2P-клиент?конец света?

2) Расплывчатые правила – кто может подтвердить, что игрок 77 из 102235 убил монстра в точке x,y,z?Я вижу БОЛЬШИЕ проблемы во взломе/читерстве без «главнокомандующего»…

3) Задержка — когда клиент получил все данные?а если интернет сломается?или в игре по локальной сети, что если жесткий диск выйдет из строя - будет ли это безумием для всех остальных?

Я действительно считаю, что идея P2P интересна, но, как и во всех соревнованиях, я считаю, что нам понадобится «судья», который сможет соблюдать правила, потому что, когда вы соревнуетесь с «анонимными людьми», тогда «мошенничать» — это нормально. много думает.

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

Дорогое решение может состоять в том, чтобы иметь «субсерверы» (прокси-игровые серверы), на которых некоторые данные будут находиться ближе к игрокам.Я считаю, что для этого вам потребуется доступ ко множеству серверных ферм по всему миру (как это делает Blizzard с WOW), или вам придется изобрести какой-то интеллектуальный «хост P2P», который обновится до «субсервера», когда полоса пропускания уменьшится. достаточно большой, и достаточно игроков находятся близко к нему (всегда проверяя отставание с его точки зрения...)...теперь скажем, что это было возможно..что, если линия между этим субсервером и основным игровым циклом снова оборвется во всем мире?

РЖУ НЕ МОГУ...это может продолжаться...это всё больше похоже на общую беду с интернетом :-)

Приятного кодирования...!

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

Я бы сказал, что возможности есть, но их количество кажется ограниченным, хотя потенциально мощным.

Я думаю, что теоретически это, вероятно, возможно, но до этого еще далеко.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top