
专用服务器
专用游戏服务器是一个独立于任何玩家机器运行比赛的服务器进程,对游戏状态拥有完全的控制权。每个客户端都会连接到它,并由它来决定实际发生的情况。这是竞技类多人游戏的主流标准,因为没有任何玩家的硬件能够影响最终的比赛结果。
,
专用服务器和监听服务器之间有什么区别?
每个多玩家游戏比赛都需要一份所有人均认可的游戏副本。问题在于该副本在何处运行。
在侦听服务器(listen server)上,它在某个玩家的游戏内部运行。该玩家在主持游戏的同时进行游戏,而其他所有人则连接到他们。在专用服务器(dedicated server)上,它作为一个独立的进程运行,没有人在上面玩游戏。每个玩家都以平等的条件连接到它。
还有两个词与该术语如影随形,每个词都代表一种不同的属性:
权威性(Authoritative)描述了由谁做出决定。权威服务器对发生的事情拥有最终决定权,而客户端只发送请求。侦听服务器也是权威的,这就是问题所在:权威属于其中一名玩家。
无头(Headless)描述了它是如何构建的。无头服务器是在没有渲染、音频或本地输入的情况下编译的游戏,因为没有人在看它。
在实践中,这三者通常描述的是同一个服务器:一个无头构建、专用运行且拥有权威的服务器。不过,仅凭专用并不能使服务器具有权威性。一台信任客户端自我报告内容的专用服务器,也可能会像其他服务器一样被欺骗。
专属服务器是如何构建的?
服务器来自与客户端相同的项目,但针对不同的目标(通常是 Linux)进行构建,并且通常打包为容器镜像,以便任何主机都能以相同的方式启动它。每个引擎的实现方式各不相同,并且每个引擎都可以通过脚本进行配置,以便持续集成 (CI) 流水线在每次提交时都能生成新的服务器镜像:
Unity 具有专属服务器 (Dedicated Server) 构建目标,可剥离渲染和仅限客户端的资产。它可以在命令行中以批处理模式进行构建,这正是 CI 流水线运行的方式。
Unreal 从单独的服务器目标构建服务器。传统上,这意味着需要从源码编译引擎,这是一个漫长的首次构建过程。Epic 发布的容器镜像现在允许流水线在无需维护自身引擎构建的情况下构建服务器目标。
Godot 4 可以将项目导出为专属服务器,从而剥离视觉资源,并使用
--headless标志运行它。没有引擎的网页游戏(例如 Three.js 客户端)则完全没有服务器构建目标。Three.js 仅用于绘制场景。服务器是一个单独的程序,通常是共享使用 JavaScript 或 TypeScript 编写的游戏逻辑的 Node.js,它通过 WebSocket 或 WebRTC 与浏览器进行通信,因为浏览器无法打开原始 UDP 连接。
Edgegap 为每个主流引擎提供自动化构建工具,包括 Godot、Unity 和 Unreal。
无论使用哪种引擎,在编写代码时如果假设存在本地玩家(例如相机逻辑、UI 或输入处理),就必须将其排除在服务器构建之外。从监听服务器开始的项目通常很晚才会发现这个问题。
专用服务器何时运行,以及由谁运行?
有两项决定会决定服务器的生命周期。
按场次或持久性。在基于会话的游戏中,服务器在匹配系统促成一场比赛时启动,并在比赛结束时关闭。在比赛之间没有任何内容运行,因此在此期间无需支付任何费用,但玩家需要等待新服务器准备就绪。而持久性世界(例如生存类服务器或 MMO 分区)无论是否有玩家连接,都会保持一个进程运行。世界一直存在,账单也一直存在。
工作室或玩家。《幻兽帕鲁》(Palworld)、《瓦尔海姆》(Valheim)和《方舟》(ARK)将他们的服务器版本分发给玩家,这就是为什么该词的大多数搜索都来自正在搭建服务器的玩家。玩家托管将成本转移到了社区,并能在官方停止支持后继续保持游戏的可玩性。
这也改变了主导权的归属。在玩家机器上运行的服务器要听命于该玩家,该玩家可以读取其内存、编辑其文件并修改其规则。其信任模型变成了点对点(P2P)模式,同样面临作弊和篡改的风险。许多游戏两者兼顾:官方服务器用于排位赛和匹配赛,社区服务器则适用于可接受信任主机的场景。
一台专用服务器需要承担多少工作?
“专用服务器”涵盖了广泛的工作范围。游戏在该范围中所处的位置就是其规模,而规模是决定托管成本的主要因素。
中继型。 服务器在玩家之间转发消息并检查少数规则,例如谁可以加入以及报告的结果是否合理。占用极少的 CPU 和内存。
结果裁判。 客户端进行模拟,服务器验证结果:得分、库存变化、购买。这足以阻止那些依赖客户端报告自身成功数据的作弊行为。
多房间。 一个进程同时托管许多个小型会话,这在休闲游戏、卡牌游戏和回合制游戏中很常见,因此该进程的成本由多场比赛分摊。
完整模拟。 服务器为每个玩家(从 2 人到 100 人或更多)运行整个游戏循环:物理、移动、命中检测,并保持固定的嘀嗒率(tick rate)。这就是竞技射击游戏所需要的,也是大多数人听到这个词时脑海中浮现的画面。
每提升一个级别,就能获得更多的保护和更高的一致性,但每个玩家消耗的 CPU 也更多。像大逃杀游戏一样托管卡牌游戏会支付过高的费用。而像卡牌游戏一样托管射击游戏,则无法阻止对自身至关重要的作弊行为。
来自我们的赞助商(其实就是我们自己!)的寄语
预热池(Warm pools)能实现快速分配,但您需要为处于闲置状态的服务器付费。Edgegap 从冷启动到容器就绪(在游戏引擎启动前测得)的中位时间仅为 2 秒,从而能即时开辟全新的游戏服务器,因此只有在比赛需要时才会存在服务器。
运行专用服务器的成本是多少?
成本取决于范围。服务器的费用是其占用的机器份额以及占用时长决定的,而有四个因素决定了该份额:
密度。一台主机上能容纳多少个实例。范围、玩家数量和 tick 率决定了每个实例所需的 CPU,而将 tick 率翻倍大致会使 CPU 需求也翻倍。
闲置容量。为峰值期间准备但在非峰值期间空置的服务器,以及运行中的服务器中从未坐满的席位。这两者都是需要付费的。
出站流量。离开服务器的每一次状态更新都会产生传输计费,并乘以每个连接的玩家数量。
GPU。如今,无头服务器很少需要 GPU。但如果游戏将 AI 推理(用于 NPC 行为或语音)转移到服务器上,则可能需要 GPU。GPU 容量的价格通常远高于 CPU,这比此列表中的任何其他因素都更能改变每场比赛的成本。
另一种选择是点对点(P2P)连接,它的托管成本为零,但代价在别处:主机玩家拥有优势,比赛取决于某一个玩家的连接质量,并且每个客户端都是受信任的,这为黑客和作弊者打开了大门。
你产生多少闲置时间取决于计费模式。预留机器无论满载还是空置都需要付费,并且在保持繁忙时每个核心的平均成本最低。按需容量仅在运行时付费:Edgegap 的 Edge Cloud 每 vCPU 每分钟收费 0.00115 美元(平台数据,最后更新于 2026 年 9 月 30 日)。玩家群体稳定的游戏通常倾向于前者,而有明显峰值的游戏则倾向于后者。
Edgegap 的观点(仅代表个人意见,姑且听之即可!)
在定价前先衡量裁判的分量
大多数团队首先会问的托管问题是选择哪个服务商。而对经济效益影响更大的是服务器需要多大。
竞技游戏需要一个深度参与的裁判:完整的模拟、玩家据此评判的 tick 率,以及每场比赛配备一台服务器。而休闲游戏通常可以在一个较小的进程中运行多个房间,并且只验证作弊者想要造假的内容。这两者都是专用服务器。但它们的分摊到每个玩家身上的成本可能相差悬殊。
因此,在进行任何定价之前,先列出哪些决定是必须由服务器做出、而不能信任任何客户端的。这个清单就是服务器的职责范围。在游戏允许的前提下,尽量缩短这个清单,但也不能过分缩减。
,










