Насколько осуществимой будет полностью / полуавтономная P2P-сеть для многопользовательских игр?
Я размышлял над тем, как можно было бы создать систему P2P (как BitTorrent для файлов) для игры в многопользовательские игры. Идея состоит в том, чтобы удалить традиционный сервер из многопользовательской архитектуры. Я понимаю, что какой-то сервер может быть необходим для инициирования связи и отправки обновлений для всего мира и т. Д., Но меня интересует, как вы могли бы снизить нагрузку и нагрузку на полосу пропускания на сервере.
Кстати, это касается игры любого размера, от игры в шашки для двух игроков до FPS с более чем 30 игроками.
Я сумасшедший?
5 ответов
Я думал о том же. У меня есть давнее предубеждение, что распределенные системы должны быть распределены, без необходимости центрального контроллера. Проблема с MMO или подобной игрой заключается в том, что каждый игрок должен видеть один и тот же "мир". Вы сталкиваетесь с проблемой, аналогичной теории относительности Эйнштейна и "одновременности": чем дальше друг от друга, тем больше отличается ваш взгляд на мир.
В общем, решение заключается в том, что вы должны иметь возможность передавать информацию другим клиентам в вашем непосредственном окружении - в игровом пространстве, а не обязательно в физическом пространстве - достаточно быстро, чтобы обновления появлялись одновременно для всех локальных игроков.
Я подозреваю, что ответ заключается в том, чтобы иметь "сервер" или модель мира на игрока, а не представлять игроков как векторы на мировом сервере.
Большая проблема не в пропуске или задержке или распределении изменений в игровом состоянии. Большая проблема - доверие.
Если я скажу вам, что убил монстра, как вы убедитесь, что я действительно это сделал? Как вы проверяете, что я на самом деле 45-го уровня? Как вы проверяете, что я не телепортируюсь по всему миру? Помните, что вы не можете проверить сервер на каждую мелочь: это то, чего мы пытаемся избежать!
Вам нужны игроки, наблюдающие за игроками, и даже тогда они могут работать вместе, чтобы обманывать. Я действительно сомневаюсь, что кто-нибудь в ближайшее время разработает надежную p2p MMO.
Есть много вещей, которые следует учитывать в вашем вопросе:
1) Распределенный мастер - кто тогда запускает игру? где я могу найти первый узел? Что если все решат закрыть свой P2P-клиент одновременно? конец света?
2) Распространенные правила - кто может подтвердить, что игрок 77 из 102235 убил монстра в точке x,y,z? Я вижу БОЛЬШИЕ проблемы со взломом / мошенничеством без "командира"...
3) Задержка - когда клиент получил все данные? что если интернет сломается? или в игре по локальной сети, что, если жесткий диск умирает - это сумасшедшая игра для всех остальных?
Я действительно считаю, что мысль о P2P интересна, но, как и во всех соревнованиях, я считаю, что нам понадобится "судья", который сможет справиться с правилами, потому что, когда вы соревнуетесь с "анонимными людьми", тогда "хорошо обманывать" много думает.
Я думаю, что какой-то вид грид-вычислений может быть способом сделать это, но, опять же, если некоторые из них выпадают или слишком медленны для рендеринга мира и отправки результатов обратно... тогда у нас вся игра "отстает".. = ужасная игра для всех... это уже наблюдается во многих играх FPS с master -сервером. Если сетевой протокол не справляется с задержкой слишком хорошо, становится сложнее ударить бегущего человека, или они появляются из ниоткуда, стреляя вам в лицо.
Дорогое решение может заключаться в том, чтобы иметь "субсерверы" (прокси-игровые серверы), где у вас есть некоторые данные, более близкие к игрокам. Я полагаю, это потребует от вас доступа к большому количеству серверных серверов по всему миру (как это делает Blizzard с WOW), или вам придется изобрести какой-то интеллектуальный "P2P-хост", который будет обновляться до "субсервер", когда пропускная способность будет достаточно большие и достаточно близкие игроки в ближайшем окружении (всегда проверяя отставание с его точки зрения...)... теперь давайте скажем, что это было возможно... что если линия между этим субсервером и основным игровым циклом разорвана глобально снова?
LOL... это может продолжаться... это все больше и больше похоже на общие проблемы с Интернетом:-)
Удачного кодирования...!
Я, конечно, не эксперт, но это звучит немного безумно для меня. По моему опыту, вам нужны выделенные игровые серверы из-за пропускной способности и производительности. С P2P вы потеряете обе эти вещи. На мой взгляд, P2P хорош для нескольких вещей. Распространение файлов и исследований среди них. Тем не менее, эти 2 вещи не нуждаются в данных в реальном времени. Если бы у вас был какой-то массовый многопользовательский игровой мир, то вы могли бы использовать P2P для распространения игровых файлов и, возможно, даже перегрузить число.
Я бы сказал, что есть возможности, но их количество кажется ограниченным, хотя и потенциально мощным.
Я думаю, что это возможно теоретически, но до этого еще далеко.
Как отмечалось в других постах, задержку можно было поддерживать на низком уровне, гарантируя обновления только другим игрокам, которые находятся поблизости. Это было сделано в течение многих лет в распределенных играх.
Потеря данных может быть сохранена на допустимых уровнях, позволяя нескольким узлам отвечать за каждый фрагмент данных.
Что касается проблемы доверия, то можно было бы иметь протокол, по которому игрок мог бы "бросить вызов" другому игроку, чтобы раскрыть мошенничество. Т.е. претендент продублирует некоторую часть вычислений других игроков и попросит сравнить результаты. Уже существуют криптографические протоколы, которые делают подобные вещи, но я не знаю деталей или осуществимы ли они на практике.
Реальная проблема, на мой взгляд, в том, что нет особых причин для развития, таких как система. Стоимость будет высокой и добавит сложности, но игровой процесс (продукт) не будет значительно улучшен. Чтобы быть жизнеспособным, деятельность, направленная на сохранение денег, должна экономить больше денег, чем стоит.