ログインサーバーをゲームサーバーと区別する必要がありますか?


15

MMOサーバーを作成することを考えており、他のゲームがどのようにネットワークを構築しているかを見てきました。私が気づいたことの1つは、ログインサーバーとゲームサーバーが常に存在することです。

私はまだこれを行うべきかどうかを決定していますが、最初にいくつかの意見を聞きたいです。これの利点は何ですか?また、ログインサーバーはゲームサーバーとどのように通信してログインを処理しますか?


1
「MMOで負荷分散はどのように達成されますか?」という質問 面白いかもしれません:gamedev.stackexchange.com/q/5956/450
Hendrik Brummermann

回答:


15

これは主に、ログインとゲームの処理が論理的に多かれ少なかれ独立しているという事実が原因であると考えられます。それらは必ずしも異なる物理サーバーに存在する必要はなく、同じマシンで独立したサービスと同様に実行できます。トラフィックが大きくなりすぎると、ログインサーバーを別のマシンに簡単に移動できます。

また、ログインサーバーは攻撃ベクトルである可能性が高いため、セキュリティの観点から分離することをお勧めします。

内部的には、異なるサーバー側のサービスは、通常のソケットを使用して、同じマシン上またはクラスター内の別のマシン上で相互に通信できます。または、データベースサーバーを使用して、各ユーザーの「ログイン中」フラグを維持することもできます。


ほとんどの場合、gameserver dbおよびloginserver db内にこのようなフラグが表示されるため、ログインサーバーは相互に確認でき、logindb!= gamerserverdbの場合、ユーザーはログアウトされます。
daemonfire300

10

MMO開発の非常に重要な側面の1つは、スケーラビリティの実現と負荷分散の実現です。

資格情報、禁止ステータス、最近のログイン失敗のカウントなどを確認してユーザーを認証することは、ゲームロジックやゲームデータを知らなくても実行できるタスクです。そのため、それを独自のサーバークラスターに移動するのは非常に簡単です。

さらに、ログインサーバーは、クライアントが連絡するためのよく知られた「入り口」です。認証に成功すると、クライアントをゲームサーバークラスター内の適切なサーバーにディスパッチできます。このディスパッチは、ネットワーク接続を適切なゲームサーバーに転送するか、クライアントに適切なゲームサーバーへの新しい接続を開くように指示することで実行できます。

早い段階で配布するためのシステムの削減について考える必要があります。1つのサーバーで複数のピースを実行するのは非常に簡単です。しかし、1つのユニットとして開発されたものを分割することは非常に困難です。


2

以前のWoWプレーヤーとして、私の経験では、ログインサーバーは常にチェーンの中で最も弱いリンクでした。

通常、ワールドサーバーは非常に安定しており、例外的な負荷(新しい拡張パックのリリースなど)を非常にうまく処理していました。

しかし、ログインサーバーはそれほどうまく機能するようには見えず、ワールドサーバーが正常である間は頻繁にダウンしていました。(つまり、レイド/ダンジョンで接続が失われた場合、再び参加することはできませんが、他のプレイヤーがあなたを待っています!)

WoWログインシステムがBattle.Netに統合されたため、WoWに高負荷がかかると(Cataclysmの起動時に数時間発生したように)Starcraft 2が使用できなくなります。

そのため、非常に多数のユーザーがいるゲームを構築する場合、ログインシステムのスケーラビリティとパフォーマンスも非常に重要です。


1
ログインサーバーは、パスワードに対するブルートフォース攻撃の主要な標的であるため、かなりの負荷を処理できる必要があります。特に、ゲームが非常に人気があり、攻撃者がユーザー名の通常のランダムな推測に加えて(IPアドレスごとのレート制限を防ぐために)ボットネットを使用し始める場合。
ヘンドリックブルーマーマン

ログインに失敗してプレーヤーを世界に配置することには、いくつかの理由があります。ログインサーバー/アカウントデータベースの可能性があります。ただし、データベースからプレーヤー情報をロードできないことが原因である可能性があります。または、ワールドサーバー、チャットサーバーへのプレイヤーのディスパッチを行うシステムの障害により... プレイヤーを世界に向けてプレイすることは、中に入ったらやり取りするよりもはるかに複雑です。
ヘンドリックブルーマーマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.