> ## 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 服务 Title Storage 概述

> 了解 XBOX 服务 Title Storage 的含义、功能、存储类型与配额、限流限制,以及云端游戏数据支持的数据格式。

本主题介绍什么是 XBOX 服务 Title Storage,它有哪些功能,并演示如何进行配置。
XBOX 服务 Title Storage 服务提供云存储,用于存放大量按玩家或按游戏的数据。你可以使用它存储玩家统计信息和资产。运行于所有 XBOX 平台的游戏均可使用 Title Storage。

<a name="ID4EW" />

## XBOX 服务 Title Storage 的功能

XBOX 服务 Title Storage 包括以下高级功能。

* 可跨玩家、title 和各种平台共享

* 支持 JSON、二进制和配置文件

<a name="ID4ETB" />

## 存储类型

| 存储类型               | 配额 (Managed Partners) | 配额 (Creators Program) | 用途                                           | 平台                                                              | 玩家            |
| ------------------ | --------------------- | --------------------- | -------------------------------------------- | --------------------------------------------------------------- | ------------- |
| Trusted Platform   | 每位玩家 256 MB           | 每位玩家 64 MB            | 按玩家的数据,例如已保存的游戏或用于播放/暂停/继续的游戏状态。更安全,但存在平台限制。 | 任何平台均可读取,但只有 XBOX One 系列(或更高版本)、XBOX  360 或 Windows  Phone 可写入。 | 可配置为公开或仅限所有者。 |
| Universal Platform | 每位玩家 64 MB            | 每位玩家 64 MB            | 按玩家的数据,例如已保存的游戏或用于播放/暂停/继续的游戏状态。             | 任何平台均可读取或写入。                                                    | 可配置为公开或仅限所有者。 |
| Global             | 256 MB                | 256 MB                | 所有人都可以读取的数据,例如名册、地图、挑战或美术资源。                 | 只能通过 XBOX 开发者门户或合作伙伴中心写入,任何平台均可读取。                              | 所有玩家均可读取。     |

## 限流限制

每分钟一个 title 可执行的读取和写入次数没有硬性限制,但在一小时会话内,平均每分钟通常不能超过一次。例如,一个 title 可在会话开始时进行 60 次读取或写入,但在该小时的其余时间内不能再执行更多。Title 应做好准备,以应对之后调用被限制的情况,以防 XBOX 服务需要对请求进行限流。

<Note>如果你的 title 有特殊的分区需求(例如额外的读取或写入),请联系你的 Microsoft  代表。</Note>

<a name="ID4ECF" />

## 数据类型

本节介绍三种受支持的类型。

* [二进制信息](#ID4ENF)
* [JSON 信息](#ID4EUF)
* [配置信息](#ID4ECAAC)

<a name="ID4ENF" />

#### 二进制信息

二进制信息包括图像、声音和自定义数据等。由于数据必须通过 HTTP 传输,二进制数据必须编码为 HTTP 可接受的字符。例如,你可以将数据转换为十六进制字符串,或使用 base64 编码。Title Storage 不会处理已编码的数据,因此你的游戏在从 Title Storage 读取和写入数据时,必须使用相同的方案进行编码和解码。

<a name="ID4EUF" />

#### JSON 信息

JSON 信息包括结构化数据(键值对)。你可以在支持的语言(例如 JavaScript)中使用 JSON 对象。从 JSON 文件检索数据时,游戏可以提供 `selectQuery` 参数,以返回结构中特定的项。例如,你可以使用包含以下信息的 JSON 文件。

```json theme={null}
{
"difficulty" : 1,
"level" :
    [
        { "number" : "1", "quest" : "swords" },
        { "number" : "2", "quest" : "iron" },
        { "number" : "3", "quest" : "gold" },
        { "number" : "4", "quest" : "queen" }
        ],
"weapon" :
    {
            "name" : "poison",
            "timeleft" : "2mins"
    }
}
```

<Note>出于安全原因,JSON 数据的第一个元素不能是数组。以数组为根提交的 JSON 数据将被服务拒绝。</Note>

你的游戏可以将 JSON 结构的部分选中为 `selectQuery`(例如 `weapon.name`),然后将收到以下内容:

```json theme={null}
{
    "name" : "poison"
}
```

<a name="ID4ECAAC" />

#### 配置信息

配置 blob 是存储在 global title storage 中的数据结构。配置 blob 的格式类似于 JSON 对象。配置 blob 可以包含虚拟节点,这些节点会从可能的选项列表中返回一个设置。虚拟节点对于为特定情形(例如某个 title 或区域设置)提供设置非常有用。虚拟节点包括多个可能的设置,以及用于从这些值中选择的值和条件。在下面的示例中,`defaultCardDesign` 设置可以取虚拟节点中的一个值。

```json theme={null}
{
    "defaultCardDesign":
    {
    "_virtualNode":
    {
        "_selectBy":"titleId",
        "_sourceNodes":
        [
        {"_selector":"123456799", "_data":"RobotUnicornCard.png,binary"},
        {"_selector":"default", "_data":"StandardCard.png,binary"}
        ]
    }
    },
}
```

当游戏读取此文件时,系统会从 `\_sourceNodes` 数组中选择一个值。在本例中,该项是根据游戏的 title ID 选择的。例如,玩游戏 `12456799` 的玩家会看到以下内容:

```json theme={null}
{
    "defaultCardDesign":"RobotUnicornCard.png,binary",
    "_sourceNodes":["defaultCardDesign:titleID:1234567899"]
}
```

未玩该游戏的玩家会看到以下内容:

```json theme={null}
{
    "defaultCardDesign":"StandardCard.png,binary",
    "_sourceNodes":["defaultCardDesign:titleID:default"]
}
```

游戏可以定义与请求中的某个参数匹配的自定义选择器。例如,考虑此配置 blob 中的以下 JSON 对象。

```json theme={null}
{
    "defaultCardDesign":
    {
        "_virtualNode":
        {
            "_selectBy":"custom:gameMode",
            "_sourceNodes":
            [
                {"_selector":"silly", "_data":"RobotUnicornCard.png,binary"},
                {"_selector":"serious", "_data":"SeriousCard.png,binary"},
                {"_selector":"default", "_data":"StandardCard.png,binary"}
                ]
        }
    },
    "backgroundColor":"green",
    "dealerHitsOnSoft17":true
}
```

游戏在 `customSelector` 参数中传入字符串以选择要返回的项。例如,要获取第二个选项,游戏应将 `gameMode.serious` 作为 `selectQuery` 请求。

<a name="ID4E5EAC" />

## 开始使用 XBOX 服务 Title Storage

1. 确定你要存储哪种数据。示例包括已保存的游戏、游戏状态、每日挑战、游戏地图和美术资源。

2. 确定哪些 title 和平台需要访问该数据。Title Storage 支持从单个平台上的单个 title 以及多个平台上的多个 title 进行云数据访问。


## Related topics

- [Title Storage](/zh-CN/services/xbox-services/storage/title-storage/live-title-storage-nav.md)
- [获取 Title Storage 服务配置的配额信息](/zh-CN/services/xbox-services/storage/title-storage/how-to/live-getting-title-storage-quota-info.md)
- [XBOX 服务 API 概述](/zh-CN/services/xbox-services/fundamentals/xbox-services-api/live-introduction-to-xbox-live-apis.md)
- [XBOX 服务沙盒概述](/zh-CN/services/xbox-services/fundamentals/sandboxes/live-setup-sandbox.md)
- [XBOX services 概述](/zh-CN/services/xbox-services/fundamentals/live-xbl-overview.md)
