Skip to main content
このトピックを使用して、優先ローカル User Datagram Protocol (UDP) マルチプレイヤー ポート API を使用してマルチプレイヤーの信頼性を向上させる方法を理解してください。すべての世代の XBOX コンソールでは、UDP 3074 を使用することができます。これは、マルチプレイヤー ネットワーク トラフィック用に公式に登録された、よく知られたポートです。Microsoft Game Development Kit (GDK) タイトルも例外ではなく、この特別なポートにアクセスするために優先ローカル UDP マルチプレイヤー ポート ネットワーキング API を使用できます。 優先ローカル UDP マルチプレイヤー ポートは、リモート デバイスがローカル デバイスに接続するために使用する可能性のあるパブリック ポートではなく、その後の socket bind 操作で使用されるローカル ポートです。前者は、特にマルチプレイヤーのリアルタイム タイトル ネットワーキング フローを対象としているため、Transmission Control Protocol (TCP) や HTTP トラフィックではなく、UDP トラフィックにのみ意味があります。 これまで、このポートは UDP 3074 に限定されていました。しかし近年、このポートの信頼性を向上させるためにフォールバック ロジックが導入されました。さらに、ユーザーは独自のネットワーク構成で動作するようにポートを手動で構成できるようになりました。これが、Microsoft Game Development Kit (GDK) タイトルで UDP 3074 をハードコードすることがもはや安全でない理由です。代わりに、Microsoft Game Development Kit (GDK) タイトルは、現在構成されているポートを動的にクエリする必要があります。 優先ローカル UDP マルチプレイヤー ポートを取得する方法は 3 つあります。 3 つのバリアントはすべて、同じ基本機能を提供します。Microsoft Game Development Kit (GDK) タイトルは、そのニーズと使用ケースに合わせて、これらのいずれか (またはこれらの任意の組み合わせ) を呼び出すことができます。 すべての Microsoft Game Development Kit (GDK) タイトルには、メイン ゲーム トラフィックに優先ポートを使用することを強くお勧めします。このポートは、ピアツーピア ネットワーク トポロジとクライアント/サーバー ネットワーク トポロジの両方に最適化されています。Microsoft Game Development Kit (GDK) プラットフォームは、この特定のポートが各ユーザー特有のネットワーク環境で動作する可能性が最も高いポートであることを保証します。この特定のポートを使用することで、プラットフォームのカスタマー サポートと診断フローの活用が最大化され、標準化されたネットワーク アドレス変換 (NAT) の互換性が向上し、標準化された UPnP™ 認定デバイスの機能が提供され、Quality of Service (QoS) ルーターおよび ISP のアルゴリズムに対してパケットがリアルタイム センシティブとして識別されます。 この優先ポートは、ピアツーピア ネットワーク トポロジに依存するタイトルに特に関連します。これは、ファイアウォール パンチングを実行せずにファイアウォールを通じて受信 UDP パケットを許可する唯一のポートです。Microsoft Game Development Kit (GDK) のピアツーピア ネットワーク トポロジに依存するタイトルは、依然として、独自のパブリック IP アドレスとポートの検出、および Moderate または Strict NAT タイプを持つクライアント向けの NAT パンチング ソリューションを提供することが期待されます。優先ポートはこれらの技術の成功率を向上させますが、それらの代替となるものではありません。 クライアント/サーバー ネットワーク トポロジを使用するタイトルもこのポートを使用することでメリットを得られます。病院、ホテル、大学の寮などで一般的なキャプティブ ポータルやその他のソース ベースのフィルタリング アプローチにおいて、トラブルシューティング、UPnP™、およびパケット識別は依然として重要です。 優先ポートは、他のポートと同じように扱う必要があります。Windows Sockets 2 (Winsock) API と組み合わせて使用する必要があります。タイトルはこのポート上で IPv4 と IPv6 の両方にバインドするか、デュアル スタック ソケットを使用する必要があり、INADDR_ANY/in6addr_any アドレスにバインドする必要があります。

ソケット障害の処理

返されたポートが、特定のサーバーやピアとの成功したソケット接続の確立に使用できるという保証はありません。通常のタイトルの再試行およびフォールバック ロジックを実行する必要があります。ソケットが閉じられて再度開かれるたびに、タイトルは、時間の経過とともにポートが変更される可能性があるため、最新の優先ローカル UDP マルチプレイヤー ポートを再度クエリする必要があります。

ネットワーク初期化

XNetworkingQueryPreferredLocalUdpMultiplayerPort API の 3 つ (ブロッキング、非同期、通知ベース) のバリアントはすべて、タイトルの起動時および再開時にネットワークが初期化されるまで、完了/通知をブロックまたは遅延させます。ネットワーク初期化状態の検出 の概要に従って、別途ネットワーク初期化を待つこともできますし、これらの API を呼び出してそれらが戻るのを待つこともできます。

サスペンドと再開

他のソケットと同様に、優先ローカル UDP マルチプレイヤー ポートにバインドされたソケットは、サスペンド時に閉じ、ネットワーク初期化を待った後、再開時に再作成する必要があります。RegisterAppStateChangeNotification を介してサスペンドおよび再開イベントを登録する必要があります。再開時には、優先ローカル UDP マルチプレイヤー ポートが変更されていると想定し、優先ローカル UDP マルチプレイヤー ポートの変更をリスニングしているか、新しいソケットを作成するときに再度クエリする必要があります。WinSock のサスペンドと再開の処理に関する詳細については、Winsock のサスペンドと再開 を参照してください。

優先ローカル UDP マルチプレイヤー ポートの変更

タイトルは、XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged API を使用して、優先ローカル UDP マルチプレイヤー ポートの変更をリスニングできます。 タイトルの実行中に優先ローカル UDP マルチプレイヤー ポートが変更されないように、あらゆる試みが行われます。ただし、ユーザーの外部ネットワーク条件の変更により既存のソケット フローが無効化され、ポートが変更される避けられないケースもあります。特に ネットワーク接続レベル が変更された場合、またはタイトルのサスペンド/再開サイクルの一部として、ポートが変更される可能性が高くなります。 優先ローカル UDP マルチプレイヤー ポートが変更されると、将来のピアからの追加の受信接続が、以前の優先ポート上でブロックされる可能性があります。これはソケット層では障害を引き起こさない可能性があります。ただし、タイトルは最終的に、以前の優先ポートにバインドされたソケット上でパケットの受信を停止する可能性があります。 既存のピアとの間で送受信されるパケットは引き続き機能する場合があります。優先ローカル UDP マルチプレイヤー ポートの変更に関する通知は、進行中のゲーム セッションにとって致命的でない場合があります。 変更通知が発生した場合、タイトルは新しい優先ポートにバインドされた新しいソケットに移行する必要があります。この移行はできるだけ早い機会に、既存のゲームプレイを中断することなく行われる必要があります。接続の損失を検出し、ソケット接続を再試行するために、タイトルは常に最新の優先ポートを使用する必要があります。

優先ローカル UDP マルチプレイヤー ポートの変更のテスト

優先ローカル UDP マルチプレイヤー ポートを変更するには、次の手順を使用します。
  1. ゲームの実行中に、XBOX ガイド を開きます。設定 アプリに移動します。
  2. [全般] タブで [ネットワーク設定] を選択します。
  3. [詳細設定] を選択し、[代替ポートの選択] を選択します。
  4. ポートの選択を [手動] に設定します。ポートを選択するには、ドロップダウン メニューを使用します。
  5. ポートの選択は直ちに有効になり、タイトルへの対応する通知が発生します。
  6. テストが完了したら、ポートの選択を [自動] に戻して、ポートの動作を既定に戻します。
設定アプリを使用している間、タイトルは制約されますが依然として実行されており、タイトルが表示されていない場合でも、直ちにポート変更通知を受け取ります。設定アプリを開いた状態でタイトルに切り替えずに 10 分以上経過すると、タイトルはサスペンドされます。

セキュリティ

優先ローカル UDP マルチプレイヤー ポートにバインドされたソケットは、他のソケットと同じように動作します。特に、ソケット自体は追加のセキュリティを提供しません。タイトルは、コミュニケーション セキュリティのベスト プラクティスで規定されているように、優先ローカル UDP マルチプレイヤー ポートにバインドされたソケットの上に、独自のセキュアな通信プロトコルを使用する必要があります。詳細については、コミュニケーション セキュリティの概要 (NDA トピック) を参照してください。

ピアツーピア

優先ローカル UDP マルチプレイヤー ポートは、ピアツーピア メッシュを構築できる最もよく知られたポートを提供します。ユーザーの NAT 層を通じて受信接続を許可する最良の方法で構成されています。ただし、次のような NAT トラバーサルを実行するのはタイトルの責任です。
  • NAT タイプの検出
  • デバイスのパブリック IP アドレスとポートの検出と交換
  • NAT パンチングとトラバーサル

Azure PlayFab Party

内部的には、PlayFab Party は既定で優先ローカル UDP マルチプレイヤー ポートを使用します。これは PlayFab Party API を通じて構成可能です。PlayFab Party のポートを変更しない限り、タイトルは優先ローカル UDP マルチプレイヤー ポートに直接バインドすべきではありません。

使用例

次の例は、デュアル スタック ソケットを優先ローカル UDP マルチプレイヤー ポートにバインドする方法を示しています。この例では簡潔にするためにブロッキングの XNetworkingQueryPreferredLocalUdpMultiplayerPort 呼び出しを使用しており、タイトルが以前にネットワークが準備完了になるのを待ち、既に WSAStartup を呼び出していることを前提としています。

リファレンス API ドキュメント

関連情報

優先ローカル UDP マルチプレイヤー ポート API リファレンス (XNetworking) Windows Sockets 2 (Winsock) コミュニケーション セキュリティの概要 (NDA トピック)
最終更新日 2026年8月24日