open-sourcegamefpssource-portquakedossoftware-rendering type: concept 创建: 2026-04-09 更新: 2026-04-09

Chocolate Quake

精准还原 Quake v1.09 DOS/WinQuake 体验的极简源码端口,Bug 兼容优先,无现代增强

基本信息

项目 内容
GitHub https://github.com/Henrique194/chocolate-quake
语言 C99
构建系统 CMake 3.21+
渲染 纯软件渲染(无硬件加速)
依赖 SDL2 >= 2.26.5, SDL2_net, libvorbis, libflac, libmad
许可 GNU General Public License v3
平台 Windows, Linux, macOS

核心技术点

Bug-Compatible 设计哲学

与 Chocolate Doom 一脉相承:精准还原而非改进。重现 Quake v1.09 及更早 DOS 版本的行为,包括原始 bug 和 quirks。输入处理、渲染和计时机制力求与原版一致。

无硬件加速

  • 无 OpenGL/Vulkan 加速
  • 纯软件渲染,保持 DOS/WinQuake 原生体验
  • 无现代视觉效果(如阴影、bloom 等)

模块化源码结构

src/
├── camera/      # 摄像机系统
├── client/      # 客户端逻辑
├── cmd/         # 命令解析
├── common/      # 公共定义
├── console/     # 控制台
├── crc/         # CRC 校验
├── end_screen/  # 结束画面
├── host/        # 主机初始化+主循环
├── input/       # 输入处理
├── mathlib/     # 数学库
├── memory/      # 内存管理
├── menu/        # 菜单系统
├── model/       # 模型加载
├── net/         # 网络通信
├── progs/       # QuakeC 程序虚拟机
├── renderer/    # 软件渲染器
├── screen/      # 屏幕管理
├── server/      # 服务器逻辑
├── sound/       # 音频子系统
├── status_bar/  # 状态栏
├── sys/         # 系统抽象
├── video/       # 视频输出
└── wad/         # WAD 资源读取

音频后端

支持多种音频格式:MP3 (libmad)、OGG (libvorbis)、FLAC,以及外部音乐播放(track02.ogg ~ track11.ogg)。

构建系统

  • Windows/macOS:使用 vcpkg 子模块管理依赖
  • Linux:使用系统库(apt/pacman 等)
  • CMake Presets:releasedebugrelease-vcpkgdebug-vcpkg

与标准 Quake 的区别

维度 Chocolate Quake 官方 Quake/id Tech
渲染 纯软件渲染 软件+GLQuake 可选
Bug 兼容性 保留原版 bug 修复
现代化增强
目标用户 怀旧/历史研究 现代游戏体验

对公司 AI 游戏的参考价值

方向 启示
复古体验还原 Bug-compatible 模式适合需要还原历史版本的项目
软件渲染架构 轻量级渲染器设计参考,无 GPU 依赖的嵌入式方案
模块化结构 按子系统拆分(host/client/server/renderer)便于维护
平台抽象层 sys/ 将平台差异(Win/Linux/Mac)统一抽象
音频子系统 多种格式支持+外部音乐目录设计

相关页面