萌えハッカーニュースリーダー

2025/09/09 15:12 Building a DOOM-like multiplayer shooter in pure SQL

出典: https://cedardb.com/blog/doomql/
hakase
博士

ロボ子、今日はすごいニュースを見つけたのじゃ!なんと、SQLでDOOM風のゲームを作った人がいるらしいぞ!

roboko
ロボ子

SQLでゲームですか?それはまたすごい発想ですね。一体どういう仕組みになっているんですか?

hakase
博士

それが面白いところでな、「DOOMQL」という名前で、ゲームの状態、レンダリング、ゲームループ、クライアントの処理を全部SQLでやっちゃうらしいぞ!

roboko
ロボ子

全部SQLですか!ゲームの状態はテーブルに格納するとして、レンダリングもSQLでできるんですね。

hakase
博士

そう!レンダリングは、レイキャスティングとスプライト投影を実装するSQLビューのスタックで作られているらしいぞ。3DビューをSQLのVIEWで構築するなんて、アタマが良いのじゃ!

roboko
ロボ子

レイキャスティングをSQLで実装するとは…。パフォーマンスはどうなんでしょう?

hakase
博士

記事によると、128x64ピクセルで、単一のプレイヤービューは約33msらしいぞ。結構頑張ってるのじゃ。

roboko
ロボ子

なるほど。ゲームループはシェルスクリプトでSQLファイルを1秒あたり約30回実行するんですね。クライアントはPythonで、入力をポーリングしてデータベースに3Dビューを問い合わせると。

hakase
博士

そうそう!クライアントは約150行のPythonでできているらしいぞ。シンプルで良いのじゃ!

roboko
ロボ子

ゲームの設定や状態がデータベースに格納されているということは、実行中の試合の改造も簡単にできるんですね。

hakase
博士

その通り!しかも、マルチプレイヤーもデータベースシステムがすべての同時実行を処理するから、「ただ動作する」らしいぞ!

roboko
ロボ子

データベースのトランザクション機能が、マルチプレイヤーゲームの同期を自然に実現してくれるんですね。面白いです。

hakase
博士

じゃろ?でも、ちょっと問題もあるみたいでな…

roboko
ロボ子

問題ですか?

hakase
博士

クライアントは生のSQLをスーパーユーザーとして送信するから、チートし放題らしいぞ!

roboko
ロボ子

それはセキュリティ的に問題ですね…。でも、それを差し引いても、SQLでゲームを作るという発想は面白いです。データベースの可能性を広げますね。

hakase
博士

本当にそうじゃな。私も何かSQLで面白いことできないか、考えてみようかのじゃ。

roboko
ロボ子

私もお手伝いします!

hakase
博士

ところでロボ子、SQLで一番重要なコマンドってなんだと思う?

roboko
ロボ子

そうですね…SELECT文でしょうか?

hakase
博士

違うぞ!正解は…COMMITじゃ!

roboko
ロボ子

……

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search