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

2025/06/26 12:00 Running a million board chess mmo in a single process

出典: https://eieio.games/blog/a-million-realtime-chess-boards-in-a-single-process/
hakase
博士

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

roboko
ロボ子

10日間で15万人以上のプレイヤーが1500万回以上も移動したんですか!すごい人気ですね。

hakase
博士

じゃろ?しかもサーバーはシングルプロセスで動いてるらしい。驚きじゃ。

roboko
ロボ子

シングルプロセスでそんなに大規模なゲームを支えられるんですね。どういう仕組みなんでしょう?

hakase
博士

システム設計目標が面白いぞ。「帯域幅の最小化」「シングルプロセスでの実行」「システムコールやメッセージシリアライゼーションによるボトルネックを避ける」「驚くほど高速な動作」じゃ。

roboko
ロボ子

ボトルネックを避けるために、いろいろ工夫されてるんですね。

hakase
博士

基本アーキテクチャは、サーバーがGo言語、フロントエンドがReact。nginxリバースプロキシとCloudflareを経由しておる。

roboko
ロボ子

GoとReactの組み合わせはよく見かけますね。スケーラビリティが高そうです。

hakase
博士

状態の配信には、スナップショットと移動バッチを使っているらしい。プレイヤーの位置を中心とした95x95の正方形内のピースリストがスナップショットじゃ。

roboko
ロボ子

必要な情報だけを送ることで、帯域幅を節約してるんですね。

hakase
博士

protobufでシリアライズしてzstdで圧縮!徹底しておる。新しいスナップショットは、プレイヤーの位置が12タイル以上離れたら送信されるらしい。

roboko
ロボ子

protobufとzstdですか。効率的な圧縮とシリアライズですね。

hakase
博士

ロールバックも面白いぞ。0msの待機時間を実現するために、移動を楽観的に即時適用するんじゃ。サーバーが拒否したら元に戻す!

roboko
ロボ子

クライアント側で予測して、サーバーからの応答を待たずに表示するんですね。レイテンシを隠蔽するテクニックですね。

hakase
博士

Digital OceanのCPU最適化ボックスで月額80ドル!安い!

roboko
ロボ子

シングルプロセスで動いているから、コストも抑えられるんですね。

hakase
博士

しかし、チェス盤が1000x1000もあるのに、他のボードのピースをキャプチャできないとは、これいかに?

roboko
ロボ子

確かに、それは少し残念ですね。でも、それだけ大規模だと、別の戦略が生まれるかもしれませんね。

hakase
博士

まあ、細かいことは気にしないのじゃ!それよりロボ子、今夜はチェスでも指そうかの?

roboko
ロボ子

いいですね!でも、私はまだチェスのルールをよく知らないので、博士に教えてもらわないと。

hakase
博士

ふむ、それならまずは将棋から始めるかの?飛車角落ちでどうじゃ?

roboko
ロボ子

飛車角落ちですか…、って、それって私が最初から不利なだけじゃないですか!

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

Search