BR200 是 Photon 推出的一款支持多达 200 名玩家的第三人称大逃杀示例项目,基于 Photon Fusion 2 构建。它本身已经可以作为无头专用服务器(headless dedicated server)运行。Edgegap 的工具包则将该服务器运行在 Edgegap 上,每场比赛进行一次部署。
该工具包不会修改任何 BR200 或 Fusion 代码。玩家仍然通过 Photon Cloud 进行匹配,并使用您自己的 Photon App ID。仅仅是服务器发生了改变:它运行在 Edgegap 上,而不是玩家的机器上;客户端也直接连接到该服务器,而不是通过 Photon 中继。
Edgegap 的网络覆盖 615 多个边缘云节点(了解更多)。每个服务器都会部署在离玩家最近的最佳可用节点上,并在比赛结束时自动停止,计费也会随之停止。
Photon 的 Fusion 2 文档已将 Edgegap 列为游戏会话托管提供商。
获取工具包: GitHub 上的 Edgegap BR200 工具包
完整指南: 通过 Photon Fusion 2 集成指南将 Edgegap 添加到您自己的 Fusion 游戏中
支持平台: Linux 专用服务器(Docker,linux/amd64)。已在 Windows 客户端上经过测试,在 Windows 11 环境下使用 Unity 6000.3.11f1 构建。该工具包采用 MIT 许可;BR200 来自 Unity Asset Store,仍受 Asset Store EULA 和 Photon 条款约束。仓库中不包含任何 BR200 或 Fusion 代码。
工作原理
您使用玩家的公共 IP 启动 Edgegap 部署。Edgegap 会将其部署在靠近玩家的位置。
工具包的启动脚本读取 Edgegap 的变量,并使用其自身选项启动 BR200:
-dedicatedServer、绑定地址0.0.0.0、端口 7777/UDP,以及将部署地址作为会话名称。该脚本选择距离部署位置最近的 Photon 区域。服务器在该区域的 Photon Cloud 中注册其会话。
客户端使用相同的 Photon App ID、App Version 和区域,通过名称(或在菜单的服务器列表中)找到该会话,并直接(Direct)连接到 Edgegap 服务器。
比赛结束且 BR200 退出时,脚本会请求 Edgegap 停止该部署。
该工具包新增的内容:
路径 | 作用 |
|---|---|
| 添加 Tools > Edgegap BR200:检查项目(IL2CPP 服务器、Linux 工具链、不安全代码、场景、App ID、Peer Mode),并将 Linux 服务器构建到 |
| 以非 root 用户运行服务器的 Ubuntu 22.04 镜像。 |
| 将 Edgegap 的 |
| 仅将服务器构建文件发送给 Docker;保留 Linux 换行符。 |
| 构建、打包和推送,本地运行,在容器中运行测试。 |
| Edgegap API 的应用版本请求体和部署请求。 |
| 针对启动脚本的 46 项检查。无需 Unity。 |
得到 Mirror Networking 创建者的完全认可
Photon 的 Fusion 2 文档将 Edgegap 列为 Fusion 专用服务器的游戏会话托管提供商。

Photon 的 BR200 大逃杀游戏,每场比赛都在其独立的 Edgegap 专用服务器上进行。
1. 开始之前
一个免费的 Edgegap 账户。
来自 Unity Asset Store 的 BR200。该代码仓库是一个工具包,不包含游戏本身。
包含 Linux Dedicated Server 构建模块的 Unity。已在 Unity 6000.3.11f1、BR200 2.1.0 和 Fusion 2.1.1 上进行过测试。
来自 Photon 控制面板 的您自己的 Photon Fusion App ID。每个开发者都需要拥有自己的 ID;该工具包绝不会自带提供。
可选:Edgegap Unity 插件(如果您更倾向于直接在编辑器中进行构建和上传)。
克隆该工具包。
Git:Unity 需要在系统的 PATH 环境变量中配置 Git 客户端(2.14.0 或更高版本),以便从 Git URL 安装包(例如 Edgegap 插件)。macOS 通常已预装(Xcode 命令行工具);在 Windows 上,请安装 Git。
2. 添加套件并设置 Photon
将 Assets/EdgegapBR200、edgegap/、scripts/、.dockerignore 和 .gitattributes 复制到 BR200 项目根目录下,与 Assets/ 并列。
然后在 Unity 中:
Tools > Fusion > Realtime Settings:粘贴您的 Fusion App ID,并记下 App Version。服务器和客户端必须共享相同的 App ID、App Version 和 Photon 区域,否则它们将无法找到彼此。
Tools > Fusion > Network Project Config:将 Peer Mode 设置为
Single。服务器必须使用 IL2CPP,这是 BR200 的默认设置。在 Mono 服务器上,BR200 的 RPC 会失败,玩家将永远无法获得角色。要在 Windows 上使用 Unity 6000.3 或更高版本构建 Linux IL2CPP,请在 Package Manager 中添加
com.unity.toolchain.win-x86_64-linux和com.unity.sdk.linux-x86_64(+ > Add package by name)。运行 Tools > Edgegap BR200 > Check Project 并修复其报告的问题。
您无需编辑 Loader 场景或任何脚本:服务器的模式、地址、端口、会话和区域均来自命令行。
3. 构建服务器并将其部署到 Edgegap
通过终端(Windows 上可使用 Git Bash)或通过Tools > Edgegap BR200 > Build Linux Server构建 Linux 服务器。在我们的测试中,IL2CPP 构建耗时 56 分钟:
scripts/build-server.sh
打包并推送镜像。首先使用来自Container Registry 页面的凭据登录:
scripts/package.sh registry.edgegap.com/<project>/br200
如果您改用 Edgegap 插件,请将其Containerize步骤指向 edgegap/Dockerfile,并将构建路径保持为 Builds/EdgegapServer。
在控制面板中,创建应用程序 br200 以及一个版本,其标签为脚本打印的内容:
一个端口:名称
gameport,7777,UDP。重启策略
never。比赛结束时部署随即终止。最大持续时间略高于您最长的一场比赛(示例中为 60 分钟)。
起始配置为 1 vCPU 和 2 GB。完整的 200 人比赛规模尚未测定。
examples/app-version.json 包含了用于 API 的相同设置。
4. 开始比赛并连接
首先在您自己的计算机上测试该镜像,使用与实际部署相同的变量:
scripts/run-local.sh eu
在本地,客户端显示的连接类型为 Relayed:同一台机器上的客户端无法直接访问 Docker Desktop 的地址。而在 Edgegap 上,相同的镜像会显示为 Direct。
然后从控制面板、插件或 API(examples/deploy-request.json)启动部署,并带上玩家的公网 IP。其 FQDN(例如 0a1b2c3d4e5f.pr.edgegap.net)也是 BR200 会话名称。前几行日志会显示绑定地址、公网地址以及服务器选择的 Photon 区域。
要加入游戏,请打开设置为 Loader 的 Batch Mode Scene 的场景,并在 Standalone Manager 中将 Game Mode 设置为 Client,Server Name 和 Session Name 设置为该 FQDN,并将 Region 设置为服务器所在的区域。然后开始游戏。(从 Menu 场景的服务器列表加入应该也可以,但未经测试。)
BR200 在服务器启动时会开始一个 120 秒的等待计时器。部署就绪(Ready)后请尽快连接。
在已连接的客户端中按下 Tab 键:悬浮窗中的 CT(连接类型)应显示为 Direct。
5. 将其添加到你自己的 Fusion 游戏中
该套件是一个可正常运行的参考:您的编码智能体(coding agent)将从已在 Edgegap 上运行过的文件开始,因此它建立在经过测试的设置之上,而不是盲目猜测。
对于 BR200,该套件没有更改任何游戏代码(参见“工作原理”中的表格)。对于您自己的 Fusion 游戏,以下是需要移植的部分:
在
GameMode.Server模式下无头运行(headless)。通过命令行选项或环境变量将运行程序作为专属服务器启动(edgegap/start-server.sh显示了相应的映射)。绑定
0.0.0.0。在固定端口(7777/UDP)上将StartGameArgs.Address设置为0.0.0.0。Fusion 会自行查找公网地址,客户端通过 Direct(直连)方式连接。127.0.0.1会强制使用 Photon 中继;而绑定的部署公网 IP 则会失败。以部署名称命名会话。使用 FQDN(
<ARBITRIUM_REQUEST_ID>.pr.edgegap.net),以便客户端能够通过 Photon 找到它。从
ARBITRIUM_DEPLOYMENT_LOCATION选择靠近部署的 Photon 区域(即脚本的auto模式)。比赛结束时停止。当服务器退出时,携带
ARBITRIUM_DELETE_TOKEN调用ARBITRIUM_DELETE_URL,并且切勿输出环境变量。使用 IL2CPP 构建服务器,并以
edgegap/Dockerfile为模板进行容器化。
配合您的智能体:
“加载 edgegap skill,然后加载 edgegap-fusion。以 github.com/edgegap/netcode-game-sample-photon-fusion2-battleroyale-200 为参考,使我的 Fusion 2 游戏能够在 Edgegap 上作为无头 GameMode.Server 运行:在端口 7777/UDP 上绑定 0.0.0.0,使用部署的 FQDN 作为会话名称,选择离部署最近的 Photon 区域,在比赛结束时停止部署,并构建一个 IL2CPP Linux 服务器镜像。”
有关手动执行每个步骤的详细信息,请参阅 Photon Fusion 2 集成指南。
6. 玩家如何找到服务器
對局配對保留在 Photon Cloud 上。Edgegap 部署充当游戏服务器:它向 Photon 注册其会话,客户端通过会话名称、App ID、App Version 和区域找到它。对于此示例,您不需要 Edgegap 的配对器,并且它尚未经过 Fusion 测试。
会话名称:默认为部署的 FQDN。设置
BR200_SESSION进行更改。区域:
auto(默认值)会选择距离部署最近的 Photon 区域。如果您的客户端使用固定区域,请将BR200_REGION设置为诸如eu的代码,或者使用BR200_REGION_ALLOWLIST限制auto。best则允许 Fusion 进行 ping 测速。比赛设置:
BR200_MAX_PLAYERS(1 至 200)、BR200_MODE(battleRoyale、deathmatch或elimination)、BR200_SCENE,在应用程序版本或单个部署上设置。
您游戏的游戏后端或大厅决定何时启动部署,并将该会话名称和区域提供给玩家。如需在您自己的游戏中实现该流程,请参阅 Photon Fusion 2 集成指南。
已知限制
尚未测试 200 名玩家。测试运行的是双人比赛。尚未对完整的 200 人比赛所需的 CPU 和内存进行评估:1 vCPU / 2 GB 仅为一个起点。
仅测试了一张地图。Edgegap 上仅运行了 GenArea7。
未测试菜单加入。客户端通过 Standalone Manager 加入。菜单的服务器列表应该可以正常工作,但尚未经过测试。
仅限 Windows 构建主机。在 macOS 或 Linux 上构建尚未经过测试。
120 秒计时器。BR200 在服务器启动时开始倒计时;稍后加入的玩家将被视为已被淘汰。
服务器必须是 IL2CPP。Mono 服务器只需几分钟即可构建完成,但会损坏 BR200 的 RPC。
测试了什么
于 2026 年 10 月 19 日和 20 日在 Edgegap 上进行了端到端测试,配置包括 BR200 2.1.0、Fusion 2.1.1(内部版本 2177)、Unity 6000.3.11f1、Windows 11 以及 Docker Desktop。客户端为无头(headless)Windows IL2CPP 构建版本。
构建:通过“Check Project and Build Linux Server”在 56 分钟内生成了 IL2CPP Linux 服务器。
本地容器:两个客户端加入且无任何异常(本地预期为 CT 中继模式,即 CT Relayed)。
Edgegap:在多伦多(区域
cae)和纽瓦克(区域us)进行了部署。每个节点均有两个客户端通过 CT 直连(Direct)加入。在双人大逃杀模式中,一名客户端离开后,另一名客户端显示游戏结束(Game Over),且部署在启动 2.5 分钟后自动停止。启动脚本:46 项检查,无需 Unity:
bash tests/start-server.test.sh
常见问题
关于在 Edgegap 上运行 Photon BR200 的常见问题。
为了在 Edgegap 上运行,我需要修改 BR200 的代码吗?
不。BR200 已经支持专用服务器的命令行选项。Edgegap 的工具包添加了一个编辑器构建工具、一个 Dockerfile 以及一个用于传递这些选项的启动脚本,并且不会更改任何 BR200 或 Fusion 代码。
Edgegap 上的 BR200 是否使用 Edgegap 的匹配系统?
不。對局配對保留在 Photon Cloud 上。Edgegap 服务器向 Photon 注册其会话,客户端通过会话名称和区域找到它,然后直接连接到服务器。
为什么我的客户端显示 CT 中继?
在 Edgegap 上,这通常意味着服务器绑定了 127.0.0.1。请像套件所做的那样绑定 0.0.0.0。在本地 Docker Desktop 测试中,出现 Relayed(中继)是预期的;相同的镜像在 Edgegap 上则会显示 Direct(直连)。
BR200 服务器可以使用 Mono 构建吗?
虽然可以成功构建,但 BR200 的 RPC 在 Mono 服务器上会失败,导致玩家永远无法获得角色。请使用 IL2CPP(BR200 的默认设置)来构建服务器。

客户
了解更多已接入 Edgegap 的客户案例
提供 31 个从其他平台迁移至 Edgegap 的工作室案例研究。

《以太之战 2》完美的全球发布
Aether Studios
了解Aether Studios是如何快速添加Edgegap并向他们的社区交付完美的启动和后启动服务的。
Case Study

克服因虚拟现实在竞技Multiplay中使用WiFi而引入的延迟
Halfbrick Studios
Discover how Halfbrick successfully launched & maintains a multiplayer-focused Early Access on META Quest's VR platform.
Case Study

MENA的社交应用添加了在线游戏
WOLF
了解这款在中东和北非地区广受欢迎的社交应用如何轻松地将 matchmaking 和多人游戏编排添加到 WOLF Qanawat。
Case Study

混合编排让开球策略随时应对任何流量做好准备
Birch Games
混合编排如何帮助 Birch Games 应对流量——将免流出费用的 Fleets 与无区域限制云相结合。
Case Study

7天血月
The Fun Pimps & iLLOGIKA
了解 Illogika 如何大幅降低服务器成本,并确保提供《七日杀 (7 Days to Die)》玩家所期望的在线体验。
Case Study

真实的在线战争需要终极的协调
Highwire Games
了解Highwire对性能的需求如何需要只有Edgegap才能提供的编排。
Case Study

22,000 条评价、4.8 颗星以及自动扩展的基础架构
Sinn Studios
一个由 Slack 提供支持的简单集成,如何让 Sinn Studio 的热门 VR 游戏快速上线并保持稳定运行。
Case Study

动态服务器编排
Under NDA - AAA Studio
了解世界上最大的AAA工作室之一如何通过边缘计算改善其对等多人游戏体验。
Case Study

对于 AAA 格斗游戏的近零延迟
AAA Studio - Under NDA
一个未宣布的项目如何实现了最低延迟,并改善了其1v1游戏中的公平性。
Case Study

Play Gods with Multiplayer Physics
Squido Studio
Learn how Squido uses Edgegap's highligh optimized game servers to deliver mind-bending & chaotic VR gameplay.
Case Study

全面托管的解决方案为独立游戏节省时间 多人VR恐怖游戏
Dirty Pearl Studios
了解Dirty Pearl Studios如何通过Edgegap的轻松集成和自动编排,以及其Nakama集成,节省了开发时间。
Case Study

即时全球服务器部署以促进协作式XR医学教育
AlensiaXR
AlensiaXR如何利用Edgegap为全球医学生提供低延迟、始终可用的共享解剖课程。
Case Study

守光人:具有专用服务器的 VR 社交合作游戏
Spectral Games
Spectral Games 如何在无需任何服务器经验的情况下,利用 Edgegap Matchmaking 和 Server Browser 为其 VR 社交大厅启动专用服务器。
Case Study

全球范围内快速可靠的部署,适用于PvPvE挑战者Gravebound
Crater Studios
Edgegap 的调度和配对如何帮助 Crater Studios 使他们能够将重心从基础设施转移到游戏玩法上。
Case Study

快速扩展网络元宇宙
Hiber
了解Hiber如何通过Edgegap消除服务器容量规划中的猜测。
Case Study

高硬件要求和自定义游戏服务器池
Alderon Games
了解Alderon Games如何瞬间利用全球多个供应商的自定义游戏服务器池来支持其热门MMO。
Case Study

独立开发者的简单集成
WhaleFood Games
阅读关于WhaleFood Games如何使用Edgegap解决其网络代码问题的文章。
Case Study

推动东南亚首款电子竞技游戏的尖端技术。
Anantarupa Studios
了解Edgegap如何通过一个无缝解决方案简化复杂基础设施和尖端技术,从而改变东南亚的游戏格局。
Case Study

一次打击。全球抵达。
Triple Hill Interactive
Triple Hill Interactive如何利用Edgegap的编排来提供低延迟,并提高在每毫秒都至关重要的游戏类型中的公平性。
Case Study

快节奏团队大逃杀...带着枪的动物毛绒玩具!
SANDYFLOOR
了解一家韩国独立工作室是如何将其多人游戏发布到全球的。
Case Study

移动端赛马游戏凭借即时、高效能的服务器走向全球
Mirai Labs
看 Mirai Labs 如何通过即时服务器部署和细分 vCPU 来运行 Pegaxy Blaze 的全球多人竞速游戏,从而将单个玩家的成本保持在极低水平。
Case Study

服务器管理与分发
Matrioshka Games
阅读关于Matrioshka Games如何在资源有限的情况下发布早期访问的战斗 Royale。
Case Study

听我的信号,释放地狱!
TyGames
探索独立工作室TyGames如何让玩家沉浸在第三人称角斗士战斗的多人游戏中。
Case Study

瞬时全球编排
Soliton Interactive
探索Soliton Interactive如何做到了不可能……首次推出可多人玩的版本!
Case Study

竞技游戏具有服务器端物理引擎,确保理想的低于50毫秒的延迟
NS7
了解为什么仅有Edgegap能够使独立工作室通过服务器端物理和权限实现其AAA质量的免费游戏体育玩法愿景。
Case Study

iGaming的区域部署
X1 Contra 1
X1 Contra 1 通过经济高效的托管和区域部署,为其巴西玩家提供实时 PvP 休闲游戏,确保数据和法律合规。
Case Study

仅在玩家游玩时付费:经济实惠的多人游戏基础设施
Meltdown Interactive
Edgegap 如何帮助独立开发商 Meltdown Interactive Media 在无需复杂方案的情况下,以高性价比解决扩缩容和匹配问题,从而让他们能够专注于游戏开发。
Case Study

同一个 Edgegap 平台,三种截然不同的网络配置
Warped Games
了解 Warped Games 如何在同一个 Edgegap 部署 API 和同一个容器管线上运行社交中心、实时合作以及回合制合作。
Case Study

台球大师巡回赛Max
RETA Games
Case Study

韩国的Web3 POP提取射击游戏走向全球,即刻启程
NDUS Entertainment
XOCIETY 如何轻松地添加 Edgegap 编排并集成自定义 matchmaking,与 Edgegap Ping Beacons 一起优化延迟。
Case Study

Multiplayer in Every Dimension
Arcadia.tv
Discover how Arcadia.tv uses Edgegap's edge network to deliver an innovative, team and location-based athletic VR sport.
Case Study

F2P 移动格斗游戏利用即时(Just-In-Time)服务器降低基础设施成本
Game Changers Worldwide
Game Changer Worldwide 如何在全球移动端托管 Rumble Rush 的实时 3v3 PvP 游戏。
Case Study
他们选择 Edgegap 的关键原因
了解 Edgegap 自动化游戏服务器编排如何带来无缝的多人游戏体验。









