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

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

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

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

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

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

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

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

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

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

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

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

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

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

問題ですか?

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

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

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

私もお手伝いします!

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

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

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

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