有人把《毁灭战士》跑进了SQL数据库:SQLDoom项目
开发者Lukas Vogel在长文中介绍了SQLDoom项目:用SQL数据库渲染《毁灭战士》。准确地说,小型Python客户端负责输入输出、驱动计时并把每帧显示到屏幕;后台由CedarDB表跟踪几何与游戏状态,约1300行SQL查询分布在89个公用表表达式中实现逻辑,并以每秒约35帧生成位图帧缓冲。相较其去年的DoomQL——试图用SQL做多人类Doom射击、最终只能呈现类似《狼穴3D》的光线投射灰度ASCII画面——新版SQLDoom可输出640×480全彩帧,观感接近原版可执行文件。Vogel称把经典WAD转为关系库相对直接,因关卡本就拆成顶点、线段、扇区等;著名的二叉空间分割树也可借助加载时为各位置预计算的sort_key写入SQL,每帧用ORDER BY决定显示或忽略哪些墙面片段,从而大幅提升性能。他坦言在数据库里渲染Doom显然不是好主意,但展示了关系查询能承载复杂实时游戏逻辑。
