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