开发者 Lukas Vogel 近日发布长文,详细介绍了其 SQLDoom 项目——一个完全在 SQL 数据库中运行的《毁灭战士》(Doom)游戏实现。尽管在数据库中运行游戏看似违背常规,但该项目通过独特的架构实现了这一目标。

SQLDoom 并非单纯依靠数据库逻辑驱动画面,而是采用了一个轻量级的 Python 客户端作为前端,负责处理用户输入、输出显示以及维持游戏时序。核心的游戏状态与几何数据由一系列 CedarDB 表进行追踪。据 Vogel 介绍,游戏逻辑主要分布在 89 个公用表表达式中,涉及约 1,300 行 SQL 查询代码。这些查询以每秒 35 帧的速度生成位图帧缓冲区,从而呈现出流畅的游戏画面。
相较于 Vogel 此前开发的 DoomQL 项目,SQLDoom 在图形表现上有了显著提升。DoomQL 始于去年,旨在构建一个完全基于 SQL 的多人射击游戏,但最终受限于技术实现,仅能提供类似《沃尔夫斯坦 3D》风格的灰度 ASCII 射线投射图形,且视角局限于简单的 90 度角度地图。而最新的 SQLDoom 则能够渲染出全彩色的 640x480 分辨率画面,视觉效果已接近原版 Doom 可执行文件。





