open-sourcegamefpsid-software3d-engine type: concept 创建: 2026-04-09 更新: 2026-04-09

Quake 2

id Software 经典 3D FPS 源码,1997 年 GPL 开源,双渲染器架构(OpenGL + Software),143K LOC C 代码

基本信息

项目 内容
GitHub https://github.com/id-Software/Quake-2
语言 C / C++
代码量 ~143,330 行 C/C++(231 个文件)
构建系统 makefile / Visual C++ 6 (dsw/dsp)
渲染器 ref_gl (OpenGL) + ref_soft (Software)
许可 GPLv2
版本 3.19 (最终版)

核心技术点

双渲染器架构

Quake 2 采用 ref_soft(软件渲染)和 ref_gl(OpenGL)双渲染器并行架构,与 Quake 1 代相同模式:

  • ref_soft/: 继承自 DOS 时代软件渲染,R_Polyse 等核心多边形绘制
  • ref_gl/: OpenGL 1.0 硬件加速渲染,GLQuake 风格实现
  • null/: 空渲染器(无输出,用于服务器端)
  • 两个渲染器共享 qcommon/ 底层代码

BSP + PVS 可见性渲染

  • cmodel.c: BSP 几何计算(Collision Model)
  • qfiles.h: Quake 2 关卡文件格式(.bsp)
  • PVS (Potential Visibility Set) 裁剪优化

模块化游戏逻辑

  • game/: 游戏逻辑 DLL(g_*.c),与引擎解耦
  • server/: 网络同步逻辑(sv_*.c)
  • client/: 客户端逻辑(cl_*.c,含菜单.menu.c)
  • qcommon/: 公共基础设施(cmd/cvar/files/net)

平台支持

  • win32/: Windows OpenGL (qgl_win.c)
  • linux/: Linux OpenGL (qgl_linux.c)
  • irix/: IRIX OpenGL (qgl_irix.c)
  • solaris/, rhapsody/: 其他平台

CTF 支持

  • ctf/: Capture The Flag 模组代码

玩法特点

  • 1997 年id Software 商业游戏
  • 3.18/3.19 为最终版本
  • 依赖原始 Quake 2 游戏数据文件运行
  • 完全开源的游戏引擎(需配合原版数据)

与 Quake 1 的区别

维度 Quake Quake 2
发布时间 1996 1997
渲染架构 BSP Tree BSP + PVS (相似)
游戏逻辑 内嵌 DLL 动态加载
网络代码 原始 UDP 改进的 UDP
扩展性 有限 CTF/Mod 友好

对公司 AI 游戏的参考价值

方向 启示
双渲染器架构 可分离渲染/模拟逻辑,适配不同硬件
游戏逻辑 DLL 化 AI 游戏逻辑热重载的基础
BSP 几何裁剪 复杂 3D 场景优化经典方案
模块化 client/server 分布式 AI agent 网络同步模型

相关链接