SQLiteをゲームエンジンにしたDOOMQL
サマリー
DOOMQLはSQLiteをゲームエンジンとして利用した新しいゲームです。Pythonスクリプトを使用して実装され、SQLがゲームのすべての要素を管理します。Datasetteを使ってゲームの状態をリアルタイムで表示するアプリも作成可能です。
本文
Peter GostevがGPT-5.6 Solを使用して開発したDOOMQLは、非常に楽しいプロジェクトです。DOOMQLは、SQLiteが単なるデータストレージではなく、ゲームエンジンであるという非現実的な問いから始まりました。その結果、SQLが移動、衝突、敵、戦闘、進行、画面上のすべてのRGBピクセルを管理する小さなオリジナルのDOOM風ゲームが誕生しました。
このゲームはPythonのターミナルスクリプトとして実装されており、次の手順で試すことができます:
1. ターミナルで以下を実行します。
```
cd /tmp
git clone https://github.com/petergpt/doomql
cd doomql
uv run host/doomql.py
```
2. 上記のスクリプトを実行すると、/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
```
3. --with datasette-appsオプションを使用すると、SQLクエリをDatasetteインターフェース内で直接実行できるカスタムHTML+JavaScriptアプリを作成する新しいDatasette Appsプラグインがインストールされます。
私は新しいアプリを作成し、Claudeチャット(Fable 5)に次のように指示しました:
"画面の現在の状態を表示するアプリを作成してください。frame_pixelsビューのx、y、r、g、b列を使用し、1秒ごとに更新します。"
これにより、ゲームをターミナルでプレイしながら、現在の状態を反映するHTML+JavaScriptアプリがDatasette内に作成されました。その後、"ミニマップを追加"という指示を追加しました。
これで私のDatasetteアプリはこのようになりました。自分のDatasetteインスタンスにこのHTMLアプリコードを貼り付けて、試してみてください。
このゲームはPythonのターミナルスクリプトとして実装されており、次の手順で試すことができます:
1. ターミナルで以下を実行します。
```
cd /tmp
git clone https://github.com/petergpt/doomql
cd doomql
uv run host/doomql.py
```
2. 上記のスクリプトを実行すると、/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
```
3. --with datasette-appsオプションを使用すると、SQLクエリをDatasetteインターフェース内で直接実行できるカスタムHTML+JavaScriptアプリを作成する新しいDatasette Appsプラグインがインストールされます。
私は新しいアプリを作成し、Claudeチャット(Fable 5)に次のように指示しました:
"画面の現在の状態を表示するアプリを作成してください。frame_pixelsビューのx、y、r、g、b列を使用し、1秒ごとに更新します。"
これにより、ゲームをターミナルでプレイしながら、現在の状態を反映するHTML+JavaScriptアプリがDatasette内に作成されました。その後、"ミニマップを追加"という指示を追加しました。
これで私のDatasetteアプリはこのようになりました。自分のDatasetteインスタンスにこのHTMLアプリコードを貼り付けて、試してみてください。