了解Edgegap的工作原理

了解Edgegap的工作原理

无头服务器

无头(headless)服务器在运行游戏模拟时,无需渲染、无音频且未连接输入设备。剥离客户端的工作后,留下了服务器所需的基本功能:物理、状态和网络,以及开发者选择在其中运行的其他任何内容。由于不依赖显示器或 GPU,该版本也更容易封装在容器中,而这正是专用服务器通常部署和扩展的方式。

由

由

由

雅库布·莫蒂尔

雅库布·莫蒂尔

雅库布·莫蒂尔

,

产品总监

产品总监

产品总监

已发布

已发布

已发布

无头服务器剥离了什么,又必须保留什么?

无头构建(headless build)移除了玩家能看到、听到或触碰的一切:渲染器、着色器与贴图、音频、UI 以及输入设备。保留下来的是决定比赛走向的核心:模拟循环、物理、游戏规则和网络。这是基础基准。至于 AI、日志记录或其他任何内容是否也在服务器上运行,则由开发者决定。

在代码中,这条界限很少能像在纸面上那样清晰。游戏逻辑经常会在无意中读取表现层的数据:绑定到动画骨骼上的碰撞盒(hitbox)、以渲染帧数计算的冷却时间、由动画或 UI 回调触发的游戏玩法事件。在客户端中,这一切都能正常工作,因为总有画面在被绘制。但在无头构建中,什么都不会被绘制,依赖于此的逻辑就会停止或产生偏差。

防止这种情况的习惯说起来很简单:任何会改变比赛结果的内容,都属于无论是否绘制帧都会运行的代码。关于无头构建与专用服务器及权威服务器的关系,请参阅专用服务器。

为什么无头(Headless)构建会破坏在编辑器中正常运行的内容?

因为引擎默认设定假设有人在观看。编辑器总是进行渲染,所以这些问题通常只有在服务器版本独立运行时才会显现出来。

  • 在无人观看时停止的动画。 引擎为了节省工作量,会跳过任何摄像机都看不到的对象的动画,而在无头服务器上,没有任何摄像机能看到任何东西。在 Unreal 中,专用服务器上的骨骼网格体不会更新其骨骼位置,除非将其设置为始终 tick 其姿态并刷新骨骼,因此针对这些骨骼的碰撞检测会使用过期的位置。在 Unity 中,如果 Animator 的剔除模式设置为在不渲染时停止动画,也会产生同样的效果。

  • 没有帧率限制的循环。 客户端由其显示器来控制节奏。无头进程则没有显示器,因此在没有目标帧率或服务器 tick 率的情况下,它会以尽可能快的速度运行,并让一个核心在 tick 之间保持忙碌。在按 vCPU 计费的服务器上,这将是一笔无谓的开销。

  • 不同的构建管线。 Unity 的专用服务器构建目标还会剥离服务器不需要的资产,例如贴图和音频,从而缩小构建体积。Godot 4 导出的专用服务器会剥离视觉资源,并使用 --headless 标志运行。Unreal 仅能通过从源码编译的引擎构建服务器目标,而不能使用启动器版本,这使得首次构建服务器版本需要耗费较长的时间。

每个引擎的基本构建步骤都在专用服务器页面上。

无头构建如何使容器和编排成为可能?

容器将程序与其运行所需的一切打包在一起,此外别无他物。它没有连接屏幕,在大多数主机上也没有 GPU。客户端构建版本则两者都需要。而无头(headless)构建版本两者都不需要,这使得它更容易被打包为带有 Docker 的 Linux 镜像,并在任何运行容器的主机上运行。

一旦服务器成为一个镜像,编排器就可以根据需求在靠近玩家的地方启动它,并在比赛结束时将其关闭。更小的构建版本会有所帮助:在以前未运行过该镜像的主机上,更小的镜像下载和启动得更快。在 Edgegap 上,从冷启动开始的服务器部署时间中位数在滚动 30 天内为 2 秒(测量至容器就绪,在游戏引擎启动之前,数据来源:平台数据,2026年9月18日)。引擎启动时间是在此之上的,而这部分取决于构建版本。

去除图形功能也是让多个服务器共享一台机器的原因。能容纳多少台服务器取决于每个实例的内存,以及主循环占用了每个 tick 多少 CPU 预算,这两者都在剖析构建版本中进行测量。多房间服务器则更进一步,在单个进程中托管多场比赛,因此值得衡量的大小变成了每个 vCPU 的房间数。

您应该将无头服务器分发给玩家吗?

一些工作室确实会这样做。《异星工厂》(Factorio)、《瓦海姆》(Valheim)、《满意》(Satisfactory)和《雾锁王国》(Enshrouded)为玩家提供了一个无需图形界面即可运行的服务器版本,以便在他们自己的机器或租用的机器上进行托管。这些游戏在这个词条的搜索量中占了很大一部分。

这适用于一群人在一个持续存在的世界中玩数周的游戏,例如生存和建造类游戏。工作室托管的压力较小,只要社区保持服务器运行,他们就可以一直玩下去。代价则是控制权。玩家运行的服务器是玩家可以修改的服务器,并且只有在所有者更新时,补丁才会应用到该服务器。对于依赖服务器公平性的竞技游戏,工作室通常会保留服务器版本,不予公开。

来自我们的赞助商(其实就是我们自己!)的寄语

预热池(Warm pools)能实现快速分配,但您需要为处于闲置状态的服务器付费。Edgegap 从冷启动到容器就绪(在游戏引擎启动前测得)的中位时间仅为 2 秒,从而能即时开辟全新的游戏服务器,因此只有在比赛需要时才会存在服务器。

Edgegap 的观点(仅代表个人意见,姑且听之即可!)

尽早构建无头架构,然后持续对其进行评估

第一个无头(headless)构建通常是在接近发布时制作的,而那时它的问题会一下子全部暴露出来。提早制作它可以起到三个作用。

它能让你在网络上感受游戏。在本地主机(localhost)上进行游玩测试会掩盖延迟;而在真实服务器上的无头构建则能展示玩家在实际所在地玩游戏时的真实表现。Edgegap 的免费层支持一次游玩测试:无需信用卡,1.5 vCPU 和 3 GB 内存,每次部署一个,限时 60 分钟(价格,读取于 2026 年 10 月 5 日)。

它能帮你养成测量习惯。从第一次构建开始跟踪每个 tick 的 CPU 占用和每个实例的内存占用,可以告诉你一个 vCPU 能容纳多少场比赛。

它还能实现持续改进。托管按 vCPU 分钟计费,在 Edge Cloud 上为 $0.00115(同源),因此在单场比赛中节省的成本会在你托管的每场比赛中重复体现。这使得服务器构建通常成为控制托管成本的最大杠杆,并且值得在游戏的整个生命周期中为之努力。对于 Unreal,制作第一次构建的障碍在于从源码编译引擎。Edgegap 的 Docker 扩展无需编译即可构建 Linux 服务器,将平均构建时间从 2.5 小时缩短至 8.5 分钟(2025 年 10 月)。

-

-

-

雅库布·莫蒂尔

雅库布·莫蒂尔

雅库布·莫蒂尔

,

产品总监

产品总监

产品总监

常见问题

无头 Linux 服务器和无头游戏服务器是一回事吗?

无头(headless)游戏服务器需要 GPU 吗?

无头(headless)游戏服务器可以在 Windows 上运行吗?

你该如何管理一个没有显示器的游戏服务器?

Get your Game Online Easily & in Minutes

立即开始集成!

轻松在线游戏
且在几分钟内