Skip to content

附录 E 引擎适用场景与游戏类型选型指南

核心问题:BigWorld / KBEngine 这套 Base/Cell 分离的 MMO 服务器架构,到底适合什么类型的游戏?什么类型的项目用了反而增加负担?

E.1 先看架构基因

BigWorld 和 KBEngine 的架构不是"通用游戏服务器",而是围绕一个特定问题域设计的:大规模多人同时存在于同一持续世界

这套架构的核心基因:

基因具体表现带来的约束
大世界空间管理BSP 树 / SpaceMemory / Cell 分割启动成本高,不适合小房间
AOI 视野系统十字链表 + RangeTrigger + Witness为"大量实体共存"优化
分布式进程模型Login / Base / Cell / DB 多进程协同部署复杂,至少 6+ 进程
实体持久化DBMgr + 数据库 + 在线检出为"长期存档"设计
Base/Cell 分离逻辑与空间解耦增加了概念复杂度
脚本层热更新Python 脚本 + 热更新为"长期运营、频繁更新"设计

这些基因决定了引擎的甜蜜区不适区

E.2 游戏类型分类框架

按技术需求维度,把常见游戏类型分成四类:

                    同时在线玩家密度
                    低 ←──────────────→ 高

       ┌───────────────────────────────────────┐
  短   │  第一类:房间制游戏                    │  第二类:MOBA / 大逃杀
  局    │  - 塔防、卡牌、棋类                    │  - LoL、Dota、PUBG
  时    │  - 匹配 → 开局 → 结算                 │  - 匹配 → 大房间 → 结算
  间    │  - 无持久世界状态                      │  - 单局结束即销毁
       ├───────────────────────────────────────┤
  长   │  第三类:中型 MMO                      │  第四类:大型 MMO / 虚拟世界
  局    │  - 社交游戏、手游 RPG                  │  - WoW、EVE、SLG
  时    │  - 小场景 + 大厅                       │  - 无缝大世界
  间    │  - 千人级在线                          │  - 万人级在线
       └───────────────────────────────────────┘

第一类:房间制游戏(短局 + 低密度)

代表:塔防(绿色循环圈)、卡牌(炉石)、棋类、派对游戏、跑酷、消除

技术特征

  • 单局 5-30 分钟,结束后房间销毁
  • 每局 1-8 人,极少超过 16 人
  • 不需要持久化世界状态(只需存玩家数据)
  • 网络需求:房间内全量同步即可
  • 核心瓶颈在客户端表现和游戏逻辑平衡

引擎匹配度

BigWorld / KBEngine 能力房间制游戏需求匹配度
AOI 视野系统不需要(全量同步)多余
Cell/Space 分割不需要(单房间)多余
分布式进程模型单进程够用过重
实体持久化仅玩家数据杀鸡用牛刀
Ghost/Witness不需要多余
热更新有用但不关键低价值

结论极不推荐。架构复杂度远超需求,开发、部署、运维成本全部浪费。

推荐替代

  • 客户端引擎自带网络:Unity Netcode / Mirror / Photon PUN
  • 轻量房间服务器:Colyseus(Node.js)、Nakama、Photon Server
  • 自建服务端:Go / Node.js + WebSocket,几百行代码即可

第二类:MOBA / 大逃杀(短局 + 高密度)

代表:LoL、Dota 2、PUBG、Apex Legends、永劫无间

技术特征

  • 单局 15-45 分钟,结束后销毁
  • 单局 10-100+ 人,需要高效的状态同步
  • 精确的物理/位置同步(fps 级)
  • 匹配系统是核心(非引擎关注点)
  • 反作弊是关键需求

引擎匹配度

BigWorld / KBEngine 能力MOBA/大逃杀需求匹配度
AOI 视野系统有用(大地图,远距离可见性)
Cell/Space 分割不需要(单房间单进程)多余
分布式进程模型每局独立进程即可过重
实体持久化不需要(局内存活)多余
Ghost/Witness战争迷雾需要,但实现方式不同部分
Python 脚本层性能不够(需要帧同步或状态同步)不匹配

结论不推荐。这类游戏需要的是帧同步/确定性状态同步引擎,而非 MMO 架构。性能要求(tick rate、延迟)远超 Python 脚本层能提供的。

推荐替代

  • 自建帧同步引擎:C++ / Rust,确定性锁步
  • 状态同步框架:Unity DOTS + Netcode、SpatialOS(现为 Project Mirabel)
  • 专用方案:根据项目规模定制

第三类:中型 MMO(长时间 + 中密度)

代表:手游 RPG、社交游戏(摩尔庄园)、中小型 SLG、放置类 MMO

技术特征

  • 分场景/分线路,单场景百人级
  • 需要持久化角色、装备、社交关系
  • 热更新需求高(手游频繁发版)
  • 同屏玩家数可控
  • 运营周期长(月/年级别)

引擎匹配度

BigWorld / KBEngine 能力中型 MMO 需求匹配度
AOI 视野系统有用(场景内可见性控制)
Cell/Space 分割有用(分场景管理)
分布式进程模型KBEngine 的粗粒度够用
实体持久化核心需求
热更新核心需求
Ghost/Witness边界场景可能用到

结论KBEngine 合适,BigWorld 偏重。千级 CCU、分场景、需要持久化和热更新——这正是 KBEngine 的甜蜜区。BigWorld 的完整方案在这个量级显得过重。

推荐替代(按团队情况)

  • KBEngine:团队有 C++/Python 经验,追求开源可控 → 最佳选择
  • Skynet(云风):Lua 驱动,适合轻量 MMO
  • 商业引擎服务:Photon Quantum、Improbable SpatialOS → 成本高但省事

第四类:大型 MMO / 虚拟世界(长时间 + 高密度)

代表:WoW 类 MMORPG、EVE Online、大型 SLG(万国觉醒)、元宇宙概念产品

技术特征

  • 无缝大世界,万人同屏
  • 需要动态负载均衡
  • 极端的数据持久化需求
  • 高可用、容灾是刚需
  • 运维复杂度极高

引擎匹配度

BigWorld / KBEngine 能力大型 MMO 需求匹配度
AOI 视野系统核心需求
Cell/Space 分割核心需求(BSP 更好)BigWorld 高,KBEngine 中
分布式进程模型核心需求
实体持久化 + 主从BigWorld 的 Primary/Secondary 更好BigWorld 高,KBEngine 中
容错与灾备核心需求BigWorld 高,KBEngine 低
负载均衡核心需求BigWorld 高,KBEngine 低
Reviver 进程守护生产环境刚需BigWorld 有,KBEngine 无

结论BigWorld 设计目标即为此。KBEngine 能做到千级 CCU,但万人级需要补齐负载均衡、容灾、进程守护等短板(参见 Ch21 和 Ch23 的差距分析)。

E.3 一张图总结

                    ┌─────────────────────────────────┐
                    │      BigWorld / KBEngine         │
                    │      适用场景雷达图               │
                    └─────────────────────────────────┘

        持久世界需求 ──────────────────── 高频实时同步
           ★★★★★                        ★☆☆☆☆
              │                            │
              │    MMORPG / SLG             │    FPS / MOBA
              │    ★★★★★                   │    ★☆☆☆☆
              │                            │
  大规模 CCU  │                            │   小房间制
   ★★★~★★★★★ │                            │   ★☆☆☆☆
              │                            │
              │    沙盒 / 虚拟世界           │    塔防 / 卡牌
              │    ★★★★☆                   │    ★☆☆☆☆
              │                            │
        热更新频率 ──────────────────── 实时物理精度
           ★★★★★                        ★☆☆☆☆

星级解读:★☆☆☆☆ = 完全不匹配,架构多余;★★★★★ = 核心甜蜜区

E.4 决策流程

你的项目是什么?

├─ 单局制(匹配→开局→结算)?
│   └─ 是 → 不用 BigWorld/KBEngine
│       ├─ 1-16 人 → 轻量房间服务器(Colyseus / Photon)
│       └─ 10-100 人 → 专用帧同步/状态同步方案

├─ 持久世界(角色/装备长期存活)?
│   ├─ 单场景百人级?
│   │   └─ 是 → KBEngine(甜蜜区)
│   │         或 Skynet / 自建方案
│   │
│   ├─ 多场景千人级?
│   │   └─ 是 → KBEngine(最佳匹配)
│   │         粗粒度进程模型刚好够用
│   │
│   └─ 无缝大世界万人级?
│       └─ 是 → BigWorld 架构思想
│             或补齐 KBEngine 的负载均衡/容灾短板
│             或考虑商业 MMO 引擎方案

└─ 不确定?
    └─ 问自己三个问题:
        1. 是否需要"同一世界中长期共存的大量玩家"?
        2. 是否需要复杂的空间分割和视野管理?
        3. 是否需要长期运营中的不停服热更新?
        → 三个"是" → BigWorld/KBEngine 值得考虑
        → 有"否" → 重新评估,可能有更简单的方案

E.5 常见误区的澄清

误区一:"MMO 引擎做所有游戏都更强"

事实:架构是取舍。MMO 引擎为了"大规模 + 长时间"做了大量妥协(进程多、部署重、延迟容忍度高)。用它做实时对战,反而处处掣肘。

误区二:"KBEngine 可以缩到单进程运行"

事实:技术上可以(所有组件跑在同一台机器),但你仍然要理解 Login/Base/Cell/DB 的分工机制、EntityCall 跨进程通信、Base/Cell 分离等概念。这些认知负担不会因为部署缩小而消失。

误区三:"服务器引擎和客户端引擎是一样的东西"

事实:KBEngine / BigWorld 是服务器引擎,不包含渲染、UI、动画、音效。客户端需要另外选择(Unity、Unreal、Godot 等)。两者通过网络协议通信。选引擎时需要同时考虑服务端和客户端。

误区四:"开源 = 适合学习时用"

事实:KBEngine 适合学习 MMO 服务器架构思想(Base/Cell 分离、AOI、Ghost 等),但如果你的目标是做一个小游戏,学习它的时间不如直接学轻量方案。学架构思想 ≠ 用它做项目

E.6 与 Ch23 选型建议的交叉参考

本附录聚焦"游戏类型 → 引擎匹配",Ch23 §23.15 聚焦"BigWorld vs KBEngine 技术选型"。两份指南的关系:

你在选什么先看哪里再看哪里
游戏类型是否适合这套架构本附录 E.4 决策流程
BigWorld 还是 KBEngineCh23 §23.15 选型建议本附录 E.2 量级分析
具体技术差距Ch23 全文十维度对照Ch21 容错与运维
替代方案选什么本附录 E.2 各类型推荐替代

小结

BigWorld / KBEngine 的架构基因决定了它们的适用边界:

  • 甜蜜区:千人级 CCU 的持久世界 MMO(RPG、SLG、社交游戏)
  • 可用区:万人级 MMO,但 KBEngine 需要补齐短板
  • 不推荐区:房间制游戏、实时对战、帧同步类游戏

选引擎不是选"最强的",而是选"刚好合适的"。架构过度设计带来的复杂度,往往比功能不足更致命。