> For the complete documentation index, see [llms.txt](https://docs.edgegap.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.edgegap.com/zh/docs/tools-and-integrations/unreal-eos-lobby-integration.md).

# EOS 大厅集成

在 Unreal Engine 项目中将 Edgegap 与 Epic Online Services 大厅集成，以便将分组玩家分配到游戏服务器上。

本指南将向您展示如何在您的 Unreal 游戏项目中集成 Edgegap，以便与 EOS 大厅配合使用。某些步骤将要求您使用令牌向我们的 API 发送请求，而 `curl` 下面提供的命令将允许您预览它们各自的响应，以便您判断在代码中如何处理它们。在请求中使用令牌时，请务必保留 `令牌` 关键字。

{% hint style="success" %}
**我们建议先从** [Unreal Engine](/zh/unreal-engine.md) **构建游戏服务器的指南开始，然后再继续。**
{% endhint %}

{% hint style="warning" %}
作为一项安全措施，由于客户端会获得 API 令牌的访问权限，因此不建议在生产环境中让 EOS 大厅所有者直接向 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. 创建部署

一旦大厅所有者决定比赛已经准备就绪，就需要使用已存储的公网 IP 向 Edgegap 发送请求，以创建一个新的部署。

```
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。一旦回复中的部署 `当前状态` 设置为 `READY`，大厅所有者就需要将该部署的 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. 结束对局和部署

一旦比赛结束，大厅所有者就需要从 EOS 大厅属性中取消设置 IP 和端口值，这将通知其他所有人优雅地从服务器断开连接。如果应用程序配置了注入环境变量，也可以在此时用它们在内部终止该部署。

要从服务器外部终止该部署，可以改用如下 `curl` 所示的命令。

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

如果玩家仍留在大厅中，大厅所有者随后可以从请求新的部署这一步开始重复以上步骤，以便与同一批人发起重赛。
