Discussion: 明星豪宅
2026年10月4日,据Tom's Hardware报道,一位数据库专家成功用纯SQL构建了完整可玩的《毁灭战士》(Doom)游戏,项目名为SQLDoom。该游戏仅用5900行SQL代码实现,其中图形渲染器仅1300行,跨越89张数据库表,实现了60FPS流畅画面、音效和多人对战功能,成为继实验性项目DoomQL之后的重大突破。该项目的源代码已公开发布在GitHub上。
楼市动态从DoomQL到SQLDoom:演化之路
SQLDoom的开发者Kev(化名)在2025年曾发布过DoomQL,一个仅用约2500行SQL实现的《毁灭战士》基础版本。当时DoomQL能够渲染简单几何场景,但帧率仅约20FPS且无声音。Kev在社交平台上表示:“DoomQL只是概念验证,我决定重新设计架构,让SQL真正运行完整的游戏。”经过三个月的重构,SQLDoom实现了完整的软件渲染管线,通过PostgreSQL的递归公用表表达式(CTE)逐像素绘制画面。开发者指出,新版本将数据库表从30张扩展到89张,分别存储纹理、几何体、精灵和音效样本。
房价走势图形渲染器:1300行代码构建三维世界
图形渲染是SQLDoom最令人惊叹的部分。据项目文档描述,渲染器使用PostgreSQL的窗口函数和递归查询完成光线投射算法的每一步:从视点发射射线、计算与墙壁的交点、根据纹理映射填充像素。整个渲染过程完全在数据库查询中完成,不借助任何外部图形库。Kev解释说:“每一帧由约300条嵌套查询组成,动态生成64×64像素的画面。”表中存储了《毁灭战士》的原始精灵帧和武器动画,渲染器根据玩家视角实时查询并合成图像。
就业形势
性能优化:如何在数据库达到60FPS
实现60FPS的关键在于查询优化。Kev分享了性能对比数据:
考研资讯| 特性 | DoomQL (2025) | SQLDoom (2026) |
|---|
| --- | --- | --- |
|---|
| 总代码行数 | 约2,500行 | 5,900行 |
|---|
| 图形渲染行数 | 约600行 | 1,300行 |
|---|
| 数据库表数 | 30张 | 89张 |
|---|
| 平均帧率 | 约20 FPS | 60 FPS |
|---|
| 音效支持 | 无 | 有(8位波形) |
|---|
| 多人模式 | 无 | 最多4人 |
|---|
| 开发周期 | 约6周 | 约12周 |
|---|
据Tom's Hardware分析,性能提升主要源于索引优化和查询并行化。Kev对90%的热点查询建立了复合索引,并将屏幕分区后并行执行渲染分片。另外,音效通过存储8位PCM波形并用临时表序列播放,延迟控制在200毫秒以内。
多人模式:跨会话的数据库对战

SQLDoom支持最多4名玩家在同一数据库实例中联机对战。实现方式是利用PostgreSQL的监听/通知机制:每个玩家连接为一个数据库会话,当射击、移动或拾取物品时,会向公共频道发送事件通知;其他会话监听该频道并更新各自状态。Kev指出:“数据一致性通过事务隔离级别保证,但故意放弃了部分ACID以换取实时性。”2016年10月4日的发布版本支持死亡竞赛模式,使用随机生成地图。
开发者动机:探索数据库的计算边界
Kev在项目的FAQ中写道:“我的目标是证明关系数据库可以成为通用的计算平台,而不只是存储引擎。”他受到“Running Doom on everything”社区启发,此前已有用Excel、计算器和打印机运行《毁灭战士》的先例,但用完整SQL实现图形引擎尚属首次。Kev透露,他花费约120小时调试递归查询的无限循环问题,最复杂的渲染查询嵌套深度达47层。Tom's Hardware的记者引用Kev的原话:“当我看到第一个像素正确显示时,我知道SQL的力量远超我们的想象。”
项目开源与社区反响
SQLDoom的完整源代码以MIT许可证发布在GitHub上,截至发稿已获得超过8000颗星。多位数据库从业者在Reddit上评价该项目“重新定义了数据库的边界”。一名PostgreSQL贡献者表示:“看到CTE被这样使用令人震惊,它展示了SQL图灵完备性的真实力量。”同时也有批评指出该项目实用性有限,Kev回应说:“这就像在可乐瓶里造核潜艇——重点不是实用,而是挑战极限。”

FAQ
Q1: SQLDoom需要哪些软件环境才能运行?
A1: 需要PostgreSQL 15及以上版本,推荐安装pg_hint_plan扩展以优化查询计划。硬件方面,开发者使用AMD Ryzen 7 5800X搭配32GB内存即可达到60FPS。游戏安装过程包括导入SQL脚本、创建专属数据库并运行初始化查询。
Q2: SQLDoom能用于实际游戏吗?
A2: 该项目纯粹出于技术挑战目的,不适合作为日常游戏体验。网络延迟较高(玩家间约100ms),且操作通过键盘输入SQL命令实现(例如“INSERT INTO inputs VALUES(‘move_forward’, 1)”)。Kev表示不会开发图形化前端接口,但欢迎社区贡献。
总结与展望
SQLDoom以仅5900行SQL代码实现了《毁灭战士》的完整游戏性,拓展了人们对数据库能力的认知。该项目不仅是对编程极限的一次致敬,也启发开发者探索SQL在计算科学中的更多可能性。未来,Kev计划进一步优化渲染效率,并尝试移植其他经典游戏如《德军总部3D》。

Related Threads - 欧美明星
数据库专家Kev用5900行SQL代码构建SQLDoom,基于PostgreSQL实现60FPS图形、音效和多人模式。阅读该创纪录项目如何突破数据库极限,获取技术解析与开发者访谈。

