了解Edgegap的工作原理

了解Edgegap的工作原理

/

PlayFab

PlayFab

部署至 Edgegap

已发布

已发布

已发布

最近一次准确性审核

最近一次准确性审核

最近一次准确性审核

PlayFab:如何从 PlayFab 對局配對 启动 Edgegap 专用服务器

PlayFab:如何从 PlayFab 對局配對 启动 Edgegap 专用服务器

本指南向您展示如何保留 PlayFab 用于玩家账户和匹配队列,并为每场比赛启动一个 Edgegap 专用游戏服务器:当 PlayFab 找到比赛时,Cloud Script 会在玩家附近部署一台服务器,该服务器会将其地址分发给每位玩家。

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

PlayFab 负责玩家分组;Edgegap 负责托管比赛。启动服务器的调用在 PlayFab 端的 PlayFab Cloud Script 中运行,因为这需要您的 Edgegap API 令牌,而该令牌绝不能放入游戏客户端中。

本指南涵盖:

  1. 准备一个可用的 Edgegap 应用版本和一个 PlayFab Title

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

  3. 设置 PlayFab 匹配队列

  4. 添加用于部署服务器的 Cloud Script

  5. 将服务器地址分发给玩家

  6. 从游戏客户端进行玩家匹配

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

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

  • 使用编码智能体。 将 Claude Code、Cursor 或其他智能体连接到 Edgegap MCP 服务器 及其 智能体技能 (agent skills)。智能体负责编写 Cloud Script 以及客户端和服务端代码,并检查您的应用版本和部署情况。您只需管理 PlayFab 和 Edgegap 控制台、密钥并进行游玩测试。

  • 手动操作。 以下所有步骤在没有智能体的情况下也同样适用。

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

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

1. 开始之前

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

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

  • 一个包含對局配對功能的 PlayFab Title,以及对其 Game Manager 的访问权限(Title ID 和 Title Secret Key)。

  • 一个 Edgegap API 令牌,可从 控制面板 → 用户设置 → 令牌 获取。它仅用于您的 Cloud Script 配置。该令牌适用于整个组织,因此切勿将其放入您的游戏客户端、游戏服务器、项目文件或聊天中。

  • 可选:Edgegap 的 PlayFab 示例,这是一个包含以下客户端、服务器和 Cloud Script 代码的 Unity 项目(2021.3,FishNet 3)。

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

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

Edgegap MCP 服务器允许您的智能体检查应用和版本、部署测试服务器并读取您账户上的日志。edgegap-deployments-api 智能体技能为其提供了用于启动 Edgegap 服务器的后端经过测试的规则,包括 PlayFab Cloud Script。

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. 设置 PlayFab 匹配队列

  1. 在 PlayFab 的 Game Manager 中,打开 Multiplayer → 對局配對并创建一个队列,或者复用您现有的队列。对于初次测试,一条匹配任意两名玩家的规则就足够了。

  2. 在 Players 下创建两个测试玩家(例如使用自定义 ID),以便两个客户端可以登录。

您的比赛规则保留在 PlayFab 中。只有在 PlayFab 找到比赛后,Edgegap 才会启动服务器。

4. 添加用于部署服务器的 Cloud Script

函数。在 Automation 中,部署一个带有处理程序的 Cloud Script 修订版本,例如 StartEdgegapDeployment,该处理程序将:

  1. 从 match-found 事件中读取 MatchId 和 QueueName。

  2. 使用 multiplayer.GetMatch 获取比赛成员,并使用 server.GetPlayerProfile (ShowLocations: true) 获取每位玩家的位置。

  3. 调用 POST https://api.edgegap.com/v2/deployments,请求头为 Authorization: token <your API token>,请求体包含您的 application 和 version、作为 users 的玩家信息(包含纬度和经度的 "user_type": "geo_coordinates")、带有比赛 ID 的标签,以及作为 environment_variables 的比赛详情:PLAYFAB_MATCH_ID 和 PLAYFAB_MATCH_PLAYERS_ID_LIST(以逗号分隔的玩家 ID 列表)。

Edgegap 会为整个组挑选延迟最低的最佳位置,并返回带有 request_id 的 202 响应。将其与比赛 ID 一起记录。

规则。在 Automation → Rules 中添加一条规则:事件类型为 playfab.matchmaking.match_found,操作为 Execute Entity Cloud Script,函数为 StartEdgegapDeployment。

使用您的智能体:

“加载 edgegap-deployments-api 技能,并为 playfab.matchmaking.match_found 事件编写一个 PlayFab Cloud Script 处理程序 StartEdgegapDeployment:获取比赛成员及其位置,使用 geo_coordinates 通过 POST /v2/deployments 部署我的 Edgegap 应用版本,为其标记比赛 ID,将比赛 ID 和玩家 ID 作为环境变量传递,并记录 request_id。”

切勿泄露令牌:Cloud Script 在 PlayFab 的服务器上运行,而不是在游戏中,因此令牌永远不会落入玩家手中。请将其存储在游戏的内部配置中,而不是脚本源代码中,更不可存在于客户端代码中。

5. 将服务器地址提供给玩家

服务器通过 PlayFab 玩家数据(Player Data)告知每位玩家应连接到何处:

  1. 启动时,服务器会读取 ARBITRIUM_PUBLIC_IP 和 ARBITRIUM_PORT_GAMEPORT_EXTERNAL(由 Edgegap 注入)以及 PLAYFAB_MATCH_PLAYERS_ID_LIST。

  2. 对于每位玩家,它会使用 PlayFab 的 Server/UpdateUserData 将 ip:port 写入该玩家的 Player Data 中,并将比赛 ID 用作键(key)。

  3. 比赛结束时,服务器会停止其自身的部署:它携带 ARBITRIUM_DELETE_TOKEN 调用 Edgegap 为每次部署提供的 ARBITRIUM_DELETE_URL。

Server/UpdateUserData 需要你的 PlayFab Title 密钥(Secret Key)。如果你的服务器持有该密钥,请在应用版本上将其作为隐藏环境变量传递(is_hidden: true),切勿放入镜像中,也切勿记录到日志里。对于正式发布版本,更受限、更安全的选择是让服务器调用 PlayFab 函数来代其写入地址。

6. 从游戏客户端匹配玩家

  1. 客户端将玩家登录到 PlayFab(示例使用 LoginWithCustomID;请使用您游戏的登录方式)。

  2. 它会在您的队列中创建一个撮合票证(CreateMatchmakingTicket,例如将 GiveUpAfterSeconds 设为 90),并通过 GetMatchmakingTicket 对其进行检查,直到状态变为 Matched。

  3. 然后,它每隔几秒读取一次其玩家数据(GetUserData)中的比赛 ID 密钥,直到服务器写入其地址。

  4. 它会连接到该 IP 和端口。服务器在启动后可能需要长达一分钟的时间才能开始接受玩家,因此请重试连接一段时间。

  5. 连接成功后,它会从其玩家数据中删除该密钥(带有 KeysToRemove 的 UpdateUserData),这样旧地址就不会堆积。

7. 双人测试

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

  2. 以两个测试玩家的身份登录两个客户端,并在两个客户端上都开始匹配。

  3. 当 PlayFab 将他们匹配在一起时,规则将运行您的 Cloud Script。在 Edgegap 控制台中,将出现一个标记有比赛 ID 的部署,位置在您附近。

  4. 两个客户端都会从其玩家数据中读取地址,并连接到同一台服务器。

  5. 结束比赛:服务器会自动停止并从控制台中消失。

没有部署任何内容?首先检查 PlayFab 中的 Cloud Script 日志。部署已启动但无人连接?这是服务器的问题:手动部署您的版本并直接加入。

后续步骤

后续步骤

准备上线?让您的代理运行 edgegap-launch 技能的检查清单:版本推出、重启策略、最大持续时间、成本控制。更倾向于免脚本的托管式配对系统?请参阅 Edgegap 的配对系统 (matchmaker)。

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

常见问题

关于在 Edgegap 专属服务器上托管 PlayFab 对局的常见问题。

我可以在 Edgegap 服务器上使用 PlayFab 對局配對 吗?

是的。保留您的 PlayFab 队列和规则。当 PlayFab 找到匹配项时,由匹配成功事件触发的 Cloud Script 会在玩家附近部署一个 Edgegap 服务器,并且该服务器会将其地址写入每个玩家的 Player Data 中。

我还需要 PlayFab Multiplayer Servers 吗?

不。Edgegap 托管专用服务器。PlayFab 保留您的账户、玩家数据和匹配,并且 Edgegap 仅在找到匹配时才启动服务器,在其运行期间按分钟计费。

Edgegap 是如何为 PlayFab 对局选择服务器位置的?

来自每位玩家的位置信息,由 Cloud Script 从其 PlayFab 个人资料中读取并作为坐标发送。Edgegap 会为整个群体选择 ping 值最佳的位置。

我的 Edgegap API 令牌应该放在 PlayFab 的哪里?

仅存在于在 PlayFab 服务器上运行的 Cloud Script 配置中。游戏客户端和游戏服务器绝不会持有它。

玩家如何从 PlayFab 获取服务器地址?

游戏服务器将其 IP 和端口写入每位玩家比赛 ID 下的 PlayFab 玩家数据中。每个客户端读取该信息,进行连接,然后删除该条目。

客户

了解更多已接入 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 行

解锁

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