open-sourcegamethird-personactionstealth type: concept 创建: 2026-04-10 更新: 2026-04-10

Overgrowth

Lugaru 续作,3D 动作冒险游戏,含潜行/战斗/平台跳跃。代码开源(需商业版游戏数据才能运行)。

基本信息

项目 内容
GitHub https://github.com/WolfireGames/overgrowth
语言 C++ (~227K LOC,995 源文件)
构建系统 CMake(多平台:Windows/macOS/Linux)
渲染/引擎 自研引擎,SDL2 + OpenGL
许可 Apache 2.0(极宽松,可闭源商用)
依赖 Bullet Physics、AngelScript、Recast Navigation、SDL2、OpenAL、imgui
前作 Lugaru HD

核心技术点

组件式实体系统

  • Component 基类(component.h):定义 SetFromDescription(XML加载)、SaveToXML(序列化)、ReceiveObjectMessage(消息总线)三件套
  • EntityDescription XML 驱动数据加载,无需硬编码对象类型
  • 对象类型包括:movementobject(角色)、itemobject(物品)、envobject(环境)、hotspot(触发器)、navmeshregionobject(导航区域)、lightprobeobject(光照探针)、decalobject(贴花)等

自研 3D 渲染引擎(Graphics/)

  • model.cpp/h — 骨骼动画模型渲染(支持 .retarget 动画重定向文件)
  • skeleton.cpp/h — 骨骼系统(ikbone.h 逆运动学)
  • textures.cpp/htextureatlas.cpp/h — 纹理管理 + Atlas 节点树合批
  • shaders.cpp/h — GLSL Shader 管理
  • terrain.cpp/h — 地形渲染(heightmap)
  • particles.cpp/h — 粒子系统
  • lightprobecollection.hpp — 光照探针采集(IBL)
  • dynamiclightcollection.hpp/.cpp — 动态光源
  • drawbatch.cpp/h — 绘制批次合并
  • csg.cpp/h — CSG(构造实体几何)布尔运算
  • navmeshrenderer.cpp/h — 导航网格可视化调试

物理系统(Physics/)

  • Bullet Physics 集成(bulletworld.cpp/hbulletcollision.cpp/hbulletobject.cpp/h
  • Recast Navigation 导航网格(navmesh.cpp/hinput_geom.cpp/h)用于 AI 寻路
  • 物理对象通过 bulletobject.cpp 与 ECS 对象系统桥接

脚本系统(Scripting/)

  • AngelScript 集成(angelscript/ 子目录),游戏逻辑完全脚本化
  • scriptfile.cpp/h — 脚本加载管理
  • characterscript.cpp/h — 角色行为脚本
  • attackscript.cpp/h — 攻击动作脚本
  • 脚本通过 scriptparams.cpp 与引擎交互

网络系统(Network/ + Online/)

  • 双层网络架构:
    • Network/Basic/ — 基础 Socket 连接(net_framework.cpp/h 帧同步框架)
    • Network/Steam/ — Steam P2P 传输层(GameNetworkingSockets)
    • Online/ — 大厅/匹配/文件传输(online_client_connection_manager.cpp/h
  • asnetwork.cpp/h — AngelScript 网络 API 绑定
  • time_interpolator.cpp/h — 客户端时间插值(平滑同步)

数学库(Math/)

  • 手写 SIMD 矩阵(simd_mat4.cpp/h
  • 四元数/欧拉角/矩阵全套(quaternions.cpp/hmat3.cpp/hmat4.cpp/h
  • enginemath.cpp/h — 引擎数学基础

关卡编辑器(Editors/)

  • 内置关卡编辑器,数据驱动
  • 关卡信息:levelinfo.cpp/h、关卡层 detailobjectlayer.cpp/h
  • Prefab 预制件系统(prefab.cpp/h

数据格式

  • XML 驱动:对象描述(EntityDescription)、关卡配置、动画数据
  • JSON 配置:JSON/ 子系统处理游戏配置
  • 自定义资源格式(Asset/

第三方库(vendored in Libraries/)

用途
Bullet 物理模拟
AngelScript 游戏脚本 VM
Recast/Detour 导航网格
imgui Editor UI
SDL2 窗口/输入
OpenAL 音频
libvorbis/libogg 音频解码
protobuf 网络序列化
GameNetworkingSockets Steam P2P
OpenVR VR 支持
zstd 数据压缩
stb 通用工具库

玩法特点

  • 第三人称动作冒险:潜行暗杀 + 正面战斗 + 平台跳跃
  • 主角是变异鼠人(wolverine-like),擅长近战和攀爬
  • 丰富的物理交互:可拾取投掷物体、环境破坏
  • 程序化关卡叙事 + 预设战役
  • 关卡内置编辑器支持 mod 创作
  • 多人模式支持(局域网/Steam P2P)

对公司 AI 游戏的参考价值

方向 启示
ECS 架构 Component 基类 + XML 数据驱动,实体类型与逻辑完全解耦,比 Unity Component 更轻量直接
自研渲染引擎 SDL2 + OpenGL 绕过游戏引擎,是做定制化渲染(卡通/体素/特殊风格)的低成本路径
AngelScript 脚本 比 Lua 更强类型,游戏逻辑完全脚本化,逻辑/渲染分离清晰
导航系统 Recast + Bullet 物理集成,角色 AI 寻路与物理碰撞分层设计
网络同步 帧同步框架 + 时间插值,MMO/多人动作游戏可借鉴
工具链 ImGui 内置编辑器 UI,工具与游戏共享渲染/数学库
许可策略 Apache 2.0 允许闭源商用,代码可复用,学习价值极高
Mod 支持 数据驱动 + 脚本化,mod 社区活跃度取决于工具开放程度

架构亮点

Source/
├── Game/          # 游戏逻辑(角色、物品、关卡、AI 行为)
├── Graphics/      # 自研 3D 渲染引擎
├── Physics/       # Bullet 物理 + Recast 导航
├── Scripting/      # AngelScript VM + 游戏逻辑绑定
├── Network/        # 帧同步网络框架(Socket/Steam P2P)
├── Online/         # Steam 大厅/匹配/文件传输
├── AI/             # 导航网格 + 寻路算法
├── Editors/        # 内置关卡编辑器
├── Sound/          # OpenAL 音频
├── Math/           # 手写 SIMD 数学库
├── Ogda/           # 数据描述语言/序列化系统
└── Wrappers/       # OpenVR/Steam SDK 薄封装

总 LOC: ~227K(C++ 178K + Headers 49K),995 个源文件,成熟度非常高。