优化游戏以进行 Xbox 游戏流式传输
使用本主题来优化游戏,避免在游戏流式传输时出现常见陷阱。 无论是从使用 Xbox 远程游戏的本地主机还是通过使用 Xbox 游戏流式传输的云,都可以流式传输 Xbox 平台上的所有游戏。 虽然无需自定义即可流式传输游戏,但某些行为和细小更改将改善玩家的体验,并有助于提高游戏的参与度和增加玩游戏的时间。 以下指南是用户研究的最佳做法、视频流式传输的技术细节以及工作室在流式传输方面密切合作获得的见解的集合,这些见解都表明在使用游戏流式处理时可提高可玩性和乐趣。
后台 & 游戏流式处理内部
Xbox 游戏流式处理的核心是服务器配置中的数千个 Xbox 设备, (Xbox Server) Azure 数据中心的全球网络。 概括地说,设置 Xbox Game Streaming 会话的工作方式如下:
- 用户选择要玩的游戏。
- Xbox Game Streaming 服务从可用服务器池中为用户分配 Xbox 服务器。
- 该服务将用户登录到服务器、游戏保存和 PLS(不在常用主机之间漫游),启动游戏并启动游戏流会话。
- 用户玩完游戏后,退出游戏,同步保存的游戏数据,上传 PLS,然后用户退出。
常规
某些游戏内特征会对用户体验产生负面影响,并可能会结束 Xbox Game Streaming 上的用户会话。 请确保你的游戏采取适当步骤来减少这些风险。
了解游戏何时进行流式传输。
首先,在流式传输环境中测试游戏非常简单。 有关如何设置 Xbox 开发工具包的信息,请参阅为流式处理设置 Xbox 开发工具包,并联系 Microsoft 客户代表以获取对游戏私有云环境的访问权限。
最基本的优化是通过云感知 API 调用检查游戏在流式传输环境中运行的时间。 这提供了一种简单的方法来知道何时更改流式处理的行为。
注意
本文档中的许多功能和建议可能会使玩家受益并提高辅助功能,而不管游戏流式处理如何。
允许新用户尽快启动并跳入游戏。
流式传输会话在长度上更具多样性,并不总是适合进行长时间会话。 可以使用自动保存点,并使其仅在玩家进行流式传输时才可以恢复和前移。
确保用户不会因在长时间的过场活动期间处于“空闲”状态而断开连接。
Xbox Game Streaming 在检测到用户空闲时结束用户会话。 开发人员应使用 XDisplayAcquireTimeoutDeferral API 来避免会话进入空闲状态并断开用户连接。
视频
根据屏幕大小调整抬头显示 (HUD) 和 UI 布局。
玩家可以流式传输到具有不同外形规格、查看距离和分辨率的各种设备。 虽然在大屏幕电视上可以阅读游戏内的文字和 UI 元素,但在较小的设备上,这些元素可能变得难以阅读。 XGameStreamingGetStreamPhysicalDimensions API 可帮助确保可缩放的 UI 元素在要流式传输到其中的特定设备中显得足够大。
自定义分辨率概述使你能够进一步了解这一点,并利用用户设备的全屏(其中许多设备与电视的传统 16:9 分辨率不匹配),从而提供更沉浸式的自然体验。 这也提高了使用本机触控的游戏的可用性。
尽可能避免使用红色文本
由于视频压缩格式和人眼对红色的敏感度,通常认为这种颜色受到的影响最大。 避免使用这种颜色,尤其是避免在文字刺眼的边框和细线中使用这种颜色,可以减少压缩伪影感。
允许可配置的伽马和其他视频设置
玩家可以流式传输到具有不同外形规格和屏幕特征的各种设备。 XGameStreamingGetClients 可用于获取要流式传输到的每个设备的唯一标识符;使用此标识符可保存和还原每个设备的视频设置,以兼顾设备间亮度差异。
减少视频延迟
确保游戏与 DirectCapture 兼容将显著减少玩家的视频延迟,从而提供响应更迅速、让人更愉快的体验。 有关更多详细信息,请参阅 DirectCapture 概述。
输入
允许用户以适合其设备的方式与游戏进行交互。
玩家可以流式传输到各种具有不同外形规格和输入类型(例如鼠标和键盘、触摸屏等)的设备,尽可能支持这些不同的形态。 内容测试应用程序 (CTA) 流配置概述详细介绍了如何使用除控制器之外的输入类型测试流式传输。
有关触摸控件和本机触控的详细信息,请参阅开始使用触控。
响应最新的输入类型
玩家可以在跨各种设备进行流式传输时恢复游戏并继续玩游戏,并且可能并不总是有物理控制器。 在这些情况下,玩家希望能够在控制器、触控以及鼠标和键盘输入之间无缝切换。 游戏可以使用“最后一名胜出”政策,将用户体验和提示切换到玩家的首选输入类型。 尽可能不要限定玩家使用某种输入类型,或要求使用控制器将模式切换到其他输入类型。 有关处理不同输入类型的详细信息,请参阅 GameInput 概述。
输入延迟帐户
在流式传输环境中,延迟是一个不可避免现实。 尽管平台在尝试尽可能地最大程度地减少延迟,但游戏可以在解析输入时进一步了解并考虑延迟。 请参阅游戏流式传输延迟度量和游戏流式传输延迟补偿概述,详细了解可用于减少玩家感受到的延迟的技术。
本地化
使用智能交付进行内容本地化,而不是使用多个包
Xbox 游戏流式处理将检测物理区域 (又名国家/地区) 用户连接的所在国家/地区。 此外,Xbox Game Streaming 将检测用户在其本地设备上设置的区域设置。 这些区域和区域设置的检测值被传递到 Xbox 服务器以进行配置和匹配。 Xbox Game Streaming 还可确保为用户提供已在合作伙伴中心为该区域配置的游戏包。
鉴于此,我们建议开发人员为其游戏提交一个包,其中包含使用 智能交付语言说明符的所有本地化内容,而不是具有不同本地化内容集的多个包。 这可确保用户以首选语言体验游戏,无论他们当时在哪个国家/地区玩游戏。
存储
避免要求临时驱动器在游戏会话之间持久保存数据
Xbox Game Streaming 会清除任何会话之间的临时驱动器中的所有数据。 后续游戏会话可能会发生在不同数据中心的不同 Xbox 服务器上。 游戏不会在临时驱动器上存储会话之间所需的任何数据。
避免大量使用永久本地存储 (PLS)
Xbox 游戏流式处理在会话之间漫游 持久本地存储 ;使用超过 4 GB 的 PLS 会增加在 Xbox Game Streaming 上启动游戏的时间。 PLS 中每增加 4 GB 的使用量,预计加载时间会增加 20 秒。
网络
预期不同的网络延迟和特征
Xbox Game Streaming 在 Azure 数据中心运行 Xbox 主机。 这意味着一个用户可以从多个 IP 范围玩游戏,并且 ping 时间可能比家庭主机游戏玩家少。
避免使用端口 9002
Xbox 游戏流式处理使用端口 9002 进行网络,因此游戏开发人员不应将端口 9002 用于 TCP 或 UDP 通信。 有关游戏的特定端口和网络配置的其他信息,请参阅 配置开发网络访问权限 。
注意
端口 9002 现在在最近的 GDK 上被阻止。
不支持的游戏内场景:
由于 Xbox 游戏流式处理设计将用户体验限制为仅玩游戏,因此在云流式处理期间不支持以下游戏内方案。 但是,当用户流式传输其主主机时,其中某些方案可能有效。
避免尝试启动其他应用或游戏
除可以启动 Microsoft Edge 浏览器之外,Xbox Game Streaming 不支持单独的游戏/应用启动。
避免依赖 Web 浏览器在玩游戏时位于同一物理计算机上
将 Xbox 游戏流式传输到 Web 浏览器或系统托管的 Web 混合上的协议激活将导致该激活在用户正在玩的本地设备上启动。 开发人员应确保这些体验不受到与游戏在同一设备上运行的浏览器的影响。 示例:启动到具有“后退”按钮网站的游戏,该按钮尝试通过协议激活游戏。
避免要求用户随时手动重启游戏
这包括游戏自行更新并需要用户手动重启游戏的场景。 Xbox Game Streaming 会在游戏关闭后结束用户会话,因此重启游戏会结束流式传输。
避免过度惩罚空闲时间过长的用户
Xbox Game Streaming 在用户与会话意外断开连接后将用户会话保持活动状态 5-10 分钟。 因此,如果游戏惩罚那些空闲用户,就会不必要地伤害到 Xbox Game Streaming 用户。 游戏可以使用 XGameStreamingGetClients API 专门检测 GameStreaming 客户端断开连接。
游戏服务
Xbox Game Streaming 通过数据中心的 Xbox Servers 向更广泛的受众提供游戏,这会对利用设备特征(例如 ping 时间或设备 ID)来变更游戏行为的游戏服务产生影响。
避免使用 Xbox 服务安全令牌 (XSTS) 进行禁止/欺诈检测
Xbox Game Streaming 用户每次会话都会获得一个新的 Xbox 服务器,因此可想而知地会看到许多来自同一设备的单独用户会话。 此外,在这种情况下,游戏服务不应禁止这些设备。 若要了解这些会话源自的 Xbox 服务器,开发人员可以在他们的游戏中使用 XGameStreamingGetServerLocationName GDK API。 还可以从 XSTS 令牌中检测到此情况。有关在游戏服务中处理设备标识的详细信息,请参阅 引用 Xbox 服务中的 Xbox 游戏流式处理服务器安全令牌 (XSTS) 声明 。
如果太多人在同一 Xbox 服务器上玩游戏,则避免禁止用户玩游戏
单个 Xbox 服务器将在不同时间为多个玩家提供服务;如果游戏禁止此类实例,这将损害 Xbox Game Streaming 玩家的体验。 (例如,如果游戏会话过多来自同一 IP 地址或设备 ID 时出现问题,则 )
避免游戏服务将来自同一 IP 地址的多个会话标记为可疑
数据中心内的多个 Xbox 服务器可能共享相同的公共 IP 地址,用于传出和传入通信。 请确保游戏服务可以处理 100 多个具有相同 IP 地址的不同 Xbox 主机。
避免使用依赖于运行游戏的 IP 地址的逻辑来做出有关用户的策略决策
Xbox 服务器不一定位于用户所在的同一国家/地区。 使用 IP 地址进行游戏决策会降低用户体验。 XGameStreamingGetClientIPAddress 函数可用于确定流式处理客户端的 IP 地址,更适合游戏逻辑。
当延迟检查显示玩家延迟非常低时,避免游戏或游戏服务中断/惩罚用户
由于数据中心配置,Xbox Game Streaming 用户的 ping 时间将始终低于使用本地主机的用户。 尽管可能会收到 0 毫秒的 ping 时间,但重要的是不要使用 ping 时间来降级/禁止用户。 不要根据 ping 时间删除/调整任何内部游戏/服务器逻辑。
另请参阅
XGameStreamingGetStreamPhysicalDimensions