了解Edgegap的工作原理

了解Edgegap的工作原理

/

Steam 大厅

Steam 大厅

部署至 Edgegap

已发布

已发布

已发布

最近一次准确性审核

最近一次准确性审核

最近一次准确性审核

Steam 大厅:如何通过 Steam 大厅启动 Edgegap 专属服务器

Steam 大厅:如何通过 Steam 大厅启动 Edgegap 专属服务器

本指南将向您展示如何在游戏中保留用于好友和组队的 Steam 大厅,并为每场比赛启动一个 Edgegap 专用游戏服务器:当大厅房主开始比赛时,您的后端会通过 Steam 验证玩家身份,在他们附近部署一台服务器,然后大厅将服务器地址分发给每位成员。

一旦您的游戏服务器完成容器化,Edgegap 即可通过简单的 API 调用将其按需部署到全球 615 多个边缘云节点,并完全按使用量计费:无需租用、配置整台服务器,也无需在比赛间隔期间保持其运行。针对具有预留容量的持久性服务器,Edgegap 提供了专用机队(Private Fleets)。

Steam 负责将玩家分组;Edgegap 负责托管比赛。它们之间只需运行一个位于您后端的小型服务,因为启动服务器需要您的 Edgegap API 令牌,而该令牌绝不能放入游戏客户端。您游戏的数据流量将直接发送到专用服务器,而无需通过 Steam 中继。

本指南涵盖:

  1. 准备一个可用的 Edgegap 应用版本以及您的 Steamworks 应用

  2. 将您的编码智能体(Coding Agent)连接到 Edgegap(可选)

  3. 设置您的 Steam 大厅

  4. 为后端添加带有 Steam 登录功能的部署服务

  5. 在大厅就绪时请求服务器

  6. 与大厅共享服务器信息并结束比赛

  7. 使用两名玩家进行测试

您可以通过两种方式进行操作,也可以结合使用:

  • 使用编码智能体。将 Claude Code、Cursor 或其他智能体连接到 Edgegap MCP 服务器及其智能体技能。智能体负责编写部署服务和大厅代码,并检查您的应用版本及部署情况。您只需处理 Steamworks、Edgegap 控制面板、机密密钥并进行游戏测试。

  • 手动操作。以下每个步骤也可以在没有智能体的情况下完成。

无需信用卡。免费版包含部署真实游戏服务器所需的资源。

无需信用卡。免费版包含部署真实游戏服务器所需的资源。

1. 开始之前

  • 一个免费的 Edgegap 账户。请验证您的电子邮箱。测试无需信用卡。

  • 游戏服务器的一个可用 Edgegap 应用版本:您至少部署并加入过一次的服务器。您的后端会为每场比赛部署该版本,因此需要一个功能完备的容器化游戏服务器来实现端到端运行。如果您目前还没有,请参考我们的指南:Unity Engine、Unreal Engine、Godot Engine 或 Custom Engine。记下其应用名称(application name)、版本名称(version name)和端口名称(port name,通常为 gameport)。

  • 一个 Steamworks 应用,在您的游戏中包含 Steamworks SDK(或您引擎的 Steam 集成)、其 App ID,以及来自 Steamworks 合作伙伴网站的供您后端使用的 Web API 发布者密钥。

  • 一个由您控制的后端,用于部署服务:您现有的游戏后端,或一个小型无服务器函数(serverless function)。

  • 一个 Edgegap API 令牌,从 控制台 → 用户设置 → 令牌 获取,并存储在后端的机密管理器中。该令牌是组织级的,因此切勿将其放入游戏客户端、游戏服务器、项目文件或聊天中。

Unreal Engine:保留 Steam 用于大厅、好友和成就功能,但直接连接到服务器:使用 IpNetDriver 并设置 bUseSteamNetworking=false。我们的 Unreal Engine 指南涵盖了服务器构建。

2. 将您的代码代理连接到 Edgegap

如果您全部采用手动操作,请跳过此步骤。

Edgegap MCP 服务器允许您的智能体检查您的应用程序及版本、部署测试服务器并读取您账户上的日志。edgegap-deployments-api 智能体技能为它提供了启动 Edgegap 服务器的后端经过测试的规则:令牌存放位置、在玩家附近部署服务器、webhook、重试以及清理。

Claude Code(在您自己的终端中运行,这样令牌就绝不会通过聊天传递):

claude mcp add --transport http edgegap https://mcp.edgegap.dev/mcp -H "Authorization: token YOUR_EDGEGAP_API_TOKEN" --scope user

然后安装技能:/plugin marketplace add edgegap/edgegap-agent-skills,接着 /plugin install edgegap@edgegap。重启会话。

Cursor、VS Code 以及其他发送请求头的客户端:添加 https://mcp.edgegap.dev/mcp,并附带请求头 Authorization: token YOUR_EDGEGAP_API_TOKEN,然后使用 npx skills add edgegap/edgegap-agent-skills --skill "*" 安装技能。

Claude Desktop:自定义连接器无法发送该请求头,因此请改用本地服务器(Node 18+):{ "mcpServers": { "edgegap": { "command": "npx", "args": ["-y", "@edgegap/mcp"] } } }。首次使用时会要求输入令牌。

检查是否正常工作:

“列出我的 Edgegap 应用程序及其版本,包括每个版本的端口。”

3. 设置你的 Steam 大厅

大厅承载着对局。只需两个大厅数据键即可:服务器的地址和端口。其他一切均保持您游戏已有的设置不变。

  • 玩家像以往一样创建和加入大厅,使用 Steamworks 的 ISteamMatchmaking(CreateLobby、邀请、JoinLobby)。

  • 添加两个大厅数据键(目前为空),例如 server_host 和 server_port。只有大厅所有者才能设置大厅数据(SetLobbyData);发生更改时,每位成员都会收到 LobbyDataUpdate_t 回调。

  • (可选)还可以使用 SetLobbyGameServer 设置大厅的游戏服务器(IP 和端口):随后 Steam 会向成员发送一个 LobbyGameCreated_t 回调,Steam 自带的 UI 可以识别该回调。

4. 为您的后端添加部署服务,并支持 Steam 登录

验证玩家身份。您的后端需要知道调用方是谁。在游戏中,使用 ISteamUser::GetAuthTicketForWebApi 获取凭证,等待 GetTicketForWebApiResponse_t 回调,然后将该凭证(十六进制编码)发送给您的后端。您的后端使用您的发行商密钥调用 Steam 的 Web API ISteamUserAuth/AuthenticateUserTicket 并获取玩家的 SteamID。它还会记录在该请求中看到的公网 IP:Edgegap 会使用这些 IP 在所有玩家就近的位置启动服务器。

启动服务器。只需一次调用:POST https://api.edgegap.com/v2/deployments,附带请求头 Authorization: token <您的 API 令牌>,请求体包含:

  • application 和 version:您的 Edgegap 应用以及要运行的版本,从您的配置中读取。

  • users:每个玩家的公网 IP,格式为 {"user_type": "ip_address", "user_data": {"ip_address": "..."}}。Edgegap 会为整个群体选择 ping 延迟最佳的位置。

  • tags:例如 lobby-<id>,以便稍后查找该服务器。

  • webhook_on_ready(以及 webhook_on_error):您的后端 URL,其中包含不可推测的每个大厅专属令牌。服务器启动后,Edgegap 会调用它并传入服务器的 fqdn、public_ip 和 ports.gameport.external。

Edgegap 会返回包含 request_id 的 202 响应:请立即将其与大厅关联存储。如果调用超时,在重新部署之前,请先查找带有 lobby-<id> 标签的部署。返回 422 意味着暂时无法分配服务器:请使用退避机制重试。Webhook 不会重试,因此如果未及时收到,请检查 GET https://api.edgegap.com/v1/status/<request_id>。

配合您的智能体:

“加载 edgegap-deployments-api 技能,并在我的后端为 Steam 大厅添加一个 Edgegap 部署服务:一个使用 ISteamUserAuth/AuthenticateUserTicket 验证 Steam Web API 凭证并记录玩家 IP 的登录端点,以及一个大厅房主使用大厅 ID 和成员 SteamID 调用的开始比赛端点——该端点会检查调用方是否拥有该大厅,使用 POST /v2/deployments 部署我的应用版本(附带标签、就绪和错误 webhook),存储 request_id 并在就绪后返回服务器地址。从我的密钥管理器中读取 API 令牌和 Steam 发行商密钥。”

原型捷径,请勿用于正式发布:直接从大厅房主的游戏客户端调用 Edgegap API 会将您的整个组织级 API 令牌打包进游戏构建版本中,任何人都可以将其提取出来。请仅在您自己的机器上使用。

5. 大厅准备就绪后请求服务器

在大厅房主开始比赛时:

  1. 大厅房主的游戏会以该玩家的登录身份,携带大厅 ID 和成员的 SteamID 调用您的部署服务。

  2. 您的服务会检查调用者是否拥有该大厅,并确认每位成员均已登录,然后部署服务器并立即返回。服务器需要几秒钟的时间启动。

  3. 大厅房主的游戏等待获取地址:它会每隔几秒检查一次您的服务,或者由您的服务向其发送通知,直到就绪 Webhook 到达。

与此同时,向玩家显示“正在启动服务器”状态;如果您的服务报告错误,则显示重试选项。

6. 将服务器分享到大厅,并结束比赛

  1. 大厅房主通过 SetLobbyData 设置 server_host 和 server_port。Steam 会通知每位成员。

  2. 每位成员连接到该地址和端口。就绪意味着容器已启动;游戏可能还需要最多一分钟来加载,因此请在一段时间内每秒重试一次连接。浏览器和 WebSocket 客户端使用 wss:// 连接到主机名。

  3. 比赛结束时,大厅房主清除这两个键,成员离开服务器。服务器停止其自身部署:在比赛结束时,它会使用 ARBITRIUM_DELETE_TOKEN 调用 Edgegap 提供给每个部署的 ARBITRIUM_DELETE_URL。无需 API 令牌。

想与相同玩家重赛?大厅房主请求新服务器,流程重新开始。

您的部署服务会停止任何遗留的实例,例如在比赛开始前解散的大厅。通过精确的 request_id 停止这些实例(DELETE https://api.edgegap.com/v1/stop/<request_id>;410 表示它已停止),切勿使用宽泛的过滤器。

7. 双人测试

  1. 确保没有测试部署仍在运行:免费层一次只能运行一个部署。

  2. 在两台电脑上启动两个客户端,分别登录不同的 Steam 账户,并加入同一个大厅。

  3. 以大厅房主的身份开始比赛。您的服务将部署服务器;在 Edgegap 控制台中,部署将显示并带有该大厅的标签,位于您附近的某个位置。

  4. 两个客户端都会收到大厅更新并连接到同一台服务器。

  5. 结束比赛:密钥清除,服务器自行停止,并从控制台中消失。

如果大厅获取到了地址但没人能连接,问题在于服务器,而不是大厅:请手动部署您的版本并直接加入。

后续步骤

后续步骤

准备上线?让您的代理运行 edgegap-launch 技能的检查清单:版本发布、重启策略、最长持续时间、成本控制。不仅匹配好友,还要匹配陌生人?在您的大厅旁添加 Edgegap 托管的撮合系统。

遇到问题?让您的代理加载 edgegap-troubleshoot,或在 Edgegap Discord 上咨询我们的团队及其他工作室。

常见问题

关于从 Steam 大厅启动 Edgegap 专属服务器的常见问题。

Steam 大厅可以使用专用服务器吗?

是的。您可以继续使用 Steam 大厅来进行好友组队和派对。当大厅房主开始比赛时,您的后端会在玩家附近部署一个 Edgegap 服务器,房主会通过大厅数据共享其地址,以便每个成员都能连接。

我需要后端才能通过 Steam 大厅启动 Edgegap 服务器吗?

是的。启动服务器需要您的 Edgegap API 令牌,该令牌可访问您的整个 Edgegap 组织。在游戏客户端中,任何人都可以提取它。后端可以对其进行保密,并首先通过 Steam 验证玩家身份。

如何在我的后端验证 Steam 玩家身份?

游戏通过 GetAuthTicketForWebApi 获取票据并将其发送到您的后端,后端使用您的发行商密钥调用 Steam 的 ISteamUserAuth/AuthenticateUserTicket Web API。Steam 将返回玩家的 SteamID。

Steam 会将流量中继到 Edgegap 服务器吗?

不。玩家直接连接到专用服务器的地址和端口。在 Unreal Engine 中,使用 IpNetDriver 并关闭 Steam 网络功能;Steam 仍负责处理大厅、好友和成就。

比赛结束时,我该如何停止 Edgegap 服务器?

服务器会使用 Edgegap 注入到每个部署中的删除 URL 和令牌来停止自身的部署,无需任何 API 令牌。您的后端还会通过其确切的请求 ID 来停止残留的部署。

客户

了解更多已接入 Edgegap 的客户案例

提供 31 个从其他平台迁移至 Edgegap 的工作室案例研究。

他们选择 Edgegap 的关键原因

了解 Edgegap 自动化游戏服务器编排如何带来无缝的多人游戏体验。

费用

定价

通过混合编排优化成本与性能

通过混合编排优化成本与性能

通过混合编排优化成本与性能

边缘云

按需

$0.00115

/ vCPU

/ 分钟

按分钟计费,仅按实际使用量收费

只有在玩家在线玩游戏时才需付费。0 个活动服务器 = $0

在全球 615 多个边缘云节点中按实例部署游戏服务器。零承诺。

只需添加信用卡。

边缘云

按需

$0.00115

/ vCPU

/ 分钟

按分钟计费,仅按实际使用量收费

只有在玩家在线玩游戏时才需付费。0 个活动服务器 = $0

在全球 615 多个边缘云节点中按实例部署游戏服务器。零承诺。

只需添加信用卡。

专属物理机集群 (裸金属)

预留容量

$0.0282

/ vCPU

/ 小时

按月计费,始终开启

每个主机每月 $280(12个月标准价),或按月支付每月 $350

通过无出站流量费用的专用机队托管,优化您游戏服务器的成本效益。

持久在线,24/7全天候可用,您的工作室专属。

专属物理机集群 (裸金属)

预留容量

$0.0282

/ vCPU

/ 小时

按月计费,始终开启

每个主机每月 $280(12个月标准价),或按月支付每月 $350

通过无出站流量费用的专用机队托管,优化您游戏服务器的成本效益。

持久在线,24/7全天候可用,您的工作室专属。

您的账单因费率和使用量而异;这可能会根据游戏类型、玩家人数等因素而有所不同。

您的账单因费率和使用量而异;这可能会根据游戏类型、玩家人数等因素而有所不同。

使用我们的预估计算器模拟您的用量 ->

使用我们的预估计算器模拟您的用量 ->

Eggegap 的功能和价格:Edge Cloud 与 Private Fleets 的详细对比

Eggegap 的功能和价格:Edge Cloud 与 Private Fleets 的详细对比

对比

免费试用

边缘云

自有车队

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

在帐户中添加信用卡后,即可解锁各项功能。

对比

免费试用

边缘云

自有车队

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

在帐户中添加信用卡后,即可解锁各项功能。

对比

免费试用

边缘云

自有车队

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

在帐户中添加信用卡后,即可解锁各项功能。