> ## 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 与 PlayFab 服务 —— XUser 登录、成就、XGameSave、社交、多人以及 XStore 商务 —— 叠加到你的 PC GDK 作品中。

在你的 PC GDK 作品能够运行之后,可以根据设计需要叠加可选的 XBOX 服务和 Microsoft Azure PlayFab 功能。发布到 Microsoft Store 并不需要以下任何一项 —— 请挑选适合你作品的部分。

## 建议的采用顺序

1. **登录与身份** —— [XUser](/build/core-features/common/user/gamecore-user-models) 与 [PlayFab 登录](/services/playfab/identity/player-identity/login)。
2. **成就与统计** —— [XSAPI Achievements](/services/xbox-services/player-data/achievements/index) 与 [玩家统计](#player-stats)。
3. **云存档** —— [XGameSave](/build/core-features/common/game-save/game-saves-overview)。
4. **社交** —— [好友与最近玩家](/services/xbox-services/community/social-manager/live-social-manager-overview) 以及 [富存在感](#rich-presence)。
5. **多人游戏** —— [大厅](#lobbies)、[匹配](#matchmaking)、[多人玩法](#multiplayer)、[邀请](#invites) 与 [聊天](#chat)。
6. **商务** —— [XStore](/publishing/xstore-commerce/xstore-overview)、[游戏内购](#in-game-purchases) 与 [DLC](/publishing/game-publishing/concepts/add-ons)。
7. **服务端集成** —— [S2S 身份验证](#s2s-authentication)、[用户生成内容](#user-generated-content) 与 [运营](/services/playfab/live-service-management)。

## 可选服务主题

下表每一行对应源 PC E2E 指南中的一个主题。详细集成指南在链接的功能文档中。

| 主题                                | 推荐 SDK                           | 位置                                                                               |
| --------------------------------- | -------------------------------- | -------------------------------------------------------------------------------- |
| [聊天](#chat)                       | PlayFab Party                    | [PlayFab Party 聊天](/services/playfab/multiplayer/networking)                     |
| [游戏内购](#in-game-purchases)        | XStore(GDK)                      | [XStore 深入](/publishing/xstore-commerce/xstore-overview)                         |
| [邀请](#invites)                    | PlayFab Lobby + XBOX 邀请          | [PlayFab Lobby](/services/playfab/multiplayer/lobby)                             |
| [排行榜](#leaderboards)              | XSAPI 作品管理的排行榜                   | [排行榜](/services/xbox-services/player-data/stats-leaderboards/index)              |
| [大厅](#lobbies)                    | PlayFab Lobby                    | [PlayFab Lobby](/services/playfab/multiplayer/lobby)                             |
| [匹配](#matchmaking)                | PlayFab Matchmaking / SmartMatch | [PlayFab Matchmaking](/services/playfab/multiplayer/lobby)                       |
| [多人玩法](#multiplayer)              | MPSD + MPM,PlayFab Multiplayer   | [多人玩法](/services/xbox-services/multiplayer/index)                                |
| [网络](#networking)                 | PlayFab Party 网络                 | [PlayFab 网络](/services/playfab/multiplayer/networking)                           |
| [玩家统计](#player-stats)             | XSAPI Stats Manager              | [统计](/services/xbox-services/player-data/stats-leaderboards/index)               |
| [富存在感](#rich-presence)            | XSAPI Presence                   | [富存在感](/services/xbox-services/community/presence/live-presence-overview)        |
| [S2S 身份验证](#s2s-authentication)   | Entra ID + User Store ID         | [服务到服务身份验证](https://learn.microsoft.com/en-us/store/commerce/service-to-service) |
| [用户生成内容](#user-generated-content) | PlayFab Economy v2               | [PlayFab UGC](/services/playfab/economy-monetization/index)                      |

## 聊天

在 PC 和 XBOX 上使用 **PlayFab Party** 提供同步语音与文字聊天。关键步骤:

1. 配置 [PlayFab Party SDK](/services/playfab/multiplayer/networking)。
2. 让玩家同时在 XBOX 服务与 PlayFab 中完成身份验证。
3. 使用 `PartyManager::CreateNewNetwork()` 创建或加入一个 Party 网络。
4. 为每个本地用户创建 `PartyLocalChatControl`,并用 `PartyNetwork::ConnectChatControl()` 连接。
5. 通过 `PartyLocalChatControl::SetAudioInput/Output` 和 `PartyAudioDeviceSelectionType` 选择音频输入/输出设备。
6. 配置聊天权限以及两两聊天控件之间的静音状态。
7. 通过 `SendText` 增加文字聊天,并可选择通过 `SetTextChatOptions` 启用翻译。
8. 通过 Azure Speech Services 增加无障碍功能 —— 语音转文字转录以及文字转语音合成。
9. 对采集到的麦克风音频启用降噪。

如果你还要在 XBOX 上发布,请使用 [Party XBOX Live Helper Library](/services/playfab/multiplayer/networking) 以满足 XBOX 服务的要求。

## 游戏内购

使用 **XStore**(通过 `XGameRuntime.h`)在 Microsoft Store 上实现游戏内购流程:

* 查询商店目录、关联产品(附加包、消耗品、耐用品)以及用户的使用权集合。
* 通过 `XStoreShowPurchaseUIAsync` 显示购买 UI。
* 通过 `XStoreReportConsumableFulfillmentAsync` 消费消耗品。
* 使用权变化后,通过 `XStoreQueryProductForCurrentSkuAsync` 刷新许可证。

对于由 PlayFab 驱动的虚拟经济系统(货币、库存、捆绑包),将 XStore 购买与 PlayFab Economy v2 搭配使用。

## 邀请

使用 **PlayFab Lobby** 在 PC/XBOX 间实现邀请与加入:

1. 集成 [PlayFab Lobby & Matchmaking SDK](/services/playfab/multiplayer/lobby)。
2. 在 XBOX 服务与 PlayFab 中完成身份验证。
3. 选择大厅的所有者:玩家拥有(`PFMultiplayerCreateAndJoinLobby`)、服务器拥有(`PFMultiplayerCreateAndClaimServerLobby`)或由匹配创建。
4. 通过 `PFMultiplayerStartListeningForLobbyInvites` 监听邀请。
5. 通过平台的邀请 UI 发送邀请,让接收方看到原生的 XBOX/Store 通知。

大厅也可作为玩家接受邀请后加入的游戏会话。

## 排行榜

使用 **XSAPI 作品管理的排行榜** 在 XBOX 服务上提供社交与全球排行榜:

1. 在 Partner Center 中 **XBOX services → Player data** 下定义排行榜。
2. 通过 Stats Manager 发出与排行榜挂钩的统计事件。
3. 通过 `XblLeaderboardGetLeaderboardAsync`(全球)或 `XblLeaderboardGetLeaderboardForSocialGroupAsync`(好友)查询排行榜。

参见 [排行榜](/services/xbox-services/player-data/stats-leaderboards/index)。

## 大厅

使用 **PlayFab Lobby** 保存共享的会话状态(成员列表、任意属性、所有权):

* 使用 PlayFab Multiplayer C SDK 创建、加入、查找与离开大厅。
* 将玩法元数据存储为大厅属性(游戏模式、地图、准备状态)。
* 与 PlayFab Matchmaking 配合,将匹配得到的一组玩家组成大厅。
* 在大厅成员之上,搭配 PlayFab Party 增加网络与语音。

## 匹配

使用 **PlayFab Matchmaking** 提供基于技能/属性的匹配,并生成共享大厅:

* 在 PlayFab Game Manager 中通过玩家属性规则定义匹配队列。
* 通过 `PFMatchmakingCreateMatchmakingTicket` 提交票据。
* 匹配成功后,玩家会被放入你所拥有的共享大厅。

对于仅 XBOX Live 的作品,也支持通过 MPSD 的 SmartMatch —— 但对新作品推荐使用 PlayFab Matchmaking。

## 多人玩法

PC/XBOX 上有两种受支持的多人游戏栈:

* **PlayFab Multiplayer** —— 跨平台,使用 PlayFab Lobby 管理会话、PlayFab Party 作为传输层。推荐给新作品。
* **XBOX 服务多人玩法** —— MPSD 会话 + Multiplayer Manager(MPM)。仍受仅 XBOX 作品支持。

两种方案都在 [多人玩法概览](/services/xbox-services/multiplayer/index) 中有介绍。

## 网络

将 **PlayFab Party** 用作实时玩法流量的网络传输层:

* 在已连接的端点之间发送可靠/不可靠消息。
* 在同一 Party 网络上叠加语音、文字与玩法数据。
* 在 XBOX 上,Party 自动接入平台的网络路径;在 PC 上使用 UDP 并支持回退。

## 玩家统计

使用 **XSAPI Stats Manager** 管理作品所维护的玩家统计:

1. 在 Partner Center 中 **XBOX services → Player data** 下定义统计项。
2. 通过 `XblStatsManagerSetStatAsNumber` / `SetStatAsString` 为玩家添加统计项。
3. 根据玩法递增或覆盖统计。
4. 每帧调用 `XblStatsManagerDoWork` 刷新待更新数据。

统计驱动排行榜,也会显示在玩家的个人档案上。

## 富存在感

使用 **XSAPI Presence** 广播玩家当前正在做什么:

1. 在 Partner Center 中定义存在感枚举与字符串集合。
2. 玩家进入新状态(菜单、关卡、对局)时,通过 `XblPresenceSetPresenceAsync` 更新存在感。
3. 使用 `XblPresenceGetPresenceAsync` 或 `XblPresenceGetPresenceForMultipleUsersAsync` 查询其他玩家。

参见 [富存在感](/services/xbox-services/community/presence/live-presence-overview)。

## S2S 身份验证

当你的后端需要代表玩家调用 Microsoft Store API 时,使用 **Microsoft Entra ID + User Store ID** 进行服务到服务身份验证:

* 两类 User Store ID:
  * `UserCollectionsID` —— 与 Microsoft Store **Collections** 服务(使用权清单)进行身份验证。
  * `UserPurchaseID` —— 与 Microsoft Store **Purchase** 服务(交易验证)进行身份验证。
* 你的服务获取一个 Entra ID 访问令牌,并结合来自游戏客户端的 User Store ID 调用 Store REST API。
* 推荐给新作品;基于 X-token 的身份验证已是遗留方案。

## 用户生成内容

在自有或第三方资源管线之上,使用 **PlayFab Economy v2** 管理 UGC 目录:

1. 让玩家通过 PlayFab 完成身份验证。
2. 通过 `CreateUploadUrls` 生成签名上传 URL。
3. 使用 `CreateDraftItem`(`Type:ugc`)创建草稿条目。
4. 通过 `GetEntityDraftItems` 枚举草稿条目。
5. 使用 `PublishDraftItem` 发布 —— 已发布条目会出现在公开目录中。
6. 通过 `GetItemPublishStatus` 查询状态。
7. 使用 `SearchItems`(OData `Filter`、`OrderBy`、`Select`)查询目录。

可选的审核/审阅由 PlayFab Game Manager 中的 Catalog Reviewer 处理。

## 相关

* [PC 端到端概览](/build/gdk-and-engines/overview)
* [XBOX 服务概览](/services/xbox-services/index)
* [PlayFab 概览](/services/playfab/get-started)

## 相关 API 文档

* [XSAPI 概览](/reference/live/xsapi-c/atoc-xsapi-c) —— 身份、存在感、社交、成就、排行榜
* [XStore API 参考](/reference/system/xstore/xstore_members) —— Microsoft Store 商务
* [PlayFab 概览](/services/playfab/get-started/index) —— PlayFab REST + SDK 接口


## Related topics

- [PFInventoryRedeemPlayStationStoreInventoryItemsRequest](/zh-CN/services/playfab/api-references/c/pfinventorytypes/structs/pfinventoryredeemplaystationstoreinventoryitemsrequest.md)
- [在 Unity、Unreal 及其他引擎中使用 GDK](/zh-CN/build/gdk-and-engines/gdk-and-engines.md)
- [创建游戏并配置游戏设置](/zh-CN/publishing/game-publishing/tutorial-xbox-managed/how-to-create-a-title-and-configure-game-setup.md)
- [提交游戏包以进行可选认证](/zh-CN/publishing/game-publishing/publishing-processes/managed-creators/publishing-processes-optional-certification.md)
- [认证可选提交](/zh-CN/publishing/game-publishing/concepts/certification/certification-optional-submissions.md)
