DOOMQL:用SQLite引擎运行《毁灭战士》风格游戏
开发者Peter Gostev使用GPT-5.6 Sol构建了DOOMQL,这是一个将SQLite作为游戏引擎的类《毁灭战士》游戏。它通过递归CTE实现光线追踪,所有游戏逻辑和渲染均由SQL查询完成。Simon Willison演示了如何运行该游戏,并利用Datasette Apps插件创建了实时显示游戏画面的Web应用。
DOOMQL是由开发者Peter Gostev基于GPT-5.6 Sol构建的一个实验性项目,它挑战了数据库的传统使用边界。该项目将SQLite从单纯的数据存储转变为完整的游戏引擎,实现了一款类似《毁灭战士》的第一人称射击游戏体验。在DOOMQL中,角色的移动、碰撞检测、敌人AI、战斗逻辑、进度追踪以及屏幕上每一个像素的渲染,均由SQL查询直接控制,没有传统游戏引擎的介入。
游戏的核心是一个在SQLite中通过递归公共表表达式(CTE)实现的完整光线追踪器。这个庞大的SQL查询负责实时计算并渲染3D场景,包括墙体纹理、物品拾取、敌人位置和武器显示等。玩家通过一个Python终端脚本来运行游戏,只需执行简单的Git克隆和uv run命令,即可在终端窗口中看到像素风格的游戏画面。游戏过程中,系统会自动生成一个名为doomql.sqlite的SQLite数据库文件,其中包含了所有游戏状态数据,如玩家位置、敌人坐标、分数、弹药和生命值等。
知名开发者Simon Willison在尝试DOOMQL后,进一步挖掘了其潜力。他使用Datasette和新的Datasette Apps插件,通过一个简单的提示词让AI(Claude Fable 5)生成了一套HTML+JavaScript应用。该应用连接到游戏生成的SQLite数据库,每秒刷新一次,在浏览器中实时显示游戏画面。Simon最初要求显示frame_pixels视图中的x、y、r、g、b列,随后又添加了一个战术小地图(minimap),这个地图以俯视网格形式显示玩家、敌人、拾取物、门和出口的位置。最终,这个Datasette应用不仅展示了游戏的第一人称视角,还提供了完整的战术地图,所有数据均来自SQL查询。
DOOMQL不仅仅是一个有趣的技术演示,它更是一次对数据库能力的极限探索。它证明了SQLite的查询语言足以支撑实时游戏渲染和交互逻辑,为创意编程和数据库应用开辟了新的思路。此外,该项目还展示了AI辅助编程的潜力——Simon Willison使用AI快速生成了可工作的前端代码,进一步降低了开发门槛。对于开发者而言,DOOMQL既是游戏,也是一个值得学习的实验样本,它展示了如何将关系数据库的查询能力应用于实时图形和交互领域。