触控适配捆绑包
触摸适配捆绑包(简而言之为 TAB)是一组自包含的内容,用于在各种设备和外形规格的各种区域中玩游戏。
捆绑包由以下内容组成:
- 布局:可呈现给玩家的触摸控件布局的 JSON 表示形式。
- 资产:可用于自定义触摸控件外观的 PNG 图像。
- 上下文和状态:可跨布局使用并影响特定布局呈现的共享上下文。
- 配置:捆绑包周围的元数据集,包括版本控制和默认布局。
布局
每个选项卡都包含使用触摸控件玩游戏所需的所有布局。 布局目录包括游戏可能引用的每个单独布局。 要在 XGameStreaming 布局相关 API 中使用的布局名称由没有扩展名的布局的文件名确定。
每个 布局 都可向玩家显示一组特定触摸控件的 JSON 形式。
选择布局文件以使用本地化支持中所述的算法。
示例 1:所有区域设置中的布局相同
在此示例中,有两个布局可用于所有区域设置。
/
layouts/
neutral/
menu.json
driving.json
示例 2:在特定区域设置中自定义的某些布局
在此示例中,有两种布局:驱动和菜单。 菜单布局适用于所有语言,但驱动布局是英国自定义的。
/
layouts/
en/
en-GB/
driving.json
neutral/
menu.json
driving.json
资产
资产是一组 PNG 图像,可用于自定义单个触摸控件的外观。 可以提供不同分辨率图像,以便在玩家的特定设备上实现最佳体验。
对于每个图像,必须提供以下倍数的分辨率:1.0,1.5,2.0,3.0,4.0。
每个图像所需的维度基于其使用位置,可在每个控件的样式注释中找到。
选择布局文件以使用本地化支持中所述的算法。
例如,如果有两个可用于所有区域设置的自定义图像:
/
assets/
neutral/
@1.0x/
customImage1.png
customImage2.png
@1.5x/
customImage1.png
customImage2.png
@2.0x/
customImage1.png
customImage2.png
@3.0x/
customImage1.png
customImage2.png
@4.0x/
customImage1.png
customImage2.png
资产优化
默认情况下,使用 tak.exepack
或 serve
一组资产时,将对其进行优化以减小其大小,然后分发到玩家的设备。
如果不希望优化资产,请使用 --no-asset-optimization
选项在不修改的情况下保留 PNG 图像。
上下文和状态
context
JSON 文件可以包含在捆绑包中,例如:
-
definitions
:可在捆绑包中的所有布局中使用的静态变量定义。 -
state
:可在捆绑包中的所有布局中使用的状态变量(和初始状态)的定义。 状态变量可以在运行时由游戏动态更改其数据。 -
allowedStateValues
:包含给定状态的允许状态值,例如给定资产的允许资产名称。 -
styles
:一种样式对象,包含一系列可以在捆绑包中所有布局中引用的可重用样式。
示例 context.json
文件,其中包含 defaultDeadzone 的定义、命名的操作映射,和为各种元素启用状态,以及武器的一组经允许的资产值,以及一个包含共享的颜色定义和系统颜色覆盖的颜色块。
{
"$schema": "https://raw.githubusercontent.com/microsoft/xbox-game-streaming-tools/main/touch-adaptation-kit/schemas/context/v3.0/context.json",
"definitions": {
"defaultMovementDeadzone": 0.1,
"jumpAction": "gamepadA",
"fireAction": "rightTrigger",
"reloadAction": "leftBumper"
},
"state": {
"enableReload": false,
"switchWeaponVisible": false,
"fireWeaponImage": "defaultWeapon"
},
"allowedStateValues": {
"fireWeaponImage": [
"defaultWeapon",
"fist",
"knife",
"bow",
"grenade"
]
},
"styles": {
"colors": {
"default": {
"system_contentPrimary": "#ff0000ff",
"myColor1": "#00ff00ff"
}
}
}
}
配置
当pack
或serve
捆绑包时,可以使用tak.exe设置捆绑包的一组配置选项:
- 默认布局:如果游戏尚未通过 API 调用更改布局,则应在会话开始时向玩家显示布局。
- 版本:捆绑包的内容版本(示例: 1.0.0.0)。 提交到 Xbox 游戏流式处理服务的每个版本都必须是唯一的内容版本。
- 版本:捆绑包的内容版本(示例: 1.0.0.0)。 版本名称可用于对具有相同语义的多个游戏的版本进行分组。
本地化支持
由于游戏可能支持多种语言,因此 TAB 的内容将使用 IETF 语言标记细分为目录中的内容。 所有捆绑包都必须执行中立布局,这些布局将进入名为"中立"的目录内。 用于加载 TAB 内容的语言是根据用户在 Xbox 服务上配置的区域确定的。
在 TAB 中探测文件时,应用程序会查找最具体的语言,并回退到不太具体的目录,直到找到匹配的文件。 例如:
/
layouts/
en/
en-GB/
driving.json
driving.json
neutral/
menu.json
driving.json
在此结构中,当查找 en-GB 内容集时,将选择以下布局:
en/en-GB/driving.json
neutral/menu.json
同样,en-US 将选择:
en/driving.json
neutral/menu.json
语言(如 fr-CA)将从非特定目录中选择所有布局。