- 开发者卢卡斯·沃格尔将 Doom 移植至完全运行于 SQL 数据库的环境中
- 该端口通过约 1,300 行 SQL 代码生成 640×480 分辨率的全彩帧
- 早期项目 DoomQL 因缺失 BSP 树穿越机制,促使沃格尔开发新版本
开发者卢卡斯·沃格尔(Lucas Vogel)已完成一项技术挑战:将经典游戏《Doom》移植到完全依赖 SQL 数据库运行的环境中。在该方案中,游戏逻辑与渲染过程均通过查询语句处理。

该项目命名为 SQLDoom,利用 CedarDB 表存储层次几何数据及游戏状态,同时借助轻量级 Python 脚本负责时间管理、输入处理及显示输出。
SQLDoom 能够以 640×480 分辨率实现每秒 35 帧的全彩画面输出。整个项目由分布在 89 个查询块中的约 1,300 行 SQL 代码构成。
早期尝试的局限性
去年推出的早期项目 DoomQL 依赖于基于灰度文本字符的射线投射技术,其视觉效果更接近《Wolfenstein 3D》而非《Doom》。
DoomQL 跳过了 BSP(二叉空间分割)树穿越环节,而这一机制是区分《Doom》渲染方法的关键特征。这一缺陷促使沃格尔着手开发第二个版本。
在 SQLDoom 中,开发者要求渲染系统和游戏循环完全通过 SQL 执行,输出结果严格限定为精确的颜色表或位图。
沃格尔在项目博客中指出,在数据库中渲染《Doom》显然并非高效之举。
构建新版本意味着必须使用数据库操作来重建《Doom》渲染过程中的关键部分,而非沿用传统游戏引擎代码。
平面几何的处理相对简单,因为在地图加载时计算的排序键允许通过单个排序子句确定需要绘制的墙段。
然而,楼层和天花板的渲染构成了更大挑战。《Doom》原始引擎使用了视平面和状态更改机制,这两者难以直接转化为列对列的 SQL 渲染逻辑。
为此,沃格尔采用了一种他称之为“相当巧妙”的方法,通过一系列排序的面板来填补这些表面。
性能表现与服务器测试差异
据沃格尔报道,在搭载 Ryzen 7 7840U 芯片的笔记本电脑上,游戏通常能达到每秒 60 帧,但在复杂场景下可能降至每秒 35 帧。
他表示,尽管桌面环境带来了显著的开销,但该端口的运行速度仍快于他去年开发的简化版 DoomQL。
沃格尔称,虽然初衷是将其作为技术演示,但实际体验感觉就像是在玩真正的《Doom》。
该端口还支持死亡对战模式,并在欧洲和美国的公共在线服务器上开放多人对战功能。
尝试在线演示的用户反馈显示表现缓慢,一家媒体认为这主要归咎于服务器性能而非端口本身的问题。
沃格尔认为,数据库的优势在于能够保持稳定的游戏状态记录,避免部分应用更新导致的物理错误。
报道指出,这项工作也是对 CedarDB 系统的展示,该系统能够将复杂查询编译成机器代码。
有兴趣的用户可以通过 GitHub 获取代码,并结合 CedarDB 和《Doom》原始的 WAD 数据在本地运行体验。





