持久化

了解如何在以下平台上管理具有 24/7 始终在线部署的持久世界 私有舰队.

许多类型(MMO、沙盒、社交游戏)利用持久世界让玩家:

  • 结识并与新朋友社交;培育有机的玩家社区,

  • 探索一个由玩家放置的用户生成内容所填充的鲜活开放世界,

  • 参与与大型团队或整个公会进行、持续数小时的史诗团本战斗。

探索以下策略以 提供尽可能出色的玩家体验、控制成本,并消除因故障或回滚导致的玩家沮丧情绪。通过将易于游戏开发者使用的边缘计算优势引入,增强传统的服务器模型。

✔️ 准备工作

要实现持久、不中断的 24/7 始终在线部署:

如果您需要帮助, 请通过 Discord 与我们联系。有关真人游戏支持,请参阅我们的 工单系统.

🔑 服务器所有权

以边缘计算为切入点,探索现代与传统所有权模型的优缺点。

工作室托管

服务器托管传统上由工作室管理,托管成本由游戏收入覆盖。

👍 优点

  • 透明的产品定价——托管成本由玩家的许可/订阅覆盖,

  • 在客户端、服务与扩缩松耦合的前提下具备强大的客户端/服务器兼容性,

  • 由于服务器为闭源性质,因此更能抵御作弊与逆向工程。

👎 缺点

  • 为了确保服务器完整性与稳定性,对社区模组的支持会受到限制。

社区服务器

让你的玩家自行托管并资助他们的服务器,消除对第三方租赁服务的需求。让收入流经你的工作室,而不是交给对终端用户体验质量缺乏洞察的第三方。

👍 优点

  • 通过经策展的模组清单增强模组支持, 应用与版本,

  • 由于与社区更紧密协作,改进玩家反馈循环,

  • 由于玩家承担托管成本,从而降低财务风险。

👎 缺点

  • 工作室的运营工作更多——审核玩家请求并收款,

  • 由于模组版本数量增加,客户端/服务器兼容性较弱,

  • 由于代码库分布式且存在逆向工程的可能性,更容易受到作弊影响。

🥛 容量与扩缩

学习高级技术,以优化服务器可用性、托管成本与服务质量。

容量

部署在 之后不追踪或管理活跃玩家连接 部署 ,以赋予你对任意设计的绝对控制权与自由度。

实施容量管理以确保你的服务器:

  • 最大化成本节省—— 基准测试 并高效利用服务器资源,

  • 提供流畅的游戏体验——防止过多并发玩家导致服务器过载,

  • 防止因崩溃引发的差评——捕获并处理意外异常。

为确保高效的服务器容量管理:

  • 在以下情况下释放玩家名额,如果 匹配到游戏服务器的玩家 在几秒内未连接,

  • 频繁地从客户端向服务器发送最小心跳消息以跟踪活动,

  • 若数秒内未检测到活动,则断开客户端并释放玩家名额,

  • 防止将玩家加入已满且没有可用名额的服务器。

向上扩容

扩容持久服务器不需要“拍脑袋估算” 区域流量或服务器成本。为 私有舰队 以下时段预留 低谷 的容量,并在意外峰值时自动溢出到云端。

实施服务器扩缩策略以:

  • 在谨慎防范滥用的同时实现大规模托管,

  • 尽量减少空闲待命服务器造成的浪费成本,

  • 通过快速响应玩家需求增长来避免长时间排队。

自动扩缩参考架构

集成要点

  1. 客户端集成扩缩授权(Scaling Authority)—— 匹配器, 服务器浏览器,或自定义方案。

    1. 发现其他玩家,在运行中的服务器中预留容量,或在需要时请求新服务器。

  2. 扩缩授权会分配正在运行的服务器,或启动新服务器以服务玩家。

  3. 服务器实时通知扩缩授权有关服务器启动/停止与玩家连接变更。

    1. 扩缩授权会删除(过期)无响应(崩溃)服务器的陈旧记录。

  4. 客户端直接与服务器连接并建立游戏会话,随后进入游戏流程。

我们强烈建议基于连接数进行扩缩,而不是基于物理负载 (CPU 与 RAM),因为物理负载的瞬时波动可能导致不可预测的可用性。

向下缩容

高效的缩容策略是优化成本的关键,但 关闭服务器 如果不谨慎,可能会负面影响玩家体验。 在发布前考虑这些因素并测试变更:

你对玩家活动/断连的检测是否可靠?

  • 输入的缺失是否能可靠地指示玩家不活跃?玩家常用机器人、宏等技术伪造活动并保持连接以避免排队时间。

  • 活跃玩家经常执行、且难以伪造的行为是否存在?

  • 持久化 服务器上,使用机器人或宏是问题还是特性?

关闭服务器是否容易且快速地可逆(能迅速恢复扩容)?

  • 一旦达到 部署,你的服务器可能需要额外时间执行引擎初始化与 持久化 (状态恢复)。你是否会因游戏服务的计算或数据传输产生额外成本?这段等待时间是否影响玩家体验?

  • 你能否通过加载场景、小游戏、大厅或其他方式来掩盖服务器加载?

玩家是否绑定到特定的服务器实例,还是可以轻松迁移?

  • 连接到不同服务器会如何影响玩家的账号、购买历史、社交体验、进度、物品栏及其他游戏玩法要素?

  • 审查你的 持久化 并确保关键数据不丢失。

  • 实施自动化方法或玩家工具来恢复关键数据。

  • 提供人工支持,并就故障与问题与社区沟通。

🔎 可发现性

为寻找接受新玩家的活跃服务器,实施一种或多种发现方法:

💭 配置与状态

集成服务以定义初始服务器需求,并管理玩家与服务器状态。

配置管理

配置是指 部署期间传递给服务器的初始数据:

配置是不可变的 ——在服务器启动后读取一次,之后不会改变。

状态管理

状态指的是描述 一系列先前玩家行为与服务器事件结果的数据:

状态数据经常变化。 服务器权威会选择性地向客户端更新相关信息。

游戏对象通常指定一个控制它们的所有者,可以是服务器或玩家。

服务器拥有的对象

服务器拥有的对象只能由服务器操控。已连接的玩家对服务器拥有的对象仅有受限的读取权限。服务器拥有的对象通常不会与其他服务器共享。

玩家拥有的对象

玩家拥有的对象既可由玩家操控,也可由服务器操控。将持久对象的所有权分配给玩家,可在后续更易迁移到其他服务器。

通过服务器权威验证变更以防止作弊。权威与所有权可以分离。

恢复目标

在出现问题时,某些类别的数据对丢失更为敏感,例如:

  • 账号、订阅、购买与小额交易数据—— 关键,

  • 进度、成就、排行榜与物品栏数据—— 重要,

  • 反作弊、审核、性能与错误追踪数据—— 重要,

  • 玩家行为、社交、聊天数据—— 低重要性.

我们强烈建议你的团队讨论以下内容:

  • 你的游戏客户端与服务器所处理的数据类别,

  • 每个类别对你的业务与玩家的重要性与敏感度,

  • 恢复点目标(RPO)——在造成严重损害前可接受的数据丢失量,

  • 恢复时间目标(RTO)——在造成严重损害前可接受的停机时长。

信号给你的主进程,允许短暂的终止期限。一旦到期,会发送

长时间运行的持久服务器带来了新的可观测性挑战,尤其是在监控、日志与缺陷追踪中的异常检测。

我们 强烈建议为服务器重启实施告警 以提升对问题的可见性。

我们的 端点存储 日志集成 只会传输日志 部署之后,添加自定义日志与缺陷追踪(例如 Sentry)以排查部分故障与缺陷。

最后更新于

这有帮助吗?