Lukas Vogel は長いブログ記事で、SQL データベースを使って Doom をレンダリングする方法を説明しています。SQLDoom プロジェクトは、入力と出力を処理し、ゲームのタイミングを制御し、各フレームを表示するために小さな Python クライアントを使用します。その背後では、一連の Cedar DB テーブルがゲームのジオメトリと状態を追跡し、約 1300 行 の SQL クエリ(89 の共通テーブル式にわたる)がゲームロジックを実装し、毎秒 35 のビットマップフレームバッファを生成します。
SQLDoom は、Vogel の以前の Doom QL プロジェクトからの大きな改善です。以前のプロジェクトは「完全に SQL で構築されたマルチプレイヤーの Doom 風シューティングゲーム」でしたが、グレースケールの ASCII グラフィックスに終わりました。新しい SQLDoom は、オリジナルの Doom 実行ファイルに似たフルカラーの 640×480 フレームを生成します。
Vogel によると、Doom のクラシックな WAD ファイルをリレーショナルデータベースに変換するのは簡単でした。なぜなら、ゲームはレベルを頂点、線、セクターに分割していたからです。Doom のバイナリ空間分割ツリーは、各位置に対して事前計算された sort_key を使用して SQL に分解できます。これにより、単純な「ORDER BY」ステートメントで、各フレームに表示する壁の部分が決定されます。
主要エンティティ:企業:Ars Technica | 人物:Lukas Vogel
FAQ:SQLDoom はデータベースを使ってどのようにフレームをレンダリングしますか?
SQLDoom は入力と表示に Python クライアントを使用し、Cedar DB テーブルがジオメトリと状態を保存します。約 1300 行の SQL クエリが 89 の CTE にわたって毎秒 35 のビットマップフレームバッファを生成し、事前計算された sort_key を使用した ORDER BY で効率的なレンダリングを実現します。
出典: Ars Technica · 要約:HeadlinesBriefing