5900行SQL代码玩《毁灭战士》!SQLDoom如何实现60帧渲染

5900行SQL代码玩《毁灭战士》!SQLDoom如何实现60帧渲染

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 FPS60 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图形、音效和多人模式。阅读该创纪录项目如何突破数据库极限,获取技术解析与开发者访谈。

Tags:
Partners:

相关文章

▸ 留学资讯▸ 科技热点▸ 辟谣声明▸ 谣言澄清▸ 回应传闻▸ 正面回应▸ 深夜发文▸ 撒糖互动▸ 世纪婚礼▸ 豪华婚礼
友情链接:婚礼现场 求婚现场 恋情实锤 实锤爆料 疑似恋情 同框照片 亲密合照 素颜照片

🔗 友站推荐

美国电影市场首办全球屏幕经济峰会 聚焦联邦制作税收激励
查普尔·罗恩防偷听妙招|洛拉·扬巴黎时装周
加拿大总理卡尼赴阿尔伯塔为统一公投拉票 | 独立公投分析
康奈尔大学不信任投票:教职员工施压校长科特利科夫
索马里宣布2027年5月总统选举 任期延长争议持续
ABC新闻每周测验:假谋杀案与内向海鸟引爆读者互动 | 深度
纽约喜剧节2026:特雷西·摩根、丹尼尔·雷德克里夫领衔NBC喜剧小组
12小时连演9场!澳大利亚乐队Fathom跨700公里创吉尼斯纪录 门票半数捐公益 幕后专访现场全记录
提前投票开启在即 德州选民登记系统故障致近60万份申请积压 投票权组织起诉州务卿限期整改 2026中期选举公平性受疑
艾克曼确认离开ESPN:五年合同到期后下一站何方?