> ## 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.

# Winter Starfall PlayFab 演示游戏概览

> 了解 Winter Starfall，PlayFab 提供的可玩演示游戏，端到端展示账号、经济、匹配和分析等在线服务功能。

# 演示游戏：Winter Starfall

Winter Starfall 是 PlayFab 开发的游戏，用于展示我们不同的功能，并提供一种途径来了解这些功能在实际游戏中如何实现。

你可以在 [WinterStarfall.com](https://winterstarfall.com/) 上试玩这款游戏。如果你已经拥有 PlayFab 开发者账号，还可以通过开发者门户中的 My Studios and Titles 页面访问。

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/demo-game/demo-games-overview.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=4312da1a7db281fb614184912df424b7" alt="显示演示游戏的 Game Manager 首页" width="1100" height="600" data-path="images/playfab/demo-game/demo-games-overview.png" />

该游戏构建为 Web 应用，使用 PlayFab SDK 提供的 API，并结合 PlayFab 的 Azure Functions 集成实现自定义功能。当前该游戏使用了以下 PlayFab 功能：

* Economy V2（目录、货币、礼包、商店）
* Title data、Player data 及其他核心 PlayFab 功能
* 用于与玩家沟通的 Title news
* 使用 Azure Functions 的 CloudScript

## 附加演示功能

Winter Starfall 提供了一些便于观察 PlayFab“幕后运行情况”的功能。任何人都可以试玩这款游戏，但要完整使用这些功能，你需要注册[免费开发者账号](https://developer.playfab.com)。

在右上角个人资料图标旁有一个 PlayFab 图标，点击后会打开 PlayFab 活动侧边栏。

<img src="https://mintcdn.com/microsoft-4404708b/21eXsQWfZsj4EYti/images/playfab/demo-game/winter-starfall-activity.webp?fit=max&auto=format&n=21eXsQWfZsj4EYti&q=85&s=054047b1d948df754d82778ae711bd27" alt="winter-starfall-profile" width="3211" height="1359" data-path="images/playfab/demo-game/winter-starfall-activity.webp" />

1. 活动侧边栏显示 API 调用列表，会随着你玩游戏而更新。每次 API 调用都会带有标签并使用颜色编码，以标识它所属的 PlayFab SDK。
2. 你可以在列表中选择某次 API 调用来查看完整的 API 请求和响应。
3. 选择 **View title F8941** 会在 Game Manager 中打开该 title，你可以查看各项功能的配置方式。此步骤会提示你使用 PlayFab 开发者账号登录。
4. **Clear** 会移除活动栏中的所有当前通知。

<Note>
  你可以随时试玩这款演示游戏，但要访问 Game Manager，你需要注册[免费开发者账号](https://developer.playfab.com)。
</Note>

## 涵盖的 PlayFab 功能

以下部分更详细地介绍了游戏中使用的各种 PlayFab 功能。

### 认证

任何 PlayFab 游戏中发生的第一件事就是玩家登录，这会返回后续所有 API 调用所需的认证令牌。Winter Starfall 支持多种可恢复的登录方式：邮件、Microsoft（通过 OpenID）、Google 和 Facebook。[源代码和场景教程](/services/playfab/demo-game/source-code-and-best-practices)对登录流程以及玩家认证的最佳实践进行了深入的讲解。

[进一步了解 PlayFab 认证](/services/playfab/identity/player-identity/authentication)

### Economy

作为一款奇幻角色扮演游戏（RPG），Winter Starfall 包含一个经济系统，玩家可以访问商店、购买物品，并通过战斗赚取货币。PlayFab 最新的经济服务负责处理游戏中与库存和交易相关的所有事务。[源代码和场景教程](/services/playfab/demo-game/source-code-and-best-practices)对游戏中发生的购买流程进行了深入的讲解。

[进一步了解 Economy V2](/services/playfab/economy-monetization/economy-v2/overview)

### Player data

PlayFab 中的玩家由不同功能存储在服务中的相关数据。Player data 作为一项功能，允许你以键/值对或对象和文件的形式存储与玩家相关的信息，这些信息可以跨多个游戏和设备共享。

在 Winter Starfall 中，Player data 用于存储游戏状态以及诸如哪些角色加入玩家队伍之类的信息。当玩家在剧情中前进时，其位置会通过调用 [UpdateUserData](xref:titleid.playfabapi.com.client.playerdatamanagement.updateuserdata) API 记录到其玩家档案中。当玩家登录时，会通过 `GetUserData` 访问该数据，从而将玩家加载到剧情中的正确位置并保留所有过往进度。

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/demo-game/winterstarfall-player-data.jpg?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=49372a116bcafd08eb85bb8ae82bba41" alt="winter-starfall-player-data" width="1280" height="800" data-path="images/playfab/demo-game/winterstarfall-player-data.jpg" />

例如，以下是登录流程中调用 `GetUserData` 时的 API 请求与响应体示例。

**GetUserData - Request**

```json theme={null}
{
  "Keys": [
    "stats",
    "location",
    "party",
    "notifications",
    "cinematicProgression",
    "enemyGroupProgression"
  ]
}
```

**GetUserData - Response**

```json theme={null}
{
  "code": 200,
  "status": "OK",
  "data": {
    "Data": {
      "location": {
        "Value": "{\"id\":\"intro\",\"map\":[\"intro\",\"intro-village\"]}",
        "LastUpdated": "2024-09-20T18:16:13.68Z",
        "Permission": "Private"
      },
      "party": {
        "Value": "{\"characters\":[{\"id\":1,\"armor\":\"dfae3ef9-92a0-493b-9bb8-f88a09718d26\",\"weapon\":\"32e1f684-43b0-4fe6-982e-b0829ff0d6f3\",\"spells\":null}],\"guests\":[]}",
        "LastUpdated": "2024-09-20T18:16:13.68Z",
        "Permission": "Private"
      }
    },
    "DataVersion": 20
  },
  "CallBackTimeMS": 97
}
```

[进一步了解 Player data 功能](/services/playfab/player-progression/player-data)

### Title data

Title data 与 Player data 类似，也存储键值对，只不过这些数据是关于游戏 title，而不是特定玩家。Winter Starfall 将 Title data 与 Economy 系统结合使用，通过存储值为 `sell, 0.5` 的 `multipliers` 来计算物品出售时的价格。有关销售流程的更多信息，请参阅[源代码和场景教程](/services/playfab/demo-game/source-code-and-best-practices)。

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/demo-game/winterstarfall-title-data.jpg?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=c90a1a2de5f2b0cdefc3b93630023a1f" alt="Game Manager 中的 winterstarfall title data 概览" width="1280" height="800" data-path="images/playfab/demo-game/winterstarfall-title-data.jpg" />

[进一步了解 Title data](/services/playfab/live-service-management/game-configuration/titledata)

### 使用 Azure Functions 的 CloudScript

CloudScript 是一项灵活的功能，允许你实现自定义的服务器端功能。它与其他 PlayFab 功能配合使用时，能够提供几乎无限的解决方案。

游戏使用该功能解决了许多场景：

* [CombatVictory](https://github.com/PlayFab/winter-starfall/blob/main/azure-functions/CombatVictory.cs) - 当玩家赢得战斗后，执行一系列操作以授予经验、物品并添加队伍成员。
* [PlayerCreated](https://github.com/PlayFab/winter-starfall/blob/main/azure-functions/PlayerCreated.cs) - 为新玩家配备起始物品和属性。
* [ProgressCheckpoint](https://github.com/PlayFab/winter-starfall/blob/main/azure-functions/ProgressCheckpoint.cs) - 在到达关键剧情节点后执行操作以解锁物品和角色。
* [ResetPlayer](https://github.com/PlayFab/winter-starfall/blob/main/azure-functions/ResetPlayer.cs) - 清除用户数据、物品和统计信息，实现完全重置。
* [SellItem](https://github.com/PlayFab/winter-starfall/blob/main/azure-functions/SellItem.cs) - 支持按折扣出售物品，这并不是经济系统固有的功能。购买/销售流程在[源代码和场景教程](/services/playfab/demo-game/source-code-and-best-practices)中有更详细的介绍。

[进一步了解使用 Azure Functions 的 CloudScript](/services/playfab/live-service-management/service-gateway/automation/cloudscript-af)

<Note>
  Winter Starfall 的 CloudScript 函数是用 C# 编写的，但你可以使用 [Azure Functions](https://learn.microsoft.com/azure/azure-functions/supported-languages?tabs=isolated-process%2Cv4\&pivots=programming-language-csharp) 支持的任何语言。
</Note>

### Title news

Title news 用于与限定于某个 title 的所有玩家进行沟通。Winter Starfall 将其实现为一个通知系统，用于显示游戏提示和公告。

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/demo-game/winterstarfall-title-news.jpg?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=dfa9a280fd3013c08a2e038f90f99f7e" alt="winter-starfall-title-news" width="3321" height="1930" data-path="images/playfab/demo-game/winterstarfall-title-news.jpg" />

除 Title news 之外，PlayFab 还提供其他沟通功能，例如邮件模板和推送通知。

[进一步了解 title 沟通方式](/services/playfab/live-service-management/game-configuration/title-communications/overview)

## 演示的限制

由于 Winter Starfall 依托真实玩家数据运行，Game Manager 视图中的部分功能范围受到了限制。本节概述了在 Game Manager 中查看这些受限功能的样子。若要更详细地探索这些页面，你可以[下载源代码](https://github.com/PlayFab/winter-starfall)并在本地运行游戏实例，或者从零开始创建你自己的新 title。

<Note>
  有关开发者门户中各项功能的完整指南，请参阅 [Game Manager 文档](/services/playfab/live-service-management/gamemanager)。
</Note>

### Players

为保护玩家信息，Game Manager 中 **Players** 部分在 Winter Starfall title 里已被隐藏。通常情况下，你可以查询游戏中全部玩家的列表，并选择某个账号在 Game Manager 中更新其数据。在玩家概览页中，你可以查看与该玩家相关的所有信息，包括库存物品、所有登录记录、Player data 等。

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/demo-game/player-overview.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=ab0d5defe256d9be89f5a8faac3b169c" alt="玩家概览" width="1280" height="1200" data-path="images/playfab/demo-game/player-overview.png" />

### 数据与分析

**Analyze** 部分中的某些功能也受到限制，以保护 title 和玩家信息。此限制包括 **Data** 和 **Audit History** 部分。**Data** 部分包含诸如 [Data Explorer](/services/playfab/data-analytics/learn-data/data-explorer) 之类的功能，可用于查询和查看 PlayFab 事件记录，例如某个特定玩家何时登录等事件（API 调用）。

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/demo-game/demo-game-data.png?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=dd8dd0c11b6e7ed7208422e8a10d4b40" alt="数据页" width="1280" height="1400" data-path="images/playfab/demo-game/demo-game-data.png" />

[Audit history](/services/playfab/live-service-management/gamemanager/audit-logs) 会展示由具有编辑权限的任何人对该 title 所做更改的历史记录。

要完整了解 **Data** 部分包含的其他功能，请参阅[数据与分析文档](/services/playfab/data-analytics)。

### 其他

在 title 设置下，**Secret keys** 选项卡已被隐藏。请参阅[密钥管理文档](/services/playfab/live-service-management/gamemanager/secret-key-management)。

<img src="https://mintcdn.com/microsoft-4404708b/68AB2fedpk3M7e-n/images/playfab/demo-game/secret-keys.jpg?fit=max&auto=format&n=68AB2fedpk3M7e-n&q=85&s=a152e4f9929b777d3e1767ec65e06bf6" alt="显示 Secret Keys 页面的 Game Manager UI" width="1280" height="800" data-path="images/playfab/demo-game/secret-keys.jpg" />

## 后续步骤

试玩演示之后，我们建议从以下文章开始，进一步了解 PlayFab 的工作原理：

* 进一步了解 [Game Manager](/services/playfab/live-service-management/gamemanager)
* 了解 [Entity 模型](/services/playfab/live-service-management/game-configuration/entities)
* 了解 [PlayFab Services SDK](/services/playfab/sdks/sdk-overview)

## 参见

* [体验 Winter Starfall](https://winterstarfall.com/)
* [教程：下载源代码和示例流程](/services/playfab/demo-game/source-code-and-best-practices)


## Related topics

- [Vanguard Outrider（旧版）](/zh-CN/services/playfab/demo-game/legacy-vanguard-outrider.md)
- [PlayFab 基础](/zh-CN/services/playfab/get-started/index.md)
- [源代码与最佳实践 - Winter Starfall](/zh-CN/services/playfab/demo-game/source-code-and-best-practices.md)
- [提交游戏概念](/zh-CN/publishing/game-publishing/publishing-processes/managed-creators/publishing-processes-game-concepts.md)
- [PlayFab 统计信息概览](/zh-CN/services/playfab/player-progression/statistics/index.md)
