open-sourcegamefps6dofspace-shooterretroengine type: concept 创建: 2026-04-09 更新: 2026-04-09

Descent 3

经典 6DOF(六自由度)太空射击游戏引擎开源重实现

基本信息

项目 内容
GitHub https://github.com/DescentDevelopers/Descent3
语言 C / C++
构建系统 CMake + Ninja / Visual Studio 2022
渲染 OpenGL(含 SDL3 跨平台抽象层)
许可 GPL-3.0
版本 1.6.0
依赖管理 vcpkg(Windows 内置,macOS/Linux 需手动配置)
平台 Windows / macOS / Linux

项目定位

这是 Descent 3 的开源引擎实现,由 Descent 社区在原 GPL-3.0 代码基础上维护,包含 1.5 patch(由 Kevin Bentley 和 Jeff Slutter 编写)。需要注意的是:必须自行提供原始游戏数据文件,引擎本身不含游戏内容。

核心技术点

6DOF 空间移动

Descent 系列最核心的特性——六自由度移动,区别于传统 FPS 的平面移动,玩家可在 3D 空间中任意翻滚、倒转、侧飞。这是通过数学上的欧拉角+四元数结合实现的,是其独特游戏性所在。

模块化子系统架构

Descent3/        # 主游戏逻辑(133 cpp + 141 h)
├── ai*          # AI 行为系统
├── renderer/    # 渲染管线(OpenGL)
├── networking/  # 网络通信
├── physics/     # 物理引擎
├── scripts/     # 脚本系统
├── ui/          # UI/Cockpit 仪表盘
├── netgames/   # 多人游戏模式
├── model/       # 3D 模型加载
├── bitmap/      # 纹理/Bitmap 处理
├── ddion/       # I/O 系统
├── mem/         # 内存管理
└── ...

扁平子目录(库模块)

目录 职责
2dlib/ 2D 图形库
bitmap/ Bitmap/纹理处理
cfile/ 文件 I/O 打包系统
ddio/ 跨平台 I/O 抽象层
grtext/ 文字渲染
libmve/ MVE 视频解码(游戏过场动画)
model/ 3D 模型格式
physics/ 物理/碰撞检测
rtperformance/ 性能统计
unzip/ ZIP/HOG 资源包解压
AudioEncode/ 音频编码
sndlib/ 音频库
stream_audio/ 流式音频
netcon/ 网络控制台

构建系统

  • CMake 3.20+ + Ninja(或 Visual Studio 2022)
  • vcpkg 统一依赖:SDL3(视音频输入)、cpp-httplib(HTTP 下载关卡)、glm(数学库)、plog(日志)、zlib(压缩)
  • 支持 CMake Presets:win / linux / macos
  • 编译产物默认放 builds/<platform>/build/Debug|Release/

协作与分发

  • Discord: Descent Developer Network
  • cpp-httplib 集成:游戏运行时可通过 HTTP 下载额外关卡
  • Level 文件格式:.hog / .txt 打包系统

玩法特点

  • 6DOF 飞行射击:在密闭 3D 隧道/空间中自由翻滚飞行,配合导弹/激光/离子炮
  • 多人网络:经典 IPX 网络协议继承,现代端口支持 TCP/IP
  • 关卡编辑器:内嵌地图编辑器,支持自制关卡
  • AI 敌人:多类型机器人敌人,各有不同攻击模式

对公司 AI 游戏的参考价值

方向 启示
6DOF 移动物理 3D 空间任意方向运动的自定义物理实现(非 CharacterController 平面限制)
引擎/数据分离 必须提供游戏数据的设计——AI 演示环境可复用此模式,引擎开源+内容闭源
CMake+vcpkg 现代构建 C++ 项目依赖声明式管理参考
SDL3 跨平台抽象 统一视音频输入抽象层,无需直接调用平台 API
多人网络同步 继承自原版 IPX 的 P2P 网络模型对实时同步有参考价值

相关页面