了解Edgegap的工作原理

了解Edgegap的工作原理

/

Steam Lobbies

/

Steam Lobbies

部署至 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. 将您的编码智能体连接到 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 服务器允许您的 Agent 查看您账户中的应用和版本、部署测试服务器并读取其日志。edgegap-deployments-api Agent 技能为它提供了用于启动 Edgegap 服务器的后端测试规则:Token 的存储位置、在玩家附近部署服务器、Webhook、重试和清理。

Claude Code:安装 Edgegap 插件。它会同时添加 MCP 服务器和技能,并在安装过程中要求输入您的 API Token(保存在系统的凭据存储中):

/plugin marketplace add edgegap/llm-agent-skills,然后运行 /plugin install edgegap@edgegap。重启会话。

只需要 MCP 服务器而不需要插件?您可以在自己的终端中运行以下命令:claude mcp add --transport http edgegap https://mcp.edgegap.dev/mcp -H "Authorization: token YOUR_EDGEGAP_API_TOKEN" --scope user。请勿两项都操作,否则会出现两个 edgegap 服务器。

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

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

检查是否正常运行:

“列出我的 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.00115

/ vCPU

/ 分钟

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

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

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

只需添加信用卡。

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

预留容量

$0.0261

/ vCPU

/ 小时

按月计费,始终开启

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

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

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

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

预留容量

$0.0261

/ vCPU

/ 小时

按月计费,始终开启

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

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

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

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

预留容量

$0.0261

/ vCPU

/ 小时

按月计费,始终开启

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

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

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

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

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

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

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

Edgegap 的功能与价格:边缘云与私有集群(Private Fleets)详细对比

Edgegap 的功能与价格:边缘云与私有集群(Private Fleets)详细对比

对比

免费试用

边缘云

Private Fleets

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

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

对比

免费试用

边缘云

Private Fleets

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

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

对比

免费试用

边缘云

Private Fleets

功能特色

分析与监控

账单警报

点击展开

还有 28 行

解锁

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