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既是遊戲,也是一個值得學習的實驗樣本,它展示瞭如何將關係數據庫的查詢能力應用於實時圖形和交互領域。