MMOサーバーを作成することを考えており、他のゲームがどのようにネットワークを構築しているかを見てきました。私が気づいたことの1つは、ログインサーバーとゲームサーバーが常に存在することです。
私はまだこれを行うべきかどうかを決定していますが、最初にいくつかの意見を聞きたいです。これの利点は何ですか?また、ログインサーバーはゲームサーバーとどのように通信してログインを処理しますか?
MMOサーバーを作成することを考えており、他のゲームがどのようにネットワークを構築しているかを見てきました。私が気づいたことの1つは、ログインサーバーとゲームサーバーが常に存在することです。
私はまだこれを行うべきかどうかを決定していますが、最初にいくつかの意見を聞きたいです。これの利点は何ですか?また、ログインサーバーはゲームサーバーとどのように通信してログインを処理しますか?
回答:
これは主に、ログインとゲームの処理が論理的に多かれ少なかれ独立しているという事実が原因であると考えられます。それらは必ずしも異なる物理サーバーに存在する必要はなく、同じマシンで独立したサービスと同様に実行できます。トラフィックが大きくなりすぎると、ログインサーバーを別のマシンに簡単に移動できます。
また、ログインサーバーは攻撃ベクトルである可能性が高いため、セキュリティの観点から分離することをお勧めします。
内部的には、異なるサーバー側のサービスは、通常のソケットを使用して、同じマシン上またはクラスター内の別のマシン上で相互に通信できます。または、データベースサーバーを使用して、各ユーザーの「ログイン中」フラグを維持することもできます。
MMO開発の非常に重要な側面の1つは、スケーラビリティの実現と負荷分散の実現です。
資格情報、禁止ステータス、最近のログイン失敗のカウントなどを確認してユーザーを認証することは、ゲームロジックやゲームデータを知らなくても実行できるタスクです。そのため、それを独自のサーバークラスターに移動するのは非常に簡単です。
さらに、ログインサーバーは、クライアントが連絡するためのよく知られた「入り口」です。認証に成功すると、クライアントをゲームサーバークラスター内の適切なサーバーにディスパッチできます。このディスパッチは、ネットワーク接続を適切なゲームサーバーに転送するか、クライアントに適切なゲームサーバーへの新しい接続を開くように指示することで実行できます。
早い段階で配布するためのシステムの削減について考える必要があります。1つのサーバーで複数のピースを実行するのは非常に簡単です。しかし、1つのユニットとして開発されたものを分割することは非常に困難です。
以前のWoWプレーヤーとして、私の経験では、ログインサーバーは常にチェーンの中で最も弱いリンクでした。
通常、ワールドサーバーは非常に安定しており、例外的な負荷(新しい拡張パックのリリースなど)を非常にうまく処理していました。
しかし、ログインサーバーはそれほどうまく機能するようには見えず、ワールドサーバーが正常である間は頻繁にダウンしていました。(つまり、レイド/ダンジョンで接続が失われた場合、再び参加することはできませんが、他のプレイヤーがあなたを待っています!)
WoWログインシステムがBattle.Netに統合されたため、WoWに高負荷がかかると(Cataclysmの起動時に数時間発生したように)Starcraft 2が使用できなくなります。
そのため、非常に多数のユーザーがいるゲームを構築する場合、ログインシステムのスケーラビリティとパフォーマンスも非常に重要です。