
EOS大厅与会话,以及如何添加专用服务器
EOS Lobbies 创建了针对点对点游戏的持久实时玩家组,而Sessions则充当没有内置功能的轻量级逻辑容器。
Lobbies 包含语音聊天、主机迁移和所有者控制,但无法直接支持专用服务器,因此缺乏它们的安全性——除非与 Edgegap 的编排结合使用。
Sessions 可以启动专用服务器而无需玩家主机,但缺乏在 lobbies 中发现的更丰富的功能。
使用 Edgegap 的 對局配對,开发人员可以将 EOS Lobbies 与专用服务器配对,提供基于延迟、技能、区域或自定义属性的對局配對(所有这些EOS Matchmaking缺乏)。添加专用服务器确保玩家安全并防止作弊者和黑客。
存在一个完整的集成流程(即身份验证、大厅创建、组建、對局配對、部署、回填和比赛拆解),使开发人员能够使用 EOS + Edgegap 运行可扩展且安全的多人游戏会话。
Epic Online Services(“EOS”)大厅是Epic Game的解决方案,用于创建玩家之间的持久连接,以共享“玩家状态”并进行实时更新。
特别是在多人游戏架构的背景下,大厅被用于在部署传统由玩家托管的游戏服务器(即点对点,通常简称为“P2P”)之前将玩家聚集在一起。玩家托管的服务器已被证明会引入作弊者和黑客的问题。
就用户的流程而言,其功能如下:
首先,玩家必须创建一个大厅,使其成为大厅的第一个成员和所有者。
然后,玩家(或游戏)将大厅设置为“可用”,以便其他玩家加入。可以通过以下方式设置“可加入”:
直接邀请系统;
最常见的是,通过服务器浏览器功能“发现”。
EOS本身主要用作Unreal Engine(如Unreal 5)的主要后台解决方案,其集成在其文档中可用。
-> 传统上,EOS大厅不能用于专用服务器。
幸运的是,Edgegap的平台提供了与基于逻辑的對局配對和专用服务器一起使用EOS大厅的能力(见下文操作方法)。
EOS大厅与会话
经常被相互混淆,EOS提供“大厅”和“会话”。它们本质上相似,并且为了增加混淆,共享了许多功能。
大厅和会话的完整细分在EOS文档中可用。
正面对比
EOS大厅和会话之间的主要区别在于:
会话没有内置功能;它们只是保持会话玩家数量准确的“逻辑”,并防止其他玩家尝试在会话达到最大玩家容量时加入。会话由开发人员管理,并且可以在没有玩家的情况下用于部署专用服务器。
大厅具有语音、主机迁移和所有者管理权限。然而,它们通过EOS后端管理,仅由玩家创建(使其更适合玩家托管的游戏)。
因此,虽然大厅更适合用于点对点网络的多人游戏,但正如Epic Games指出的,有时玩家的网络有局限性,不允许所有流量通过其防火墙。这有时会导致大厅内的玩家出现网络连接问题,从而抵消了大厅的预期使用。
EOS大厅和会话的共享功能
大厅和会话共享以下功能:
固定属性和用户属性,你可以填充这些属性以最佳符合游戏需求。
玩家可以通过你标记为公开的固定属性和用户属性搜索大厅或会话。
已经在大厅或会话中的玩家可以邀请其他玩家加入。
玩家可以加入朋友所在的出席大厅或出席会话。
玩家可以同时加入多个大厅和会话。
EOS大厅的功能
语音聊天集成。请参阅EOS 大厅语音通信。
主机迁移:所有者可以在离开或连接掉线时转移所有权。
所有者管理:所有者可以从大厅移除(踢)玩家。
EOS会话功能
除了上述共享功能外,会话中没有可用的附加功能。
何时使用EOS大厅
如果你的游戏设计要求设置玩家控制的對局配對偏好(例如角色选择、难度、地图等),请使用大厅服务。当玩家加入和离开大厅时,他们还会更新對局配對组,为稍后寻找比赛做好准备。
以下是你应该考虑的主要决策因素:
游戏设计 – 功能 / 要求 | 赛前大厅(EOS大厅) | 對局配對(带逻辑) |
|---|---|---|
邀请朋友与我一起玩 | ✓ | ✓ |
修改我的玩家/比赛偏好 | ✓ | ✗ |
查看其他大厅成员偏好 | ✓ | ✗ |
存储和管理自定义键值数据 | ✓ | ✗ |
通知组员玩家已准备好游戏 | ✗ | ✓ |
展示对局配对进度并找到比赛 | ✗ | ✓ |
获取玩家/组的队伍分配 | ✗ | ✓ |
检索游戏服务器连接详情 | ✗ | ✓ |
EOS大厅与Edgegap对局配對
Edgegap和EOS无缝连接,为与朋友在线一起玩提供丰富的功能集。

1. 集成前提条件:认证(安全性)& 好友列表
我们建议使用三层认证以获得最大安全性:
客户端通过Epic Online Services DRM进行认证以防止盗版,
客户端通过Edgegap對局配對进行认证以缓解暴力攻击,
服务器根据Epic Online Services验证客户端身份以防止冒充。
然后,使用Epic Online Services (EOS)好友接口来检索、管理和订阅已登录玩家(或软件应用程序用户)的好友列表事件。
2. EOS大厅
使用大厅接口,你的玩家可以创建、加入、离开和管理大厅。
大厅和每个成员可以拥有应用程序特定的键值属性,由 EOS_Lobby_Attribute 数据类型支持。这些属性必须表示为数值、字符串或布尔数据。EOS_Lobby_Attribute 数据结构包含此信息。大厅还支持相邻功能,如所有权迁移或大厅语音通信。
一旦大厅组装完毕并准备好对局配對,大厅所有者在Edgegap对局配對中创建一个组。然后所有者将返回的组ID保存为EOS_Lobby_Attribute,其他大厅成员可以使用它来创建会员并加入组。
查看Epic Online Services大厅官方示例以获得灵感。
替代方案:自定义好友邀请
大厅对你的游戏来说太复杂了吗?你也可以使用自定义邀请将你的Epic好友直接添加到对局配對组中,方法是将组ID包含在群主发送的邀请中。每个被邀请者必须创建他们的组成员资格并上传他们的属性。
你可以跳过到寻找比赛。
3. Edgegap對局配對
Edgegap對局配對服务通过允许玩家:
根据区域、延迟、技能或游戏参数等标准找到其他玩家;
搜索服务器以根据可用容量[或ping、区域、技能、地图、模式]加入;
启动新服务器如果现有服务器已满或不满足玩家标准时。
寻找比赛
每个成员(和所有者)在创建其会员资格(或组)时设置对局配對属性。属性通常包括(但不限于)如下玩家数据:
ping信标延迟测量 - 使用Edgegap Ping Beacons,
技能评分(ELO/MMR/等级/联赛) - 使用EOS Stats,
进度指标 - 使用EOS Stats,
地图偏好 - 使用大厅成员属性(见上文),
选择的游戏难度(合作游戏) - 使用大厅属性(见上文)。
一旦所有玩家设置好他们的会员资格并在组中标记为准备好,对局配對会自动开始。玩家在轮询他们的会员资格时每隔几秒钟会收到更新。一旦服务器被分配,玩家连接并开始游戏。
替换退出者
可选功能
使用Edgegap补充请求添加额外玩家到正在进行的比赛。这可以帮助减少你的服务器成本(由于更高的比赛填充率)并改善社交体验(通常比对抗机器人更受欢迎)。
比赛结束
比赛结束后,使用Epic Online Services上传比赛回放数据,或使用EOS Player Data上传错误追踪从你的游戏服务器,或更新你的EOS统计。
上传跟踪和日志数据。
如果你希望使用当前大厅找到新比赛,只需创建一个新组并从头开始。
EOS大厅集成 – 深入了解
以下是使用Edgegap从我们的文档集成到EOS大厅的逐步集成过程。确保使用此版本,因为它会更频繁地更新。
本指南将向你展示如何将Edgegap集成到你的Unreal游戏项目中以使用EOS大厅。某些步骤将要求你使用令牌向我们的API发送请求,下面提供的curl命令将允许你查看每个响应的预览,以便你确定如何在代码中管理它们。使用请求中的令牌时,请确保保留token关键字。
你还需要在我们的平台上已经设置一个应用程序版本用于我们的项目。在这种情况下,我们建议使用Edgegap Unreal插件以帮助加快测试过程。有关此插件的更多信息,你可以在这里阅读我们的文档。
警告:出于安全考虑,不建议在生产环境中让EOS大厅所有者直接向Edgegap API发送请求,因为客户端可以访问API令牌。应该使用单独的服务来管理这些请求。
1. 获取并存储玩家的公共IP
首先,加入大厅的每个玩家——包括大厅所有者——需要获取其公共IP,并将其存储为大厅成员属性。
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。一旦回复中部署的current_status设置为READY,大厅所有者需将部署的IP和端口值设置为EOS大厅属性。
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]'
如果玩家仍然在大厅中,大厅所有者可以然后从请求新部署的步骤开始,重复操作以便与同一组人进行重赛。
书写者
Edgegap团队








