Многопользовательский стек за MMORPG Pantheon: Восстание павших

EMILY RAINE / UNITY TECHNOLOGIESContributor
Jun 2, 2025|7 Мин
Тронный зал в Пантheon: Восстание павших от Visionary Realms
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

Нахождение своего пути является основой игрового процесса вПантеоне: Восстание павших – игроки могут идти куда угодно, взбираться на что угодно, прокладывать новые маршруты и следовать своему любопытству, чтобы найти приключения. Это не так уж и отличается от того, как его создатели, Visionary Realms, подходят к созданию этой MMORPG – они делают это по-своему.

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

Создание любой многопользовательской игры – это вызов, но создание высокосоциальной онлайн-игры такого масштаба – это эпическое приключение. Мы поговорили с ведущим программистом Кайлом Ольсеном о том, как команда использует Unity для соединения игроков в этом фантастическом мире MMORPG.

Так что же делает Пантеон: Восстание павших уникальным по сравнению с другими MMO-играми?

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

Как вы управляете синхронизацией между опытом игрока и конкретными мировыми инстанциями?

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

Открытая дверь в каменной комнате в Пантеоне: Восстание павших от Visionary Realms
Пантеон: Восстание павших от Visionary Realms

Как вы подходите к загрузке ресурсов для этого гигантского мира?

У нас есть этап, на котором мы выпекаем наши континенты в эти плитки, и у нас есть разные бэкенды, которые мы можем подключить к этому. У нас есть один, который просто выводит стандартные префабы, и у нас есть один, который выводит субсцены, которые мы использовали до Unity 6, а затем у нас есть полные сцены Unity, которые вы можете загружать аддитивно, так что вы можете выбрать, как хотите выводить свой контент. Перед Unity 6 мы отошли от префабов и начали загружать субсцены DOTS и использовать это, построенное на BRG.

У нас также есть вывод, который может рендерить непосредственно в нашу собственную пользовательскую группу пакетного рендеринга, просто используя скриптовые объекты и управляя нашими собственными данными. Таким образом, мы смогли экспериментировать и тестировать разные варианты и посмотреть, что дает лучшую производительность клиента. До Unity 6 мы выводили и рендерили весь континент с субсценами, но с Unity 6 мы на самом деле вернулись к использованию префабов с Instantiate Async и Addressables для управления всем.

Мы используем Резидентный рендерер и окклюзионное отсечение GPU, что в итоге дало даже лучшую производительность, чем субсцены и наша собственная группа пакетного рендеринга – я предполагаю, что окклюзионное отсечение GPU просто не поддерживается некоторыми другими путями рендеринга в данный момент. Таким образом, мы довольно много перемещались, и мы остановились на Addressables для управления всей памятью и загрузкой ресурсов, а обычные префабы Instantiate с Резидентным рендерером GPU, похоже, обеспечивают лучшую производительность на стороне клиента в данный момент.

Вы обновились до Unity 6, чтобы воспользоваться Резидентным рендерером GPU, конкретно?

На самом деле, я действительно хотел это для окклюзионного отсечения. Я не знал, что только определенные пути рендеринга используют окклюзионное отсечение, поэтому мы пытались использовать это с тем же рендерингом субсцен, который мы использовали до Unity 6, и осознали, что ничего на самом деле не отсечено. Поэтому мы решили вернуться к выводу префабов, чтобы посмотреть, как это выглядит с Резидентным рендерером, и окклюзионное отсечение и FPS увеличились.

У нас были некоторые проблемы в начале, потому что Instantiate Async не был доступен до Unity 6, поэтому у нас были некоторые задержки, когда мы создавали наши плитки. Было довольно много вещей, которые создавались, но переключение на Instantiate Async после того, как мы исправили несколько ошибок, избавило нас от задержки при загрузке, и общая частота кадров была выше после загрузки, так что это было просто выигрыш-выигрыш.

Были ли какие-либо действительно замечательные приросты производительности, которые пришли с переходом на Unity 6?

Все, о чем я говорил до сих пор, было ориентировано на клиента, так что наши игроки испытали эти выигрыши. Что касается разработчиков, стабильность и производительность редактора значительно возросли. Стабильность редактора в Unity 6 значительно возросла - теперь очень редко происходят сбои. Это само по себе, по крайней мере с точки зрения кодирования, является огромной победой. Он определенно кажется более стабильным в целом.

Как вы справляетесь с внесением изменений и обновлений, не ломая всё?

Мы строим с Addressables, используя метки очень активно, и мы делаем упаковку Addressable по меткам. Таким образом, если мы редактируем конкретную зону или актив в зоне, или, например, VFX, связанный с заклинанием или чем-то подобным, только те пакеты, которые касаются этой метки, обновляются.

А затем, наша собственная система доставки контента, у нас есть игра на Steam и наш собственный патчер, и обе они обрабатывают дельта-изменения, когда мы просто доставляем небольшие обновления через эти Addressable пакеты. Неткод требует, чтобы в первую очередь была подключена одна и та же версия, поэтому библиотека сетевого кода автоматически обрабатывается в процессе рукопожатия.

Несколько игроков сражаются с драконом в Pantheon: Восстание павших от Visionary Realms
Пантеон: Восстание павших от Visionary Realms

Какой совет вы бы дали кому-то, кто пытается справиться с MMO-игрой или другим амбициозным многопользовательским проектом?

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

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

Какое самое захватывающее техническое достижение вашей команды с этой игрой?

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

Целый пакет вместе является довольно новой территорией – когда есть MMO, она должна ощущаться как MMO по духу, с множеством людей вокруг, занимающихся своими делами. И мы это сделали – я думаю, лучше, чем практически любое MMO на Unity когда-либо. Я думаю, мы можем похлопать себя по спине за это.

Получите больше информации от разработчиков на странице ресурсов Unity и здесь на блоге. Посмотрите Пантheon: Восстание павших в раннем доступе на Steam.