ホストが去った後、オンラインゲームはどのように続きますか?


12

注:これは、ゲームではなくネットワーキングに関する質問です。私はStarCraftを単なる例として使用しています。

ゲームStarCraft(StarCraft 2ではない)はオンラインプレイをサポートしています。1人がホストし、他の人が参加します。ホストがゲーム中に退場した場合、ゲームはホストなしで無期限に続行できます。それはどのように機能しますか?

次のシナリオを検討してください。

  • 3対3をホストします。参加できるようにするには、ルーターをポートフォワード6112、TCPおよびUDPに設定する必要があることに注意してください(ブリザードサポートを参照)。
  • 5人が参加します。全員(自分も含む)はルーターの背後にいます。ゲームを開始します。
  • ゲーム開始から3分後、約20人の熱狂者が私の基地に流れ込みます。誰も私を助けません。
  • 私のベースは排除されたので、私は去ります(ゲームはあなたに選択肢を与えません)。
  • ゲームはホストなしで続行します(ホームチームには2人のプレイヤーが残っています)。

残りの5つのクライアント(転送された6112を必要としなかった)はどのように接続されたままになりますか?

私が正しく理解している場合:2つのプログラムが互いに通信する場合、1つは「サーバー」であり、ポート上の接続をリッスンする必要があり、もう1つは「クライアント」であり、その接続要求を開始する港。彼らは単純にお互いにパケットを送信し始めることはできません(そして、両方がルーターの後ろにあるなら、私は彼らがどうするかさえ知りません)。

ゲームをホストしている人はサーバーであり、ゲームに参加している人はクライアントです。クライアントがサーバーとの通信を開始する方法を簡単に確認できます。私が取得できないのは、サーバーを経由せずにクライアントがどのように互いに通信を開始するのですか?インターネットプロトコルにより、サーバーはクライアント間の接続を開始できますか?

StarCraftの場合、ゲームのトラフィックがBattle.netサーバーを通過することは完全に可能です。StarCraftは、ゲーム中(友人からのメッセージなど)にBattle.netへの接続を維持します。ただし、ゲームのトラフィックが通過するとは思えません。

私の質問は次のとおりです。複数のクライアントが接続されたサーバーは、それらの間の接続を開始できますか?


2
ここにスタークラフトの参照が好きです...-
ジョン

I host a 3 versus 3. Note that, for people to be able to join, my router has to be configured to port forward 6112, TCP and UDP (see Blizzard Support).どうやらこれは、ユーザーがあなたを見つけることができるようにゲームを開始するために必要ですが、接続を維持する必要はありません。
ジェフ

@Jeff O:Battle.netサーバーは利用可能なゲームのリストを管理しています。ただし、ホストがポートフォワードしない場合、他の人が参加しようとするとハングします(私は思う)。
ジョーイアダムス

回答:


20

UDPホールパンチのようですね

AとBをそれぞれ独自のプライベートネットワーク内の2つのホストとします。N1とN2は2つのNATデバイスです。Sは、既知のグローバルに到達可能なIPアドレスを持つパブリックサーバーです。

  1. AとBはそれぞれSとUDP会話を開始します。NATデバイスN1およびN2はUDP変換状態を作成し、一時的な外部ポート番号を割り当てます
  2. Sはこれらのポート番号をAとBにリレーします
  3. AとBは、変換されたポートで直接お互いのNATデバイスに接続します。NATデバイスは以前に作成された変換状態を使用し、AおよびBにパケットを送信します

この例では、あなたはSです。対戦相手はAとBです。あなたがゲームから追い出されたとき、対戦相手は最初に接続したときにお互いに接続をネゴシエートしたのでプレイを続けることができます。


うわ+1、私はNATがそのように使用できるという考えを持っていなかった
-TheLQ

NATの問題は、ファイアウォールの後ろから始める必要があることです。そのため、少なくとも最初のコンピューターが公開されている必要があります。そうでない場合、接続するものがありません。

2

2つのプログラムが互いに通信する場合、1つはサーバーである必要はなく、もう1つはクライアントである必要はありません。それはネットワーキングの1つのモデルですが、それだけではありません。もう1つの非常に一般的なモデルは、ピアツーピアモデルです。このモデルでは、全員がクライアントとサーバーの両方であり、誰でも誰とでも会話できます。Starcraftのマルチプレイヤーネットワーキングの内部構造についてはあまり詳しくありませんが、ピアツーピアモデルを使用して説明したことを達成できる可能性が高いと思います。


P2Pモデルでは、通常、初期接続を行うために、ピアの各ペアの少なくとも1人がポートを転送する必要があります。ポートを転送する場合としない場合のトレントをダウンロードして、接続数の違いを確認してください。
シュノーバックル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.