Почему MMORPG по-прежнему используют несколько серверов?


18

MMORPG, некоторые MOBA, такие как League of Legends или даже StarCraft 2, обычно вынуждают вас выбрать сервер. Обычно это США, ЕС и ЮВА, в MMORPG много по каждому месту. Я вижу, что это было необходимо несколько лет назад, но теперь с появлением AWS и аналогичных предложений, которые позволяют беспрепятственно масштабировать свою «мощность сервера», почему по-прежнему существуют отдельные серверы?

Мой ход мыслей подобен этому (на примере «Звездных войн: Старая Республика»): - Вы всегда находитесь на одной планете, изолированном «экземпляре» от других планет. - Если на одной планете слишком много людей, SW: TOR создает новый экземпляр мира и помещает туда игроков. - Если вы покидаете мир / переключаете инстансы, у вас есть экран загрузки

Так почему же игра не может создать экземпляр для этой планеты? Этот экземпляр (и только этот) содержит ваши текущие данные в базе данных и управляет x игроками. Как только в этом экземпляре появятся игроки х-50, запустится новый сервер и в этом экземпляре появятся новые люди. 50 мест зарезервированы для перехода в вашу группу и т. Д.

Для всех трех основных регионов может быть случай, когда задержка будет низкой, но это позволит вам по-прежнему играть с другими игроками, например, с SEA, если вы можете жить с задержкой в ​​140 мс (что по-прежнему ничего не значит).

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

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

Есть ли какая-то конкретная причина, по которой это не сработает? Есть ли другие проблемы, которые мне не хватает?


А как насчет того, что многие из этих игр должны были бы переписать умеренные или большие секции своих движков, чтобы поддержать это? И это время и деньги лучше потратить на добавление контента.
Xavon_Wrentaile

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

Ответы:


12

MMORPG, некоторые MOBA, такие как League of Legends или даже StarCraft 2, обычно вынуждают вас выбрать сервер. Обычно это США, ЕС и ЮВА, в MMORPG много по каждому месту. Я вижу, что это было необходимо несколько лет назад, но теперь с появлением AWS и аналогичных предложений, которые позволяют беспрепятственно масштабировать свою «мощность сервера», почему по-прежнему существуют отдельные серверы?

AWS не такое очевидное решение, как кажется. Это может быть дорого, в некоторых случаях даже дороже, чем использование собственных центров обработки данных (например, для издателя их стоимость может быть амортизирована по нескольким продуктам). Кроме того, может возникнуть проблема с хранением конфиденциальных двоичных файлов и журналов на оборудовании вне вашего контроля. Наконец, фактическая вычислительная мощность не всегда является причиной разделения совокупности «сервер» в MMO.

Мой ход мыслей подобен этому (на примере «Звездных войн: Старая Республика»): - Вы всегда находитесь на одной планете, изолированном «экземпляре» от других планет. - Если на одной планете слишком много людей, SW: TOR создает новый экземпляр мира и помещает туда игроков. - Если вы покидаете мир / переключаете инстансы, у вас есть экран загрузки

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

В Guild Wars 2 есть два основных центра обработки данных, один в США и один в Европе - между этими центрами обработки данных существует некоторая взаимная болтовня (в основном для систем почтовой торговли и торговли), но в целом они существуют в этой конфигурации, поэтому игроки в Германия, Франция и так далее не должны страдать от более высокой задержки на игровых серверах в США. В центре обработки данных игроки сортируются по «домашним мирам» (или «осколкам» в общепринятых терминах); но одна из причин, по которой это делается, состоит в том, чтобы минимизировать количество игроков, которых клиент может видеть и о которых ему необходимо сообщить. Клиентский аспект этой проблемы не будет решен путем масштабирования до большего количества серверного оборудования. Комбинаторный взрыв на стороне сервера дополнительных путей сообщения может быть,

Есть ли какая-то конкретная причина, по которой это не сработает? Есть ли другие проблемы, которые мне не хватает?

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


@ Джош, не могли бы вы сказать, что права на распространение также являются важным фактором при принятии решения о создании и обслуживании отдельных серверов для отдельных регионов мира?
Тревор Пауэлл

Я не уверен, что вы имеете в виду, вы говорите о том, чтобы представить версию для ЕС в качестве другого SKU в целях корректировки цены (и, следовательно, хотите, чтобы серверная часть сервера также отличалась?).

7

В основном это о латентности.

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

Во-вторых, такие сервисы, как AWS, не предназначены для работы в режиме реального времени. Они рассчитаны на высокую пропускную способность за счет небольшой задержки. Если ваша веб-страница загружается на 250 мс дольше, чем обычно, то это никого не волнует, но если ваша игра обрабатывает сообщение на 250 мс дольше, чем обычно, это может серьезно повлиять на игровой процесс. Вот почему ММО почти всегда размещаются на выделенном оборудовании.

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

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


«Если у вас есть совершенно разные серверы, то, по крайней мере, здесь нет сюрпризов». Ну, тогда ты просто не можешь играть со своими друзьями. В SW: TOR он говорит вам, какой экземпляр является лидером группы, и вы можете немедленно переключиться на него. Я (лично) думаю, что этого достаточно. Спасибо за технические идеи, это действительно помогает мне понять проблемы под рукой!
mmlac

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

И, как упоминалось в моем комментарии к Филиппу, я не думаю, что вы могли бы управлять столицами и главными городами без инстансов.
mmlac

3

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

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

Что касается возможностей ЦП сервера, то, хотя современные машины достаточно сильны, всегда есть предел тому, что может обрабатывать одна машина, и поэтому необходимо создать разделение между мирами, чтобы защитить игру от перегрузок и позволить людям выбирать, какой мир они хотят играть, чтобы они могли играть со своими друзьями. Горизонтальное масштабирование - это не просто наличие машин, вам нужно, чтобы ваше приложение работало в горизонтально масштабируемой архитектуре, и это не так просто, когда у вас одновременно происходят тысячи «действий» с возможным влиянием друг на друга, и нужно синхронизировать все. Я думаю, что было бы очень трудно сделать это на нескольких машинах.


Ну, по крайней мере, в SW: TOR есть только влияние на текущий экземпляр, на котором вы находитесь. Это означает, что мировые боссы, которых вы убили в первом экземпляре, все еще не пострадают / не появятся в втором. Таким образом, разделение уже на месте. Я вижу причину для разных серверов на стороне питания, но под поясом, они могут также масштабироваться таким образом, чтобы у вас не было искусственных ограничений по населению. Время не должно беспокоить, потому что местные события посещают местные жители. Если вы оказались в сети, почему вы не должны быть допущены? Это просто не для вашего часового пояса.
mmlac

Я играл в Lineage2 на американском сервере, находясь в часовом поясе ЕС (до того, как они создали серверы ЕС), и я могу сказать, что это сука! Я должен был проснуться в 3 часа ночи, если хотел участвовать в рейдах и осадах замка, потому что тогда все это произошло. Так что время определенно вызывает беспокойство.

Да, время вызывает беспокойство, когда у вас только один сервер в неправильном часовом поясе. С моей идеей у вас есть люди онлайн по всему миру. Если вы хотите принять участие в этом рейде в 3 часа ночи, продолжайте! Прямо сейчас, вы SOL и должны ждать, пока «ваши» серверные набеги не начнутся - что может быть каждую субботу в 10 вечера - там, где у вас нет времени. Так что отправляйтесь на рейды ЕС в 3 часа дня. Имеет ли это смысл?
mmlac

2

Что не так с автоматическим копированием? Когда локация становится слишком населенной, вы просто помещаете 1000 игроков в 10 различных инстансов.

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

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

Но что, когда вы хотите встретить кого-то вне игры? Как настоящий друг, которого вы пригласили поиграть с вами в игру? Чтобы это произошло, вам понадобится возможность выбрать экземпляр при создании персонажа. Как из списка примеров с легко запоминающимися именами. К сожалению, имя «экземпляр» кажется обычному пользователю непонятным. Они не привыкли к этому слову. Не лучше ли использовать термин, к которому они привыкли? Термин как ... Сервер ?


1
Не путайте термин экземпляр и сервер. Экземпляры позволяют переключаться между собой. Серверы обычно атомарные. Нет и нет. Для встречи с людьми: поместите всех в один экземпляр, и в ваших столицах будет 20 000 человек. В то же время. Это не будет ни работать, ни быть желательным, поэтому вы все равно должны создавать экземпляры. Мой ход мысли заключался в том, чтобы сделать эти примеры глобальными, а не ограничиваться сервером.
ммлак

Но я думаю, что дело в том, что вы обычно хотите, чтобы люди имели предсказуемый опыт в намеренно разделенных областях. Вы должны разделить их по соображениям производительности, но они должны использоваться совместно со всеми, поэтому в идеале у вас должен быть фиксированный раздел (например, сервер), а не переменная (например, экземпляр). Очень немногие ММО, о которых я знаю, будут создавать такие области, потому что это считается важным для сообщества и группирующих причин, чтобы каждый мог видеть всех там.
Kylotan
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.