Star Citizen Live: Persistent Entity Streaming

В этом эпизоде Star Citizen Live Джаред Хакаби беседует с людьми, стоящими у истоков разработки технологии Persistent Entity Streaming (PES), которая представляет из себя основу патча 3.18. Это Бенуа Босежур, технический директор компании Turbulent и Пол Рендейл, технический директор в Cloud Imperium Games.

Прежде чем перейти к деталям, разработчики привели аналогию для описания процесса разработки патча 3.18 и Persistent Entity Streaming: это как взять небоскрёб, поднять его на 100 метров, вырыть новый, более прочный фундамент и опустить небоскрёб обратно, стараясь ничего не сломать внутри. Поэтому патч 3.18 — это патч, который закладывает фундамент для Server Meshing и проверяет, чтобы другие системы не были сломаны. Игроки не должны увидеть больших изменений в геймплее. На создание PES ушло почти два года, и разработчикам не терпится увидеть реакцию игроков.

В конце шоу Джаред объясняет, что Star Citizen Live — инструмент связи для передачи информации между командами разработчиков.

PES, что это такое?

На данный момент, когда игрок входит в Star Citizen, ему подбирается игровой сервер, который моделирует всю звездную систему Стэнтон.

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

Технология Persistent Entity Streaming направлена на то, чтобы вывести эти данные из памяти серверов и получить полное постоянство. Речь идёт о подключении каждого игрового сервера к базе данных, которая запоминает положение и состояние каждого элемента вселенной.

В дополнение к сохранению персонажей и кораблей игроков, мы получаем сохранение любого объекта и персонажа во вселенной. Речь идёт о миллионах объектов.

Глобальная база данных, сегменты данных и сервера

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

Сегмент данных — это группа серверов, которые разделяют одно и то же состояние вселенной. То есть в пределах сегмента игроки видят одно и то же, могут пересекаться и взаимодействовать друг с другом. Объект глобальной базы данных может одновременно находиться только в одном сегменте, но потенциально его можно увидеть с нескольких серверов в этом сегменте.

В патч 3.18 не включён Server Meshing, каждый сервер будет соответствовать одному сегменту данных. Долгосрочная цель Cloud Imperium Games — иметь как можно меньше сегментов, в идеале — один глобальный сегмент, если позволит технология.

Постоянство, отключение и удаление

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

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

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

Будет создан механизм для кораблей, которыми владеет игрок и которые находятся в настоящий момент в игре, они будут исчезать через определенное время (это позволит избежать неприятных ситуаций. Например, оставить друзей без корабля в открытом космосе, если игрока выкинет или он прожмет ALT+F4, испугавшись проиграть бой).

Можно будет вызывать больше кораблей на одного игрока (сейчас есть лимит в 3 корабля).

Однако, если в какой-либо области будет слишком большая плотность объектов, это скажется на производительности игры. Поэтому разработчики внедрили систему под названием Density Management, которая оценивает плотность объектов и удаляет их, когда это необходимо для поддержания производительности. Механизм удаления объектов умён, в том смысле, что существует порядок приоритетов для удаления объектов, а некоторые даже защищены от удаления. Так, объекты, которые упоминаются в текущей миссии, не могут быть удалены. Менее важные объекты (медицинский халат менее важен, чем оружие, например) будут удалены первыми. Объекты вне поля зрения будут удалены первыми в отличии о тех, на которые вы смотрите. И так далее.

Технология PES позволит вам возродиться именно там, где вы отключились. Однако в патче 3.18 будут использоваться те же правила, что и сейчас.

Постоянство сериализованных переменных

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

Падения сервера

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

У разработчиков есть трехступенчатый план действий для решения проблемы сбоев сервера:

  1. Начиная с патча 3.18, будет введён временный механизм для возвращения корабля в последнее известное серверу состояние. Если это не получится сделать, потребуется страховка.
  2. В следующей итерации (до введения объединения серверов) система будет перезапускать сервер в состояние перед его сбоем, и игроку будет предложено вернуться на место где он был перед падением сервера.
  3. Как только сервер будет создан, игра автоматически перенесёт игрока на свободный сервер в пределах сегмента.

Обратите внимание, падение сервера не будет иметь никаких последствий для объектов, расположенных на земле или для симуляции вселенной.

Система подбора игроков (matchmaking)

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

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

Сегменты и строительство базы

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

Редизайн грузового отсека

Технология редизайна грузов, всё ещё запланированная на патч 3.18, является необходимым условием для переработки, пример её применения можно было увидеть в ISC на этой неделе: ящики с материалами, изготовленные в Reclaimer и Vulture, перекочевали в Multitool.


Перевод: Eris

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

Источник: Star Citizen Live: Persistent Entity Streaming