DOOMQL把SQLite变成了游戏引擎
Simon Willison··作者 Simon Willison
关键信息
这个实现包含一个很大的SQL查询,它通过递归CTE在SQLite里完成完整的光线投射渲染。运行脚本会生成本地的 /tmp/doomql/.doomql/doomql.sqlite 数据库,还可以通过Datasette配合自定义应用每秒刷新一次屏幕视图来浏览。
资讯摘要
DOOMQL 是 Peter Gostev 做的一个带有明显玩笑性质的项目,它提出了一个刻意不合理的问题:如果 SQLite 不是只用来存游戏数据,而是直接充当游戏引擎,会发生什么?最终结果是一个小型原创类 Doom 游戏,SQL 负责控制移动、碰撞、敌人、战斗、进度,甚至屏幕上显示的像素。这个游戏用 Python 终端脚本实现,Simon Willison 在克隆仓库后,直接通过 `uv run host/doomql.py` 跑了起来。终端里显示的是复古的第一人称走廊,以文本模式像素艺术的方式渲染,同时还显示 HP、弹药、分数,以及“find the index token”的任务提示。
Willison 还指出,仓库里有一个很大的 SQL 查询,它通过递归 CTE 在 SQLite 中实现了完整的光线投射渲染。运行脚本后,会在本地生成 `/tmp/doomql/.doomql/doomql.sqlite` 这个 SQLite 数据库,并且可以用 Datasette 打开查看。借助 Datasette Apps 插件,他又做了一个自定义的 HTML+JavaScript 应用,直接查询 `frame_pixels` 视图,并每秒刷新一次,从而在浏览器里同步显示游戏画面。随后他再加上一个小地图,形成了一个直接由 SQL 驱动的网页伴侣界面。

来源与参考
收录于 2026-07-15