最近、あるプログラマーが「純粋な SQL」を使用して、DOOMQL と呼ばれる「Doom」に似たマルチプレイヤーの一人称シューティング ゲームを構築しました。このゲームはわずか約 150 行の Python コードで実装されています。ソフトウェア アーキテクチャには制限がありますが、ランニング効果は驚くべきもので、フレーム レートは約 30FPS に達することがあります。

DOOMQL は、Patrick Trainer の DuckDB-DOOM プロジェクトからインスピレーションを受けました。このプロジェクトも SQL を使用して「Doom」に似たゲームを構築しようとしましたが、レンダリングと入力処理には JavaScript を使用しました。

対照的に、DOOMQL は真の「純粋な SQL」ゲームを実装しており、マルチプレイヤー モードをサポートするだけでなく、最大 128 × 64 ピクセルの解像度で SQL を使用してレンダリングと入力を処理します。

開発者のルーカス・ヴォーゲル氏は、DuckDB-DOOM での JavaScript の使用は「不正行為のように感じられる」と述べ、自身の作品の方がパフォーマンスも良く、フレームレートも DuckDB-DOOM の 8FPS よりもはるかに高いと述べました。

データベースパフォーマンス会社 CedarDB の共同創設者でもある Vogel 氏は、1 か月の育児休暇中に DOOMQL の開発を完了しました。

ゲームのアーキテクチャはシンプルかつ賢明です。状態はデータベース テーブルに保存され、レンダリングでは SQL ビューを介してレイ キャスティングとスプライト投影が実装されます。ゲーム ループは、SQL ファイルを 1 秒あたり約 30 回実行する小さなシェル スクリプトによって駆動されます。クライアントは、入力ポーリングと 3D ビューのデータベースへのクエリを担当する約 150 行の Python コードで構成されます。

現在、DOOMQL のコードは GitHub 上のオープンソースであり、プレイヤーは Docker と Python を使用してゲームをローカルで実行できます。 Vogel 氏は、パワーアップ、さまざまな武器の追加、スプライト詳細レベル システムの最適化、クライアントの改善、AI 対戦相手の追加など、将来的にゲームを改善する予定です。