不是目录导览
文档按架构决策组织,每章固定覆盖设计目标、调用链、线程归属、源码取舍和验证边界。
研究主线:BigWorld 不是普通 Python 项目,而是 C/C++ 主导、嵌入 Python 2.7 的分布式 MMO 服务器引擎。学习它的价值不在“照搬旧代码”,而在理解一个成熟商业 MMO 引擎如何在当时的平台约束下处理网络、实体、空间、负载、脚本和运维。
先建立证据分级,避免把源码事实、时代推断和主观猜测混在一起。
从 BaseApp、CellApp、DBApp、Mgr、LoginApp、Reviver 的职责边界理解分布式架构。
分析主 Reactor、Timer、FrequentTask、Network 的执行顺序和 Tick 公平性。
分析 select、poll、epoll、批量 UDP、SO_REUSEPORT、io_uring 与 Mercury 执行模型的边界。
分析 Mercury Channel 的 ACK、重发、窗口、piggyback、indexed channel 与版本语义。
解释 InterfaceElement、Bundle、RPC、EntityDef 契约、BinaryStream、DataType 和 DataDescription。
覆盖线程架构、后台任务、Python GIL、热更新、测试时间控制、动态扩展和容灾。
分析 Base/Cell/Client、AOI/Witness/Ghost、Cell 分区、实体迁移和 DB 持久化。
补齐安全限流、加密、Watcher/Profiler/日志、内存生命周期、构建依赖与 MMO 架构边界。
epoll,但保持类似 select 的 level-triggered 语义,不是 ET 或 io_uring 架构。entities.xml、.def、组件、接口、脚本分布、消息范围和 digest 共同生成,实体顺序和 exposed 编号具有协议含义。reloadScript 是开发调试导向的高风险迁移机制,源码明确警告不要用于生产环境。timestamp(),可控虚拟时间是可重复测试的重要缺口。