端口规则
- 当用户使用内置的默认 Windows 防火墙时,PC 端口允许所有出站 TCP (传输控制协议) 与 UDP (用户数据报协议) 流量,但会阻止未经请求的入站 TCP 与 UDP 数据包。
- 首选本地 UDP 多人游戏端口的行为与其他端口相同,但允许未经请求的入站 UDP 数据包。不能使用 TCP。
- 出站流始终有效,你无需为此声明任何属性。当用户向远程服务器/设备发送第一个数据包后,来自该设备的后续入站数据包无论如何都会被送达。
- 对于 Microsoft 游戏开发工具包 (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 通知。
