Skip to content

源码导读

本章帮助你快速理解 BigWorld 源码的整体结构和阅读路径。不是目录罗列,而是按职责和依赖关系组织的导航图。

源码入口

BigWorld 源码位于 programming/bigworld/,主要分为以下几层:

programming/bigworld/
├── server/           # 服务端进程
├── client/           # 客户端
├── lib/              # 核心库 (最重要)
├── tools/            # 编辑器和工具
├── third_party/      # 第三方依赖
├── build/            # 构建脚本
└── common/           # 共享定义

核心库结构

lib/ 是整个引擎的核心,包含 57 个子库。按职责可分为:

基础设施层

职责关键文件
cstdmf基础工具库debug.hpp, memory.hpp, timer.hpp
network网络栈 (Mercury)channel.hpp, bundle.hpp, endpoint.hpp
math数学库vector3.hpp, matrix.hpp
resmgr资源管理resource.hpp, file_system.hpp

服务器共享层

职责关键文件
entitydef实体定义entity_description.hpp, data_type.hpp
script脚本绑定script_object.hpp, script_value.hpp
pyscriptPython 桥接py_script_object.hpp, script_output_stream.hpp
db数据库抽象idatabase.hpp, db_status.hpp

渲染与场景层

职责关键文件
moo渲染引擎device.hpp, render_context.hpp
scene场景管理scene_provider.hpp
space空间管理space.hpp
chunk室内场景chunk.hpp, chunk_space.hpp

服务端进程

server/ 目录包含 MMO 架构的核心进程:

进程职责入口文件
baseapp玩家基础数据main.cpp
cellapp游戏世界逻辑main.cpp
dbapp数据库代理main.cpp
loginapp登录服务main.cpp
baseappmgrBaseApp 管理main.cpp
cellappmgrCellApp 管理main.cpp
dbappmgrDBApp 管理main.cpp
reviver进程恢复main.cpp

阅读路径建议

路径一:网络栈

lib/network/ 入手,理解 Mercury 可靠 UDP:

  1. endpoint.hpp - Socket 抽象
  2. channel.hpp - 逻辑通道
  3. bundle.hpp - 消息打包
  4. packet.hpp - 包结构
  5. udp_channel.hpp - UDP 可靠通道

路径二:实体系统

lib/entitydef/ 入手:

  1. entity_description.hpp - 实体描述
  2. data_type.hpp - 数据类型系统
  3. data_description.hpp - 属性描述
  4. method_description.hpp - 方法描述

路径三:脚本嵌入

lib/pyscript/lib/script/ 入手:

  1. script_object.hpp - 脚本对象基类
  2. py_script_object.hpp - Python 对象包装
  3. script_output_stream.hpp - 序列化输出

路径四:服务端主循环

从任意 server/*/main.cpp 入手:

  1. 进程初始化
  2. 事件循环启动
  3. 网络监听
  4. Tick 处理

关键命名空间

命名空间说明
Mercury网络栈
BW核心工具
Script脚本绑定
DB数据库
EntityDef实体定义

构建系统

构建入口:

  • Linux: programming/Makefilebuild/make/
  • Windows: programming/bigworld/CMakeLists.txt
  • Docker: build/docker/Dockerfile

详见 构建与运行体系

下一步

按源码证据链、源码取舍和验证边界组织,而不是按目录机械罗列。