PC ポートの動作
このトピックでは、PC ポートの動作について説明します。
ポートのルール
PC ポートでは、既定で組み込まれている Windows ファイアウォールをユーザーが使用している場合に、すべての送信伝送制御プロトコル (TCP) およびユーザー データグラム プロトコル (UDP) トラフィックを許可しながら、要求に基づかない受信 TCP および UDPパケットをブロックすることができます。
優先ローカル UDP マルチプレイヤー ポートは、他のポートと同じように動作しますが、要求に基づかない受信 UDP パケットを許可します。 TCP は使用できません。
送信フローは常に機能します。このための属性を宣言する必要はありません。 ユーザーが最初のパケットをリモート サーバー/デバイスに送信すると、そのデバイスからの後続の受信パケットが、関係なく配信されます。
Microsoft Game Development Kit (GDK) タイトル内でのピアツーピアについては、優先マルチプレイヤー ポート上で UDP を使用する必要があります。 さらに、ファイアウォールと NAT のパンチングを実行しなければなりません。 ユーザーがゲームを除外しない限り、要求に基づかない受信 TCP パケットはブロックされます。 要求に基づかない受信 UDP パケットも既定でブロックされます。UDP ピアツーピア フローのブロックを解除するには、ユーザーからの適用除外、または何らかのファイアウォール パンチングが必要です。
タイトルの除外は、ユーザーがファイアウォール設定を使用して追加できます。または、パッケージ化プロセス中、ご自身で特定の属性を宣言するときに追加することもできます。 要求に基づかない実際の受信パケット動作は、ユーザーのファイアウォール設定とゲーム パッケージ属性の両方によって決まります。
PC ユーザーがサード パーティのファイアウォールを使用できることに注意することが重要です。 これらの設定は、ポートの全体的な動作に影響します。 詳しくは、以下をご覧ください。
ヒント: PlayFab パーティーには、この機能を自動的に処理するピアツーピア ネットワーク トポロジが用意されています。 または、独自の実装の出発点として、STUN と ICE に関する RFC を参照してください。
要求に基づかない受信トラフィックの管理
GDK を使用して作成された PC タイトルは、MSIXVC パッケージとして公開されます。
タイトルが MSIXVC パッケージとして出荷される場合、MicrosoftGame.config ファイル内で privateNetworkClientServer や internetClientServer などの属性を宣言することで、要求に基づかない受信トラフィックがどのように処理されるかを宣言できます。
重要: ユーザーのファイアウォールや設定によっては、これらの属性は実際には効果がない場合があります。 詳細については、ファイアウォールとそのトラフィックへの影響に関するページをご覧ください。
以下の表は、要求に基づかない受信トラフィック アクセスおよび予想されるカスタマー エクスペリエンスに、属性がどのように影響するかを示しています。
MicrosoftGame.config | Access | 予想されるカスタマー エクスペリエンス |
---|---|---|
privateNetworkClientServer specified | 要求に基づかない受信 LAN トラフィックを許可する | ゲーム パッケージ内で指定されているように、ゲームの除外が、実行可能イメージのインストール中に追加されます。 |
privateNetworkClientServer NOT specified | 要求に基づかないすべての受信 LAN トラフィックがブロックされる既定の動作を維持する | 通知は表示されません。 要求されていない受信 UDP/TCP パケットはサイレント ドロップされます。 |
internetClientServer specified | 要求に基づかない受信ピアツーピア インターネット トラフィックを許可する | ゲーム パッケージ内で指定されているように、ゲームの除外が、実行可能イメージのインストール中に追加されます。 |
internetClientServer NOT specified | 要求に基づかないすべての受信ピアツーピア インターネット トラフィックがブロックされる既定の動作を維持する | 通知は表示されません。 要求されていない受信 UDP/TCP パケットはサイレント ドロップされます。 |
GDK タイトルの MicrosoftGame.config を編集する方法
- ご自身のタイトルのソース コードに移動します。
- MicrosoftGame.config を開きます。
- 以下のコード スニペットを追加し、ファイルを保存します。
MXIXVC パッケージをビルドするときに、SubmissionValidator ログ ファイル内で警告が生成されることに注意してください。
<ExtendedAttributeList>
<ExtendedAttribute Name="Capability" Value="privateNetworkClientServer"/>
<ExtendedAttribute Name="Capability" Value="internetClientServer"/>
</ExtendedAttributeList>
プロパティは、ゲームの MicrosoftGame.config ファイルに追加されるときに、生成済み AppXManifest.xml に適用されます。 生成プロセスの詳細については、「MicrosoftGame.config の概要」を参照してください。
ファイアウォールとそのトラフィックへの影響
ユーザーのファイアウォールと設定は、ゲームのネットワーク機能に影響します。 このセクションでは、ファイアウォールが GDK タイトルのトラフィックに与える影響について説明します。これは、ネットワーク設計を強化するのに役立ちます。
このトピックをさらに理解できるように、参考として、Win32 ゲーム用のファイアウォールの影響を受けるポート アクセスについても紹介します。
一般的に、サード パーティのファイアウォールを使用しているユーザーには privateNetworkClientServer 属性と internetClientServer 属性の影響はないことについて、心構えをしておく必要があます。 これは全ユーザーの 30 から 40% になると予想されます。
GDK 実行可能ゲーム
既定の Windows 10 ファイアウォールを使用しているユーザー
- 前述のように、privateNetworkClientServer 属性と internetClientServer 属性は機能します
- 送信ベースのフローは、privateNetworkClientServer 属性と internetClientServer 属性が定義されているかどうかに関係なく、常に機能します。 ユーザーが最初のパケットをリモート サーバー/デバイスに送信する限り、そのデバイスから後続の受信パケットが配信されます。
サード パーティのファイアウォールを使用しているユーザー
- privateNetworkClientServer 属性と internetClientServer 属性の効果はありません。 これらのユーザーは、要求に基づかない受信パケットをサイレント ドロップします。 注: これは、パッケージ化中に MicrosoftGame.config 内でアクセス機能を宣言したかどうかは関係ありません。
- 優先ローカル UDP マルチプレイヤー ポート—を含むすべてのポート—が、これらのファイアウォールで指定されるポリシーの適用対象です。
- 通常、送信ベースのフローは機能します。 サード パーティのファイアウォール設定を通じて、タイトルのネットワーク アクセスを適切に除外する必要がある場合は、ユーザーが行います。
Win32 実行可能ゲーム
注: このセクションは、比較のために追加されたものです。 GDK タイトルは Win32 タイトルではありません。 PC タイトルは GDK での開発をお勧めします。
既定の Windows ファイアウォールを使用しているユーザー
- 初回起動時に、ゲーム サーバーへのアプリケーションのネットワーク アクセスを、ユーザーが拒否または許可するための通知が表示されます。
- ただし、送信ベースのフローは、UI 通知なしで常に機能します。