データベースで「Doom」を動かす—始まりは開発者の挑戦から
「データベースでDoomは動くのか?」という問いは、これまで冗談めかして語られることが多かったかもしれません。しかし、開発者のLukas Vogel氏がこの常識を打ち破り、SQLを使って人気ゲーム「Doom」をデータベース上で実行することに成功しました。
2026年10月3日、The Registerは、Vogel氏がSQLによるDoomのゲームロジックとレンダラーをデータベース内で動作させたと報じました。
昨年2025年には、Vogel氏がSQLで作成した「DOOMQL」が話題となりました。しかし、その視覚表現は初期の3Dゲームに近いもので、一部からは「Wolfenstein-like」と評されていました。Vogel氏はこの声に応えるべく、Doomの革新的な技術であるBSPツリー(二分空間分割ツリー)ベースのレンダリングをSQLで実現するという、さらなる挑戦に挑んだのです。
SQLDoom:リアルなDoom体験の舞台裏
今回のプロジェクト「SQLDoom」では、レンダリングとゲームループの両方が完全にSQLベースで実装されています。Pythonはタイミング、キーボード入力、ビットマップ表示のみを扱い、残りの処理はSQLクエリとCedarDBデータベースによって実行されます。Vogel氏によると、今回のリアルなDoomの移植は、昨年の「DOOMQL」よりもはるかに複雑であるにもかかわらず、パフォーマンスが向上している点に驚いたとのことです。
| 項目 | DOOMQL(2025年版) | SQLDoom(2026年版) |
|---|---|---|
| レンダリング方式 | レイキャスティング | BSPツリー(よりリアル) |
| 視覚表現 | 3Dモンスターメイズに近い | 実際のDoomに近い |
| ゲームロジック | SQLベース | SQLベース |
| レンダラー | SQLベース | SQLベース |
| 外部ツール | Python(補助) | Python(タイミング、入力、表示) |
| パフォーマンス | - | 昨年版より向上 |
Vogel氏は「Doomのリアルな移植がa)実行可能であり、b)昨年のよりシンプルなアプローチよりも実際にパフォーマンスが良かったことに非常に興奮しました」と述べています(The Register)。最終的には、デスマッチモードまで動作させることに成功したというから驚きです。
驚きの動作環境と技術デモンストレーションとしての側面
Vogel氏によれば、SQLDoomはRyzen 7 7840Uを搭載した彼のラップトップで完璧にプレイ可能であり、マルチプレイヤーゲームもEUとUSサーバーを使用してオンラインで楽しめるそうです(The Register)。サーバーのパフォーマンスには若干の遅延が見られたものの、これは主にサーバー側の要因であり、SQLでこのような複雑な処理を可能にしたこと自体が驚くべき成果だと言えるでしょう。
このプロジェクトは単なるジョークではなく、CedarDBというコンパイル型データベースシステムの能力を示す巧妙なデモンストレーションでもあります。複雑なクエリが最終的にマシンコードにコンパイルされるため、このような高いパフォーマンスが実現できたと考えられます。Tom's Hardwareの記事によれば、わずか5,900行のSQLコードでこのDoomが動作しているとのことです(Tom's Hardware)。
エンジニア目線で見ると:データベース活用の新たな可能性とパフォーマンスの限界
今回のSQLDoomの事例は、データベースが単なるデータストアとしてだけでなく、より複雑なロジック処理やレンダリングまでこなせることを示した点で、非常に興味深いと感じます。特に、筆者のように普段BigQueryやCloud Runを扱っていると、データベースのクエリ最適化や実行環境の可能性に常に注目しています。CedarDBが複雑なクエリをマシンコードにコンパイルすることで、従来のデータベースでは考えられなかったパフォーマンスを実現しているのは注目に値します。
もしかすると、将来的にデータ分析やリアルタイム処理の領域で、このような「コンパイル型データベース」のメリットがさらに活かされるケースが出てくるかもしれません。例えば、複雑なデータ変換やETL処理を、より高速にデータベース内部で完結させるような用途には向いているのではないでしょうか。
一方で、汎用的なゲームエンジンとしての活用はまだ現実的ではないでしょう。ゲームのリアルタイム性は、データベースのトランザクション処理やI/Oオーバーヘッドと相性が悪い面があります。しかし、特定の計算集約型処理をデータベースにオフロードする、あるいはデータ駆動型のインタラクティブなアプリケーションを構築する際のヒントにはなるかもしれません。
個人的には、Pythonのバインディングが提供されれば、手元のデータ処理スクリプトに組み込んで、既存のDB処理をどれだけ高速化できるか試してみたい衝動に駆られます。ドキュメントが充実していれば、Claude Codeに投げてプロトタイプを組むのも案外すぐかもしれませんね。
SQLDoomは、データベース技術の限界を押し広げ、エンジニアの想像力を刺激する素晴らしいデモンストレーションだと感じます。