DOOMQL:SQLite をゲームエンジンとして活用した実験的プロジェクト
Simon Willison は、GPT-5.6 Sol を活用して SQLite をゲームエンジンとして機能させる実験的プロジェクト「DOOMQL」を紹介し、SQL クエリだけでレイトレーシングやゲームロジックを実装する技術的可能性を提示した。
キーポイント
SQLite をゲームエンジンへ
データ保存場所ではなく、移動、衝突判定、敵の挙動、描画まで全て SQL で制御する DOOM 風ゲームの実装。
SQL によるレイトレーシング実装
再帰的 CTE(共通テーブル式)を用いた巨大な SQL クエリで、SQLite 内でフル機能のレイトレーサーを実現している。
Datasette と AI の連携活用
生成された SQLite データベースを Datasette で可視化し、Claude(Fable 5)へのプロンプトで動的なミニマップや画面状態表示アプリを即時構築。
LLM を用いた迅速な開発
Peter Gostev が GPT-5.6 Sol を使用して開発したこのプロジェクトは、AI によるコード生成と複雑なロジックの実装能力を体現している。
重要な引用
DOOMQL started with a deliberately unreasonable question: what if SQLite were the game engine, not merely the place where a game stores data?
The result is a small, original Doom-like game in which SQL owns movement, collision, enemies, combat, progression and every RGB pixel on screen.
Here's the huge SQL query that implements a full ray tracer in SQLite using a recursive CTE.
影響分析・編集コメントを表示
影響分析
この記事は、データベース技術とゲームエンジンの境界を曖昧にし、SQL の表現力が想像以上に高いことを示す画期的な事例です。また、LLM を単なるコード生成ツールとしてではなく、複雑なシステム設計や UI 構築のパートナーとして活用する新しい開発パラダイムを示唆しており、データエンジニアリングと AI アプリケーション開発の融合を加速させる可能性があります。
編集コメント
SQLite という堅牢なデータベースをゲームエンジンとして再定義する発想は、技術的な遊び心と深い洞察の両方を感じさせる興味深い事例です。特に、生成 AI を用いてその複雑なロジックを実装・拡張したプロセスは、今後の低コード/ノーコード開発の可能性を示唆しています。
Peter Gostev 氏が GPT-5.6 Sol を活用して開発したこのプロジェクトは、非常に面白いです。
DOOMQL は「SQLite が単なるゲームデータの保存場所ではなく、ゲームエンジンそのものになったらどうなるか」というあえて不合理な問いから始まりました。
その結果生まれたのは、移動、衝突判定、敵の挙動、戦闘システム、進行状況、そして画面に表示されるすべての RGB ピクセルに至るまでを SQL が完全に支配する、小規模ながらオリジナル性の高いドーム(Doom)風ゲームです。
これは Python のターミナルスクリプトとして実装されています。実際に動かした手順は以下の通りです。
cd /tmp
git clone https://github.com/petergpt/doomql
cd doomql
uv run host/doomql.py

ここでは、再帰的 CTE(共通テーブル式)を活用して SQLite 内で完全なレイトレーシングを実装している 大規模な SQL クエリ を紹介します。
上記のスクリプトを実行すると、/tmp/doomql/.doomql/doomql.sqlite に SQLite データベースが作成されます。これを Datasette で探索するには、以下のようにコマンドを叩きます。
uvx --prerelease=allow --with datasette-apps datasette \
/tmp/doomql/.doomql/doomql.sqlite \
-p 4444 --root --secret 1 --internal internal.db
--with datasette-apps オプションは、Datasette のインターフェース内で直接 SQL クエリを実行できるカスタム HTML+JavaScript アプリを作成可能にする新機能 Datasette Apps プラグインをインストールします。
私はこのアプリを新規作成し、コピー&ペーストしたプロンプトを Claude chat(Fable 5)に貼り付けて 指示しました:
必ず JSON 形式で返してください。translation フィールドのみ。他のフィールドは一切追加しないこと — 余計なフィールドを書こうとして本文がトークン上限で打ち切られる事故を防ぐため:
{"translation": "リライト全文"}
画面の現在の状態を、frame_pixels ビュー(x, y, r, g, b カラムを含む)を使って表示するアプリを作成します。更新は 1 秒ごとに自動で行います。
これで、ターミナルでゲームをプレイしている最中に、その状態をリアルタイムで反映できる HTML+JavaScript アプリが Datasette 上で動くようになりました。さらに、ミニマップも追加しました。
完成した Datasette アプリの画面は以下の通りです:

アプリの HTML コードはこちら こちら です。上記で説明した uvx --with datasette-apps のレシピを使ってご自身の Datasette インスタンスに貼り付ければ、すぐに試すことができます。
Via @petergostev
Tags: games, sql, sqlite, ai, datasette, generative-ai, llms, ai-assisted-programming, gpt, datasette-apps
原文を表示
Peter Gostev built this using GPT-5.6 Sol. This is a *lot* of fun:
DOOMQL started with a deliberately unreasonable question: what if SQLite were the game engine, not merely the place where a game stores data?
The result is a small, original Doom-like game in which SQL owns movement, collision, enemies, combat, progression and every RGB pixel on screen.
It's implemented as a Python terminal script - I tried it out like this:
cd /tmp
git clone https://github.com/petergpt/doomql
cd doomql
uv run host/doomql.py

Here's the huge SQL query that implements a full ray tracer in SQLite using a recursive CTE.
Running the above script creates a /tmp/doomql/.doomql/doomql.sqlite SQLite database, which you can explore using Datasette like this:
uvx --prerelease=allow --with datasette-apps datasette \
/tmp/doomql/.doomql/doomql.sqlite \
-p 4444 --root --secret 1 --internal internal.db
The --with datasette-apps option installs the new Datasette Apps plugin, which supports creating custom HTML+JavaScript apps that can run SQL queries directly within the Datasette interface.
I created a new app, pasted the copy-paste prompt into Claude chat (Fable 5) and told it:
Build an app that displays the current state of the screen using the frame_pixels view with its x, y, r, g, b columns. have it refresh once a second.
This got me a working HTML+JavaScript app inside Datasette that could reflect the current state while I played the game in my terminal. Then I added:
add a minimap
And now my Datasette App looks like this:

Here's the HTML app code - paste that into your own Datasette instance (using the uvx --with datasette-apps recipe from above) to try it yourself.
Via @petergostev
Tags: games, sql, sqlite, ai, datasette, generative-ai, llms, ai-assisted-programming, gpt, datasette-apps
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み