連接埠規則
- 當使用者使用內建的預設 Windows 防火牆時,PC 連接埠會允許所有輸出的傳輸控制通訊協定 (TCP) 和使用者資料包通訊協定 (UDP) 流量,同時封鎖未經要求的輸入 TCP 和 UDP 封包。
- 慣用本機 UDP 多人遊戲連接埠的行為與其他連接埠相同,但允許未經要求的輸入 UDP 封包。無法使用 TCP。
- 輸出流量一律可運作,您不需要為此宣告任何屬性。當使用者將第一個封包傳送到遠端伺服器/裝置後,無論如何都會傳遞來自該裝置的後續傳入封包。
- 對於 Microsoft Game Development Kit (GDK) 遊戲中的點對點連線,您應該在慣用多人遊戲連接埠上使用 UDP。此外,您必須執行防火牆和 NAT 穿透。除非使用者將遊戲設為例外,否則未經要求的輸入 TCP 封包會遭到封鎖。未經要求的輸入 UDP 封包預設也會遭到封鎖,需要使用者設定例外或某種形式的防火牆穿透,才能解除封鎖 UDP 點對點流量。
- 遊戲的例外可以由使用者透過防火牆設定新增,也可以在您於封裝程序期間宣告特定屬性時新增。使用者的防火牆設定和遊戲套件屬性共同決定實際的未經要求輸入封包行為。
- 請務必注意,PC 使用者可以使用協力廠商防火牆。這些設定會影響連接埠的整體行為。詳細資訊如下。
未經要求的輸入流量管理
使用 GDK 建立的 PC 遊戲會以 MSIXVC 套件的形式發佈。 當遊戲以 MSIXVC 套件的形式發行時,您可以選擇在 MicrosoftGame.config 檔案中宣告 privateNetworkClientServer 或 internetClientServer 等屬性,以宣告如何處理未經要求的輸入流量。 重要: 由於使用者的防火牆和設定,這些屬性可能沒有實際效果。若要深入了解,請參閱防火牆及其對流量的影響。 下表列出屬性如何影響未經要求的輸入流量存取,以及預期的客戶體驗。如何為 GDK 遊戲編輯 MicrosoftGame.config
- 前往您遊戲的原始程式碼。
- 開啟 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 通知。
