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を単なるデータベースではなく、完全なゲームエンジンとして利用するという斬新なアプローチを採用しています。結果として、SQLがキャラクターの移動、衝突判定、敵のAI、戦闘、進行状況、そして画面上のすべてのピクセルを制御する、ドゥーム風の一人称視点シューティングゲームが実現しました。
ゲームの中核技術は、SQLiteの再帰的共通テーブル式(CTE)を用いた完全なレイトレーサーです。この巨大なSQLクエリは、3Dシーンをリアルタイムでレンダリングし、壁のテクスチャ、アイテム、敵、武器などを画面上に描画します。プレイヤーはPythonターミナルスクリプトを実行するだけでゲームを開始でき、GitHubリポジトリをクローンしてuv run host/doomql.pyと入力すれば、ターミナルウィンドウ内でレトロなピクセルアートのゲームを楽しめます。ゲームプレイ中には、すべての状態情報(プレイヤーの位置、敵の座標、スコア、弾薬、体力など)を含むSQLiteデータベースファイルdoomql.sqliteが自動生成されます。
著名な開発者Simon Willisonは、DOOMQLの可能性に着目し、さらに一歩進んだ応用例を示しました。彼はDatasetteと新しいDatasette Appsプラグインを使用し、AI(Claude Fable 5)に簡単なプロンプトを与えることで、HTML+JavaScriptのWebアプリを生成させました。このアプリは、ゲームが生成したSQLiteデータベースに接続し、1秒ごとに最新のゲーム状態を取得してブラウザ上に表示します。最初はframe_pixelsビューから画面のピクセルデータを直接表示するよう指示し、その後「ミニマップを追加」というプロンプトを追加することで、戦術マップも表示されるようになりました。戦術マップは俯瞰グリッドで、プレイヤー、敵、アイテム、ドア、出口の位置を色分けして示します。このように、DOOMQLはSQLiteのクエリ能力だけでなく、DatasetteとAI支援プログラミングの組み合わせによる強力な可視化の可能性も示しています。
DOOMQLは単なる技術デモに留まらず、データベースの限界を押し広げる試みです。SQLiteのSQLクエリがリアルタイムのゲームレンダリングとインタラクションを処理できることを実証し、クリエイティブなプログラミングに新たな地平を開きました。また、Simon Willisonの取り組みは、AIが生成したコードを既存のツールと組み合わせることで、複雑なアプリケーションを素早く構築できることを示しています。開発者にとって、DOOMQLは学びの多いオープンソースプロジェクトであり、データベース技術の新たな応用分野を探求する貴重な事例です。