一位计算机科学家仅使用“纯SQL”构建了一款类似《毁灭战士》(DOOM)的多人在线游戏。这款名为DOOMQL的第一人称射击游戏仅用约150行Python代码拼接而成。尽管存在自我设定的软件架构限制,但数据库性能公司CedarDB的联合创始人卢卡斯·沃格尔(Lukas Vogel)表示,DOOMQL能够以“流畅的约30 FPS”运行——虽然这并非画面最华丽的《毁灭战士》衍生游戏。

Cover Image

沃格尔的SQL版《毁灭战士》梦想源自帕特里克·特雷纳(Patrick Trainer)的DuckDB-DOOM项目。这项早期代码实验同样试图用SQL创建类似《毁灭战士》的第一人称射击游戏。但特雷纳的代码在浏览器中通过WebAssembly单网页运行时,仍需依赖JavaScript进行渲染和输入处理。

DOOMQL与DuckDB-DOOM克隆版的关键差异在于:前者支持多人在线模式,且完全使用SQL实现渲染与输入控制,在128x64像素分辨率下达到约30 FPS。沃格尔在评价特雷纳的作品时毫无贬抑之意,但指出“将部分渲染流程放在JavaScript中感觉像是作弊”。尽管存在这种“作弊”行为,DuckDB-DOOM克隆版的运行帧率仅约8 FPS,且使用更低分辨率。更令人惊叹的是,沃格尔声称自己是在休育儿假的一个月内完成了DOOMQL的编码。

根据项目架构概要,其核心设计可归纳为四点:

  • 游戏状态存储于数据表(地图、玩家、怪物、输入、配置、精灵图等)

  • 通过SQL视图栈实现光线投射与精灵投影渲染

  • 游戏循环由每秒执行约30次SQL文件的微型shell脚本构成

  • 客户端仅需约150行Python代码:轮询输入信号并向数据库查询3D视图

沃格尔通过该项目深入掌握了用SQL实现游戏逻辑与状态管理的技术,最终构建出“令人惊讶的优雅游戏循环”。如前所述,性能表现同样令人满意,他甚至挑战读者寻找比CedarDB(这位联合创始人毫不掩饰地打了个广告)更快的数据库系统来运行DOOMQL。

若想亲身体验DOOMQL,可访问其GitHub代码库。获取文件后,用户可通过Docker和Python在本地运行。基于灵活的MIT许可协议,开发者可以自由查看和修改代码。沃格尔透露将在不久后进行多项改进,包括“添加能量道具、多种武器、优化精灵细节层次系统、改进客户端以及AI敌人”等功能。


文章标签: #SQL游戏 #毁灭战士 #多人游戏 #计算机科学 #开源项目

负责编辑

  菠萝老师先生 

  让你的每一个瞬间都充满意义地生活,因为在生命的尽头,衡量的不是你活了多少年,而是你如何度过这些年。