В MMORPG Pax Dei один шард будет вмещать от 7 000 человек — много полезной информации от разработчиков
Разработчики MMO-песочницы Pax Dei из студии Mainframe Industries поделились с геймерами информацией о том, как будут разделяться серверы игры, а также ответили на вопросы по технической части. Мы перевели этот материал для вас.
***
Знакомство с шардами, серверами и зонами Pax Dei
Как вы, возможно, знаете, мир Pax Dei состоит из нескольких регионов (Галлия, Анатолия, Готия.), разделенных на несколько провинций (Ancien, Merrie, Kerys). Провинция — это очень большая географическая область с несколькими долинами, перемежающимися крупными горными хребтами. В отдельных провинциях, называемых heartland provinces, есть несколько долин, которые мы называем домашними, и именно в них вы можете построить дом. И, конечно, у вас также есть темные подземелья и пещеры, которые в основном находятся под поверхностью этих провинций.
Но как эти географические особенности отображаются на реальных физических серверах и как они влияют на игру?
Миры/шарды
Первым выбором, с которым вы столкнетесь при создании нового персонажа в Pax Dei, будет выбор конкретного экземпляра мира, который также принято называть шардом.
Несмотря на то что мир Pax Dei географически огромен, он может вместить только определенное количество шардов. Поэтому мы создаем несколько копий мира, каждая из которых идентична, но полностью независима от других с точки зрения реального населения. Каждую такую копию мы называем шардом.
По нашим оценкам, в начале игры максимальное количество игроков на одном шарде будет составлять около 7 000 человек. Один шард работает полностью в рамках одного физического облачного хостинг-центра. Мы будем запускать шарды в различных регионах доступности по всему миру, например, в Северной Америке и Европе.
Таким образом, факторы, которые в основном будут влиять на ваш выбор шарда, следующие:
- Задержка до вашего основного игрового компьютера.
- Наличие мест, так как некоторые шарды могут быть заполнены.
- Шарды, где у вас уже играет много друзей.
Зональные серверы
С вычислительной точки зрения шард состоит из большого набора различных серверов и облачных сервисов, каждый из которых выполняет определенную функцию. Самые многочисленные из них — это то, что мы называем серверами зон. Это связано с тем, что моделирование всего мира слишком тяжелое в вычислительном отношении, чтобы его можно было выполнить с помощью одного экземпляра оборудования, и поэтому оно разделено на более мелкие вычислительные блоки, которые мы называем зонами. Сервер с одной зоной — это выделенный сервер Unreal, который обрабатывает моделирование определенной части мира, например, одной домашней долины.
В любой момент времени вы как игрок автоматически подключаетесь к серверу зоны. Всякий раз, когда вы пересекаете границу зоны, ваше соединение автоматически перемещается на соседний сервер зоны. Это то, что мы называем переходом зон.
В большинстве случаев эти переходы должны быть плавными, за исключением нескольких важных пунктов:
- Переходы между разными провинциями или подземельями обычно требуют некоторого времени загрузки, поскольку клиент загружает совершенно новую карту.
- В настоящее время другие игроки или NPC не видны за пределами зоны.
Экземпляры зон
Как упоминалось выше, сервер зоны — это выделенный сервер Unreal, обрабатывающий симуляцию небольшой части мира. В конце концов, сервер зоны также может быть перегружен слишком большим количеством игроков.
В настоящее время этот предел составляет около 150 игроков, но ожидается, что он изменится с улучшением оборудования и оптимизацией. Чтобы избежать необходимости закрывать зоны при достижении максимального количества игроков, например, в часы пик, мы вводим концепцию экземпляров зон. Механизм таков, что когда мы превышаем максимальное количество игроков в зоне, то распределяем весь набор игроков внутри заданной границы зоны между двумя или более отдельными экземплярами зоны. В каждом экземпляре зоны фактически работает отдельный сервер зоны для одной и той же зоны, но игроки внутри данного экземпляра зоны не могут взаимодействовать с игроками в другом экземпляре.
Это разделение применимо только к прямому взаимодействию с игроками, но сохранение зданий, помимо прочего, работает в разных экземплярах, то есть здания видны всем. Как только уровень населения зоны падает, экземпляры объединяются. При регулярной работе после того, как шард достиг зрелости, создание экземпляров должно происходить только в исключительных случаях, но вначале это может быть обычным явлением.
Помимо серверов зон, остальная часть серверной части обеспечивает координацию между серверами зон, логику транзакционных игр, связь и хранение данных. Бывают ситуации, когда клиенты подключаются напрямую к этому серверу через безопасные API, например, для аутентификации. Тем не менее в большинстве случаев именно серверы зоны взаимодействуют с серверной частью с конкретными службами, такими как служба инвентаризации, управление ресурсами и т. д.
Вся эта инфраструктура затем развертывается, координируется и масштабируется с помощью архитектуры Kubernetes, работающей поверх облачной инфраструктуры.
FAQ
Что является самой большой проблемой при работе над такой MMO, как Pax Dei?
Самая большая проблема заключается в том, насколько сложен стек технологий. Весь технологический стек состоит из различных компонентов, некоторые из которых являются компонентами сторонних производителей (например, Unreal Engine или PostgresDB), а другие полностью разработаны собственными силами. Большинство из них не предназначены специально для использования в MMO.
Функции этих компонентов варьируются от физического моделирования, рендеринга графики, поведения искусственного интеллекта до целостности транзакций и высокой масштабируемости серверных транзакций. Они охватывают несколько языков программирования и должны быть созданы и развернуты в идеальной гармонии, чтобы все вместе функционировало так, как задумано.
Наконец, тестирование MMO без реальных игроков затруднено, поэтому так важно раннее пользовательское тестирование.
Будут ли шарды для разных языковых зон или все игроки смогут играть вместе?
Мы начнем без особых языковых ограничений, но, вероятно, появятся некоторые шарды с явным языковым уклоном. Мы приложим все усилия, чтобы предоставить игрокам такого рода метаданные, чтобы помочь им принять обоснованное решение, к какому шарду присоединиться.
Мы также не хотим заставлять вас играть в определенном регионе. Мы имеем в виду, что если вы являетесь европейским игроком и хотите играть с друзьями в США, вам должно быть разрешено это делать (но вы должны понимать, что пинг будет высоким).
Будут ли у нас какие-то шарды, посвященные PvE без какого-либо PvP-взаимодействия?
Нет, на данный момент планируется, что все осколки будут идентичны.
Сколько игроков будет на шард?
Мы начнем с цели около 7000 игроков на шард (в 3-4 центральных провинциях). По мере того как мы подключаем к сети больше глубинных провинций, максимальная численность населения на осколок будет соответственно расти.
Как вы планируете избежать очередей, учитывая ожидаемый высокий спрос при запуске?
Мы можем разворачивать дополнительные шарды по мере необходимости, чтобы вместить все больше и больше игроков, но механизм создания экземпляров зон также поможет снизить начальную нагрузку на каждый шард.
Какие у вас планы по минимизации задержек (пинга) у игроков?
Шарды будут доступны в разных географических регионах, поэтому новые игроки смогут найти шард, географически близкий к ним. Более того, боевая система и типичные взаимодействия в MMO таковы, что они более терпимы к задержкам по сравнению с шутерами от первого лица.
Будет ли у вас еженедельное техническое обслуживание? Будет ли в каждом регионе соблюдаться часовой пояс по-разному?
Мы спроектировали нашу систему таким образом, чтобы она не нуждалась в обслуживании, за исключением крупных обновлений клиента и сервера, но на данный момент нам все еще нужно делать некоторые простои, а иногда и полностью стирать миры. Выбранные временные рамки, безусловно, будут направлены на то, чтобы свести к минимуму неудобства для игроков.
Как вы будете управлять населением Миров? Планируете ли вы разрешить перенос персонажей?
Да, безусловно. Это необходимо для качества жизни игроков и управления населением.
Но давайте разобьем этот вопрос на разные случаи: перемещение персонажа из одного Мира в другой довольно тривиально, поэтому мы, несомненно, разрешим это (в качестве дополнительной услуги или бесплатно, если цель состоит в том, чтобы обесценить население данного мира).
Перемещение участка и зданий на нем — гораздо более сложная задача. Мы не можем просто перенести здания, поскольку в новом мире может не быть свободного места, и мы не можем легко переместить здания в «похожее пространство», потому что структура зданий зависит от местности, на которой они находятся. В идеале у нас должна быть система, которая позволит вам сохранить структуру здания в виде чертежа или, по крайней мере, поместить все ее компоненты в волшебный мешок (пожалуйста, не спрашивайте о лоре, стоящем за этим).
Наконец, что касается переноса клана, мы сейчас рассматриваем его, но по множеству причин (приоритеты, рабочая сила, незавершенные функции) мы не можем сказать, что это произойдет в ближайшее время. Более подробную информацию о трансферах и их доступности мы предоставим позже.
Если я хочу играть с друзьями, как мы можем быть уверены, что окажемся в одном мире? Могу ли я присоединиться к ним, даже если их мир заполнен?
Когда мир становится перенаселенным, он будет заблокирован. Итак, наша цель — найти баланс между предотвращением перенаселенности и обеспечением того, чтобы друзья могли легко играть вместе.
Ключевым моментом здесь является разумное использование индикаторов, которые мы будем использовать, и того, как мы направим людей к конкретным мирам.
В критических ситуациях мы хотели бы иметь возможность бесплатно предлагать перенос персонажей в населенный мир, поскольку это один из лучших способов уменьшить перенаселенность. Более подробную информацию мы предоставим позже.
Как вы относитесь к сторонним программам и дополнениям?
Мы открыты для сторонних программ и дополнений (при условии, что они не связаны с мошенничеством), поскольку мы понимаем, что эти вклады часто могут улучшить взаимодействие с пользователем и предоставить ценные функциональные возможности. Однако на данный момент у нас, к сожалению, нет необходимых ресурсов для оказания им должной поддержки.
Мы искренне надеемся, что в обозримом будущем мы сможем оказать вам ту поддержку, которую вы заслуживаете. Будьте уверены, мы будем держать вас в курсе и поделимся дополнительной информацией по мере ее поступления.