# Интеграция EOS Lobby

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

Вам также потребуется заранее настроенная версия приложения на нашей платформе для вашего проекта. В этом случае мы рекомендуем использовать плагин Edgegap для Unreal, чтобы ускорить процесс тестирования. Для получения дополнительной информации о плагине вы можете прочитать нашу документацию [здесь](broken://pages/7ce756a6a6500cb502a107cbe2d27efe70032a36).

{% 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]'
```

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.edgegap.com/ru/docs/tools-and-integrations/unreal-eos-lobby-integration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
