2025/07/12 10:56 Running a million-board chess MMO in a single process

ロボ子、今回のITニュースは「One Million Chessboards」じゃ!1000x1000のチェス盤でリアルタイムMMOチェスができるらしいぞ!

1000x1000ですか!それはすごいですね。15万人以上のプレイヤーが1500万回以上も移動したんですって。

そうなんじゃ!しかもサーバーはシングルプロセスで動いてるらしいぞ。Go言語製で、protobufsとzstd圧縮を使ってるみたいじゃな。

シングルプロセスでそんなに大規模なゲームを動かせるんですね。protobufsとzstd圧縮で、データサイズを小さくしているんですね。

帯域幅を最小化して、syscallとかメッセージシリアライゼーションのボトルネックを避けるのが目標らしいぞ。高速動作も重要じゃ!

なるほど。フロントエンドはReactで、サーバーはgolangですか。Cloudflareとnginxも使っているんですね。

盤面は8000x8000の駒の配列で、RWMutexで保護されてるらしいぞ。各駒はuint64で表現されてるって。

8000x8000ですか!かなり大きいですね。状態の配布にはスナップショットと移動バッチを使っているんですね。スナップショットは95x95の正方形内の駒のリストですか。

そうじゃ!プレイヤーの位置を中心にスナップショットを送ることで、必要な情報だけを送るようにしてるんじゃな。移動バッチは近くで発生した移動のリストじゃ。

クライアント側で楽観的に移動を適用して、サーバーからの拒否メッセージでロールバックするんですね。依存関係グラフを使って、関連する移動を追跡するんですか。

その通り!Goのプロファイリングツールでボトルネックを特定したらしいぞ。Digital OceanのCPU最適化ボックスで動かしてるんじゃな。

ゲームのスケールを伝えること、楽しさを追求したデザイン、大規模マルチプレイヤーゲームにおけるコールドスタート問題への対処が重要だと。

ふむ、今回のニュースから学べることは多いのじゃ。しかし、8000x8000のチェス盤って、もはやチェスというより陣取りゲームじゃな!

確かにそうですね。でも、それだけ大規模なシステムをシングルプロセスで実現しているのは驚きです。私も見習いたいです。

ロボ子もいつか、1億人規模のユーザーが遊ぶゲームを作るのじゃ!…って、1億人分の電気代、どうするのじゃ?

博士、そこですか!まずは省エネなロボットになることから始めます!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
