由 Xbox 设计的手持兼容性计划指南

由 Xbox 设计的手持设备兼容性计划有助于让玩家确信游戏在手持游戏上能正常工作。 在比较同一游戏在电脑桌面环境中的行为方式时,让游戏在手持设备上正常工作需要一些额外的注意事项。 虽然掌上游戏确实只是电脑游戏,但为了在手持设备上正常工作,游戏需要考虑在距离眼睛 12 英寸的小屏幕上交付意味着什么,其中输入来自游戏板,而不是鼠标和键盘。

开发人员应考虑五个主要准则。 本文档概括介绍了这五项准则的内容,并提供有关游戏开发人员如何满足这些准则的指导。

准则 1:默认值仅有效

玩家希望在手持设备上获得类似主机的体验。 他们不应该需要找到菜单并调整一些设置来使游戏进入手持模式。 仅使用控制器,他们应该能够导航游戏的所有元素。 虽然玩家可能需要自定义和各种呈现选项 (黑色级别、阴影、性能和质量) ,但他们仍然希望有良好的默认体验。

让默认值仅“工作”的关键是知道你使用的是游戏手持设备。 以下代码可用于确定游戏是否在游戏手持设备上。

#ifndef DEVICEFAMILYDEVICEFORM_GAMING_HANDHELD
#define DEVICEFAMILYDEVICEFORM_GAMING_HANDHELD    0x0000002E 
#endif
  
DWORD DeviceForm; 
RtlGetDeviceFamilyInfoEnum(nullptr, nullptr, &DeviceForm); 
  
if (DeviceForm == DEVICEFAMILYDEVICEFORM_GAMING_HANDHELD) 
{ 
   // Do stuff for a handheld 
} 

启动游戏时,如果设备是游戏手持设备,游戏可以检查。 如果是游戏手持游戏,游戏应选择可创建良好体验的默认值:

  • 选择与典型手持功能匹配的分辨率和设置。
  • 将默认输入更改为需要游戏板,并在需要文本输入时弹出虚拟键盘。
  • 在) 下面的 指南 4:UI 可读性 部分中,放大字体 (更多内容。

在针对手持设备进行开发时,务必不只是简单地检测游戏是否在一个设备上运行。 开发人员还应该考虑依赖游戏板(而不是鼠标和键盘)如何影响玩家体验。 这会影响诸如用户如何导航界面以及如何管理焦点等内容。

你可能还需要解决输入挑战,例如游戏板的精度比鼠标降低。 目标辅助等功能可以帮助弥补这一点。

若要开始确保“默认值”在手持设备上有效,以下辅助功能指南是很好的资源:

准则 2:图标

屏幕上的提示(如图标)可帮助玩家了解如何导航和玩游戏。 请确保没有指示在手持设备上本机不可用的输入方法会导致混淆的指示。

准则 3:文本输入

为电脑编写的游戏通常假定存在鼠标和键盘。 在游戏手持设备上,默认输入是游戏板。 在游戏中输入文本时,开发人员必须确保玩家只需将游戏板与虚拟键盘配合使用即可输入文本。

每当可能需要输入文本输入时,都应触发虚拟键盘。 两种典型方法是在文本框上检测到“触摸”或文本框具有“输入焦点”且按下“A”按钮时启动虚拟键盘。

游戏可以自由创建自己的虚拟键盘。 他们还可以利用属于 Windows 的虚拟键盘。 以下代码演示了游戏如何在游戏板模式下启动和隐藏 Windows 虚拟键盘。

#include <winrt/windows.ui.viewmanagement.core.h>
using namespace winrt::Windows::UI::ViewManagement::Core;
#pragma comment(lib,"windowsapp.lib")


// CoreInputViewKind::Gamepad enum requires headers from 26100.3624 Windows SDK or greater
// Otherwise, use static_cast<CoreInputViewKind>(7) for earlier SDKs

CoreInputView::GetForCurrentView().TryShow(CoreInputViewKind::Gamepad);

CoreInputView::GetForCurrentView().TryHide();

此代码获取相应的 ICoreInputView3 接口并调用 TryShow 方法,并传入启用了游戏板的新虚拟键盘的标识符。 TryHide 如果当前显示键盘,则会隐藏该键盘。

注意

TryShow 当 Windows 确定显示键盘合适时,方法才会显示键盘。 例如,在附加了物理键盘 (和其他区别) 的设备上调用此方法可能不会显示虚拟键盘。 在带触摸屏的手持设备上,此呼叫按预期工作。

注意

上述 API 不依赖于 GDK。 它是 2018 年 10 月发布的版本 10.0.17763.0 中引入Windows 10的 Windows API,CoreInputViewKind::Gamepad但枚举需要 Windows SDK 10.0.26100.3624 或更高版本。

准则 4:UI 可读性

7 英寸宽的小屏幕在游戏手持设备上很常见。 这些小屏幕会使游戏中的文本 UI 难以阅读。 针对这些小屏幕的游戏开发人员指南是:

  • 如果屏幕为 1280 x 720,则文本的像素高度应至少为 9 像素 - 建议高度为 12 像素或更大。
  • 如果屏幕为 1920 x 1080,则文本的像素高度应至少为 14 像素 - 建议高度为 18 像素或更大。

文本可读性是辅助功能问题的主要来源。 许多游戏都识别了这一点,并具有游戏内字体大小的设置。 满足文本可读性的一种简单方法是,当你检测到游戏在手持设备上运行时,自动将其中一个较大的文本大小设置为默认值。

虽然大多数游戏都使用位图字体,但位图字体不会根据屏幕大小、DPI 或其他 Windows 设置自动缩放。 请确保如果使用位图字体,则包括较大文本大小的选项。

如果开发人员在其游戏中使用 TrueType 字体,则可以将DirectWrite用于文本。 DirectWrite 可以利用关键 Windows 功能,例如字体缩放、DPI 和其他窗口设置。

准则 5:支持的显示

游戏使用屏幕空间来提供出色的体验。 游戏不应以严重扭曲游戏玩法的纵横比进行字母装箱或呈现。 对于游戏手持设备来说典型的小屏幕,大量的字母装箱可以使小屏幕更小,从而影响游戏玩法。

其他注意事项

除了列出的五项准则外,请参阅 开发适用于手持 Windows 设备的 GDK 游戏时的其他注意事项