HeadlinesBriefing HeadlinesBriefing.com

Lukas Vogel が SQL で Doom をレンダリング

Ars Technica •
×

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