据科技媒体Ars Technica报道,开发者卢卡斯·沃格尔(Lukas Vogel)在一篇长文中说明了他如何用SQL数据库渲染《毁灭战士》。这套名为SQLDoom的项目每秒可生成35帧、分辨率为640×480的全彩画面。
沃格尔在博文开头写道,“在数据库里渲染Doom显然是个坏主意”。按他的描述,SQLDoom由两部分组成:一个体量很小的Python客户端负责处理输入输出、驱动游戏计时,并把每一帧画面送到屏幕上;其后端则是CedarDB中的一系列数据表,用来记录游戏的几何信息和运行状态。游戏逻辑由约1300行SQL查询实现,这些查询分散在89个公共表表达式(CTE)中,负责生成位图帧缓冲。
SQLDoom是沃格尔第二次做这类尝试。他去年启动的DoomQL项目提出要“完全用SQL构建一款类似Doom的多人射击游戏”,但最终只实现了基于光线投射的灰度ASCII图形,画面更接近《德军总部3D》那种只有90度直角的简单地图。相比之下,SQLDoom输出的画面看起来可能出自原版《毁灭战士》的可执行文件。
据Ars Technica报道,想在本地运行这套“数据库版Doom”,只需准备GitHub上的代码、一份CedarDB副本和一个Doom WAD文件;也可以直接进入免费的在线托管演示对局,省去全部配置步骤。