> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 针对 XBOX 游戏串流优化您的游戏

> 针对 XBOX 游戏串流优化您的游戏

使用本主题来优化您的游戏并避免游戏串流时的常见陷阱。XBOX 平台上所有游戏都可以进行串流，无论是通过 XBOX 远程游玩从本地主机串流还是通过 XBOX 游戏串流从云端串流。虽然游戏在没有任何自定义的情况下也可以进行串流，但某些行为和小的更改将改善玩家的体验，有助于增加玩家对您游戏的参与度和游戏时间。以下指南汇集了来自用户研究、视频串流技术细节以及与工作室密切合作串流所获得的最佳实践，这些实践均已表明可以提升游戏串流时的可玩性和乐趣。

## 背景与游戏串流内部原理

从核心上说，XBOX 游戏串流由分布在全球 Azure 数据中心网络中的服务器配置中的数千台 XBOX 设备（XBOX 服务器）组成。总体上，设置 XBOX 游戏串流会话的工作方式如下：

1. 用户选择他们希望玩的游戏。
2. XBOX 游戏串流服务从可用服务器池中为用户分配一台 XBOX 服务器。
3. 该服务将用户登录到服务器、同步游戏存档和 PLS（不会在家用主机之间漫游）、启动游戏并开始游戏串流会话。
4. 用户完成游玩后，退出游戏、同步游戏存档数据、上传 PLS，并注销用户。

## 通用

某些游戏内特性将对用户体验造成负面影响，并可能结束 XBOX 游戏串流上的用户会话。请确保您的游戏采取适当的措施来减轻这些风险。

* **知道您的游戏何时正在串流。**

  首先也是最重要的，测试您游戏在串流环境中的运行状况非常简单。请参阅 [为串流设置 XBOX 开发套件](/build/core-features/common/game-streaming/game-streaming-setup-xbox-developer-kit) 了解如何设置 XBOX 开发套件，并联系您的 Microsoft 客户代表以获得对您游戏私人云环境的访问权限。

  最基本的优化是通过[云感知 API 调用](/build/core-features/common/game-streaming/game-streaming-am-i-streaming)来检查游戏何时在串流环境中运行。这提供了一种简单的方式来知道何时改变行为以适应串流。

<Note>本文中的许多功能和建议无论游戏是否串流，都可能使玩家受益并提高可访问性。</Note>

* **让新用户尽可能快地启动并进入游戏。**

  串流会话的长度差异更大，并不总是允许长时间的游戏会话。您可以使用自动保存点，仅在用户处于串流时才能恢复和继续。

* **确保用户在长过场动画期间不因 “空闲” 而断开连接。**

  XBOX 游戏串流在检测到用户空闲时会结束用户会话。开发人员应使用 [XDisplayAcquireTimeoutDeferral](/reference/system/xdisplay/functions/xdisplayacquiretimeoutdeferral) API 以避免会话进入空闲状态并使用户断开连接。

## 视频

* **根据屏幕尺寸调整您的抬头显示 (HUD) 和 UI 布局。**

  玩家能够将游戏串流到具有不同外形、观看距离和分辨率的各种设备。虽然游戏内文本和 UI 元素在大屏幕电视上可能可读，但在较小的设备上可能会变得难以阅读。[XGameStreamingGetStreamPhysicalDimensions](/reference/system/xgamestreaming/functions/xgamestreaminggetstreamphysicaldimensions) API 可以帮助确保可缩放的 UI 元素对被串流到的特定设备足够大。

  [自定义分辨率概述](/build/core-features/common/game-streaming/game-streaming-custom-resolution-overview) 让您能够更进一步地利用用户设备的全屏，其中许多设备与传统电视的 16:9 分辨率不匹配，从而提供更沉浸式和自然的体验。这也改善了使用原生触控游戏的可用性。

* **尽可能避免红色文本**

  由于视频压缩格式以及人眼对红色的敏感度，这种颜色通常被认为受影响最大。避免使用这种颜色，特别是文本中的锐利边界和细线，可以减少可感知的压缩伪影。

* **允许可配置的伽玛和其他视频设置**

  玩家能够将游戏串流到具有不同外形和屏幕特性的各种设备。可以使用 [XGameStreamingGetClients](/reference/system/xgamestreaming/functions/xgamestreaminggetclients) 获取正在被串流到的每台设备的唯一标识符；使用此标识符按设备保存和恢复视频设置，以适应设备之间亮度的差异。

* **减少视频延迟**

  确保您的游戏与 DirectCapture 兼容将显著减少玩家的视频延迟，创造更具响应性和乐趣的体验。有关更多详细信息，请参阅 [DirectCapture 概述](/build/core-features/common/game-streaming/game-streaming-directcapture-overview)。

## 输入

* **允许用户以适合其设备的自然方式与游戏交互。**

  玩家能够将游戏串流到具有不同外形和输入类型的各种设备，如鼠标和键盘、触摸屏等。如有可能，请支持这些其他方式。[内容测试应用 (CTA) 串流配置概述](/build/core-features/common/game-streaming/game-streaming-content-test-application-stream-config) 提供了有关如何使用除控制器外的输入类型进行串流测试的更多信息。

  有关触控控件和原生触控的更多信息，请参阅 [触控入门](/build/core-features/common/game-streaming/game-streaming-getting-started-with-touch)。

* **响应最近的输入类型**

  玩家能够恢复游戏并在跨各种设备串流时继续游玩，可能并不总是有物理控制器。在这些情况下，玩家希望能够在控制器、触控以及鼠标和键盘输入之间无缝切换。游戏可以使用 “最后一个赢” 的策略来切换 UX 和提示到玩家的首选输入类型。如有可能，不要将玩家锁定在特定输入类型上，或要求使用控制器切换到不同的输入类型模式。有关处理不同输入类型的更多信息，请参阅 [GameInput 概述](/build/core-features/common/input/overviews/input-overview)。

* **考虑输入延迟**

  延迟是串流环境中不可避免的现实。虽然平台尽力最小化延迟，但游戏可以在解释输入时进一步理解和考虑延迟。有关减少玩家感知延迟的可用技术的更多信息，请参阅[游戏串流延迟测量](/build/core-features/common/game-streaming/game-streaming-latency-measurement)和[游戏串流延迟补偿概述](/build/core-features/common/game-streaming/game-streaming-latency-compensation-overview)。

## 本地化

* **使用智能交付进行内容本地化，而不是使用多个包**

  XBOX 游戏串流将检测用户连接的物理区域（也称国家/地区）。此外，XBOX 游戏串流还将检测用户在其本地设备上设置的区域设置。这些检测到的区域和区域设置值会传递给 XBOX 服务器进行匹配配置。XBOX 游戏串流还确保将向用户提供已在合作伙伴中心为该区域配置的游戏包。

  有鉴于此，我们建议开发人员为其游戏提交单个包含所有本地化内容的包，利用[智能交付语言指定符](/build/core-features/common/packaging/intelligentdelivery-language)，而不是提交带有不同本地化内容集的多个包。这确保用户无论从哪个国家/地区游玩，都将以他们首选语言体验游戏。

## 存储

* **避免要求临时驱动器在游戏会话之间保留数据**

  XBOX 游戏串流会在会话之间清除临时驱动器中的所有数据。后续的游戏会话可能发生在不同数据中心的不同 XBOX 服务器上。游戏不应在临时驱动器上存储会话之间需要的任何数据。

* **避免大量使用永久本地存储 (PLS)**

  XBOX 游戏串流在会话之间漫游[永久本地存储](/build/console-features/storage/local-storage)；使用超过 4 GB 的 PLS 会增加您游戏在 XBOX 游戏串流上的启动时间。PLS 中每额外使用 4 GB，加载时间会增加 20 秒。

## 网络

* **预期不同的网络延迟和特性**

  XBOX 游戏串流从 Azure 数据中心运行 XBOX 主机。这意味着一位用户可能来自多个 IP 范围，并且可能比家用主机玩家有更低的 ping 时间。

* **避免使用端口 9002**

  XBOX 游戏串流使用端口 9002 进行网络通信，因此游戏开发人员不应将端口 9002 用于 TCP 或 UDP 通信。有关您游戏的特定端口和网络配置的更多信息，请参阅[配置开发网络访问](/home/setup-install/devkits/settings/configure-dev-network)。

<Note>在最近的 GDK 中，端口 9002 现在被阻塞。</Note>

## 不支持的游戏内情景

由于 XBOX 游戏串流将用户体验限制为仅限游戏玩法的设计，以下游戏内情景在云串流期间不受支持。但是，某些情景在用户串流其家用主机时可能有效。

* **避免尝试启动其他应用或游戏**

  除启动 Edge 浏览器外，XBOX 游戏串流不支持单独启动游戏/应用。

* **避免依赖 Web 浏览器与所玩游戏位于同一物理机器上**

  在 XBOX 游戏串流上对 Web 浏览器或系统托管 Web blend 的协议激活将导致该激活在用户当前游玩的本地设备上启动。开发人员应确保这些体验不依赖于在与游戏相同的设备上运行的浏览器。示例：游戏启动到一个具有 “返回” 按钮的网站，该按钮尝试对游戏进行协议激活。

* **避免要求用户在任何时候手动重启游戏**

  这包括游戏自我更新并要求用户手动重启游戏的情景。XBOX 游戏串流在游戏关闭后结束用户会话，因此重启游戏会终止串流。

* **避免过度惩罚空闲时间过长的用户**

  XBOX 游戏串流在用户意外从会话断开后，会保持用户会话存活 5-10 分钟。因此，如果游戏惩罚空闲用户，将会不必要地伤害 XBOX 游戏串流用户。游戏可以使用 [XGameStreamingGetClients](/reference/system/xgamestreaming/functions/xgamestreaminggetclients) API 专门检测游戏串流客户端断开连接。

## 游戏服务

XBOX 游戏串流通过数据中心的 XBOX 服务器向更广泛的受众开放游戏，这对使用 ping 时间或设备 ID 等设备特性改变游戏行为的游戏服务有影响。

* **避免使用 XBOX 服务安全令牌 (XSTS) 进行封禁/欺诈检测**

  XBOX 游戏串流用户每次会话都会获得一台新的 XBOX 服务器，因此可以完全预期看到来自同一设备的许多单独的用户会话。此外，游戏服务不应在此情况下封禁这些设备。要知道这些会话源自 XBOX 服务器，开发人员可以在其游戏中使用 XGameStreamingGetServerLocationName GDK API。您还可以从 XSTS 令牌检测这一点；有关在您的游戏服务中处理设备身份的更多信息，请参阅[在 XBOX 服务安全令牌 (XSTS) 声明中引用 XBOX 游戏串流服务器](/build/core-features/common/game-streaming/game-streaming-referencing-xcloud-servers-in-xsts-claims)。

* **避免因太多人在同一 XBOX 服务器上游玩而封禁用户**

  单个 XBOX 服务器会在不同时段被多个玩家使用；如果您的游戏封禁此类情况，将会伤害 XBOX 游戏串流玩家的体验。（例如，如果游戏在来自同一 IP 地址或设备 ID 的游戏会话过多时出现问题。）

* **避免游戏服务将来自同一 IP 地址的众多会话标记为可疑**

  数据中心中的多个 XBOX 服务器可能共享用于出入通信的相同公共 IP 地址。请确保您的游戏服务能够处理具有相同 IP 地址的 100+ 个不同的 XBOX 主机。

* **避免使用依赖于游戏运行处 IP 地址的逻辑来做出关于用户的策略决定**

  XBOX 服务器不一定位于用户所在的相同国家/地区。使用 IP 地址进行游戏内游玩决策将降低用户体验。~~[XGameStreamingGetClientIPAddress](/reference/system/xgamestreaming/functions/xgamestreaminggetclientipaddress) 函数可用于确定串流客户端的 IP 地址，更适合游戏玩法逻辑。~~

  > \[!IMPORTANT]
  > **`XGameStreamingGetClientIPAddress` 自 2604 GDK 版本起已被弃用**，并将在未来版本中被移除。要确定用户的位置，请改为使用 XSTS 令牌声明。有关详细信息，请参阅[在 XSTS 声明中引用 XBOX 游戏串流服务器](/build/core-features/common/game-streaming/game-streaming-referencing-xcloud-servers-in-xsts-claims)。

* **避免游戏或游戏服务因延迟检查显示玩家延迟非常低而中断/惩罚用户**

  由于数据中心配置，XBOX 游戏串流用户的 ping 时间将始终低于本地主机上的用户。虽然您可能收到 0ms 的 ping 时间，但重要的是不要使用 ping 时间来降级/封禁用户。不要根据 ping 时间移除/调整任何内部游戏/服务器逻辑。

## 另请参阅

[云感知 API 调用](/build/core-features/common/game-streaming/game-streaming-am-i-streaming)

[XGameStreamingGetStreamPhysicalDimensions](/reference/system/xgamestreaming/functions/xgamestreaminggetstreamphysicaldimensions)

[XGameStreamingGetClientIPAddress](/reference/system/xgamestreaming/functions/xgamestreaminggetclientipaddress)

[XGameStreamingGetClients](/reference/system/xgamestreaming/functions/xgamestreaminggetclients)

[触控入门](/build/core-features/common/game-streaming/game-streaming-getting-started-with-touch)

[DirectCapture 概述](/build/core-features/common/game-streaming/game-streaming-directcapture-overview)

[自定义分辨率概述](/build/core-features/common/game-streaming/game-streaming-custom-resolution-overview)

[在 XBOX 服务安全令牌 (XSTS) 声明中引用 XBOX 游戏串流服务器](/build/core-features/common/game-streaming/game-streaming-referencing-xcloud-servers-in-xsts-claims)


## Related topics

- [云感知 API 调用](/zh-CN/build/core-features/common/game-streaming/game-streaming-am-i-streaming.md)
- [串流您的游戏](/zh-CN/build/core-features/common/game-streaming/game-streaming-stream-your-game.md)
- [游戏串流简介](/zh-CN/build/core-features/common/game-streaming/game-streaming-overview.md)
- [XBOX 游戏串流 VS. XBOX 远程游玩](/zh-CN/build/core-features/common/game-streaming/game-streaming-project-xcloud-vs-console-streaming.md)
- [XBOX Cloud Gaming 触控与流式传输支持](/zh-CN/build/core-features/common/game-streaming/index.md)
