# Интеграция лобби EOS

Это руководство покажет вам, как интегрировать Edgegap для работы с лобби EOS в вашем проекте на Unreal. Некоторые шаги потребуют отправки запросов к нашему API с использованием токена, и `curl` команды, приведенные ниже, позволят вам просмотреть каждый из их ответов, чтобы вы могли определить, как обрабатывать их в своем коде. При использовании токена в ваших запросах убедитесь, что сохраняете `токен` ключевое слово.

Вам также потребуется заранее настроенная версия приложения на нашей платформе для вашего проекта. В этом случае мы рекомендуем использовать плагин Edgegap для Unreal, чтобы ускорить процесс тестирования. Для получения дополнительной информации о плагине вы можете прочитать нашу документацию [здесь](https://docs.edgegap.com/ru/docs/tools-and-integrations/broken-reference).

{% hint style="warning" %}
В качестве меры предосторожности не рекомендуется позволять владельцу лобби EOS отправлять запросы напрямую к API Edgegap в рабочей среде, поскольку клиент получит доступ к API-токену. Вместо этого следует использовать отдельный сервис для управления этими запросами.
{% endhint %}

### 1. Получение и сохранение публичного IP игроков

Для начала каждый игрок, который присоединяется к лобби — включая владельца лобби — должен получить свой публичный IP и сохранить его как [свойство участника лобби](https://dev.epicgames.com/docs/game-services/lobbies#lobby-and-lobby-member-properties).

```
curl --location --request GET 'https://api.edgegap.com/v1/ip' \
--header 'Authorization: [EDGEGAP_API_TOKEN]'
```

### 2. Создать деплоймент

Когда владелец лобби решит, что матч готов начаться, необходимо отправить запрос на создание нового деплоймента на Edgegap, используя сохраненные публичные IP-адреса.

```
curl --location --request POST 'https://api.edgegap.com/v1/deploy' \
--header 'Content-Type: application/json' \
--header 'Authorization: [EDGEGAP_API_TOKEN]' \
--data-raw '{
    "app_name": "[EDGEGAP_APP_NAME]",
    "version_name": "[EDGEGAP_APP_VERSION]",
    "ip_list": [
        "[LOBBY_MEMBER_IP]"
    ]
}'
```

После этого владельцу лобби потребуется периодически опрашивать деплоймент, используя request\_id, предоставленный в ответе на запрос создания деплоймента. Как только в ответе у деплоймента появится `текущее_состояние` установлено в `ГОТОВ`, владелец лобби должен будет установить значения IP и порта деплоймента как [свойства лобби EOS](https://dev.epicgames.com/docs/game-services/lobbies#lobby-and-lobby-member-properties).

```
curl --location --request GET 'https://api.edgegap.com/v1/status/[REQUEST_ID]' \
--header 'Authorization: [EDGEGAP_API_TOKEN]'
```

### 3. Подключение к деплойменту

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

### 4. Завершение матча и деплоймента

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

Для завершения деплоймента извне сервера можно использовать запрос, подобный `curl` команде, показанной ниже.

```
curl --location --request DELETE 'https://api.edgegap.com/v1/stop/[REQUEST_ID]' \
--header 'Authorization: [EDGEGAP_API_TOKEN]'
```

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