触控适配捆绑包

触摸适配捆绑包(简而言之为 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.exepackserve 一组资产时,将对其进行优化以减小其大小,然后分发到玩家的设备。

如果不希望优化资产,请使用 --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"
            }
        }
    }
}

配置

packserve捆绑包时,可以使用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)将从非特定目录中选择所有布局。