Сессия

circle-info

Прежде чем переходить к этому разделу, важно, чтобы вы уже ознакомились с развертываниями. Вот ссылки, которые вам нужно прочитать заранее: Начало работы и Развёртывание.

Сессии выступают уровнем внутри развертывания и используются, когда необходимо управлять сокетами или доступным местом в развертывании. Мы обсудим детали позже, но вот типичные сценарии использования, где сессии дополняют развертывания:

  • Управление входом и выходом игроков или групп игроков в пределах развертывания.

  • Создание нескольких матчей или игр внутри одного развертывания.

circle-exclamation

Сравнение подходов развертывания и сессий для управления игровыми серверами

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

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

circle-info

В стандартном потоке развертывания каждая игра требует нового развертывания.

Поток управления развертываниями

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

Потенциальная проблема этого потока

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

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

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

Сессии разработаны, чтобы упростить процесс разработки, предоставляя встроенный функционал для управления игроками, матчами и игровыми экземплярами. Тем не менее, стоит отметить, что также возможно реализовать систему «типа сессий» в вашем бэкенде, используя развертывания без сессий при необходимости. Сессии специально предназначены для облегчения описанных выше сценариев использования.

В следующем разделе мы более подробно рассмотрим концепцию сессий.

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

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

circle-info

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

Создание пустого развертывания для размещения сессий

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

Создание запроса на сессию

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

Добавление нескольких игроков одновременно

Сессии позволяют добавлять нескольких игроков в одно развертывание, включая их IP-адреса в одном и том же запросе на сессию.

circle-info

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

Удаление игроков из развертывания

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

Заполнение развертывания новой сессией

И теперь новый игрок может занять освободившееся место, отправив новый запрос на сессию.

Теперь, когда вы лучше понимаете сессию, мы рассмотрим, как они работают и некоторые особенности.

circle-check

Последнее обновление

Это было полезно?