KBEngine 文档KBEngine 文档
首页
源码学习
架构
API
资料
指南
GitHub
首页
源码学习
架构
API
资料
指南
GitHub
  • Part I 为什么长这样

    • 源码学习首页
    • 1. 导读与阅读方法
    • 2. BigWorld:问题、模型与核心概念
    • 3. KBEngine 系统全景
  • Part II 运行骨架

    • 4. 启动流程与进程模型
    • 5. EntityDef 与实体定义系统
    • 6. Python 运行时与脚本桥接
  • Part III 基础设施层

    • 7. 并发模型、线程与内存基础设施
    • 8. 网络基础设施:I/O 模型与进程间通信
    • 9. 分布式基础:ID、发现、注册与一致性
  • Part IV 通信与协作

    • 10. 序列化、Bundle 与网络消息
    • 11. RPC、EntityCall 与通信模式
    • 12. 属性同步与数据包广播
    • 13. 数据库、DBMgr 与持久化
  • Part V 空间、运动与拓扑

    • 14. Space、AOI 与视野系统
    • 15. 空间拓扑与动态扩容
    • 16. 移动、寻路与导航
    • 17. Ghost 系统
  • Part VI 脚本层行为

    • 18. 钩子、回调、定时器与事件
  • Part VII 前后端交互

    • 19. 客户端协议与前后端交互
  • Part VIII 运维、调试与稳定性

    • Ch20 可观测性:监控、性能分析与调试
    • Ch21 热更新、容错与运维工具
  • Part IX 串联与实战

    • Ch22 玩家完整生命周期
    • Ch23 BigWorld 与 KBEngine 对照
    • Ch24 实战源码走读
  • 阅读辅助

    • 全部目录
  • Appendix

    • 附录 A 源码阅读地图与下一步
    • 附录 B 关键算法速查
    • 附录 C 外部参考系统速查
    • 附录 D 专业术语速查
    • 附录 E 引擎适用场景与游戏类型选型指南
    • 附录 F 坐标系约定:BigWorld 与 KBEngine
    • 附录 G 服务器时间管理与世界时钟

附录 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不需要多余
Python 脚本热更新有用但不关键低价值

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

推荐替代:

  • 客户端引擎自带网络: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 的粗粒度够用高
实体持久化核心需求高
Python 脚本热更新核心需求高
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 需要补齐短板
  • 不推荐区:房间制游戏、实时对战、帧同步类游戏

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

Prev
附录 D 专业术语速查
Next
附录 F 坐标系约定:BigWorld 与 KBEngine