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

# PlayFab 2020 版本发布说明

> PlayFab Services SDK 2020 年发布说明,记录了当年发布的 SDK 更新、新 API 端点、功能新增和 bug 修复。

<Note>
  有关服务发布和产品更新的发布说明,请参阅 [PlayFab 的公共 GitHub 仓库](https://github.com/PlayFab/PlayFab) 上的 [发布说明](https://github.com/PlayFab/PlayFab/releases) 部分
</Note>

## 201218

日期:2020-12-18

* 小 bug 修复

## 201207

日期:2020-12-07

支持 [12 月 2 日 PlayFab 服务发布](https://github.com/PlayFab/PlayFab/releases/tag/2.5.7)

### [UnrealMarketplacePlugin](https://www.unrealengine.com/marketplace/product/playfab-sdk) 相关更改

* 修复了静态设置问题。请遵循[新的升级指南](https://github.com/PlayFab/UnrealMarketplacePlugin/blob/master/UpgradeGuide_201207.md)。

## 201119

日期:2020-11-19

### [PostmanCollection](https://github.com/PlayFab/PostmanCollection) 相关更改

* 在适当情况下为 Title Entity 添加了自动登录

### [UnitySDK](https://github.com/PlayFab/UnitySDK) 相关更改

* 修复了 Unity 2020 中的冗余日志问题
* 现在完全支持 Unity 2020

### [XPlat C++ SDK](https://github.com/PlayFab/XPlatCppSdk) 相关更改

* 修复了所有服务器超时时的 QoS 搜索响应问题。

## 201027

日期:2020-10-27

支持 [9 月 2 日 PlayFab 服务发布](https://github.com/PlayFab/PlayFab/releases/tag/2.5.6)

对 API 进行了小幅更新。

## 201014

日期:2020-10-14

支持 [9 月 2 日 PlayFab 服务发布](https://github.com/PlayFab/PlayFab/releases/tag/2.5.6)

(也支持 [Experimentation](https://learn.microsoft.com/en-us/rest/api/services/playfab/experimentation/experimentation) API 中的新方法,这些方法将在不久后的服务版本中出现)

PlayFab 致力于让你能够使用我们的服务通过各种游戏引擎和框架来开发跨平台和跨设备游戏。为了帮助我们更好地专注于创建你所需的新功能,我们将以下 SDK 开放给社区贡献。如果你有更多问题或需要支持,请前往 [PlayFab 社区论坛](https://community.playfab.com/index.html)。这将是我们对以下 SDK 的最后一次官方更新:

* [https://github.com/PlayFab/Cocos2d-xSDK](https://github.com/PlayFab/Cocos2d-xSDK)
* [https://github.com/PlayFab/Objective\_C\_SDK](https://github.com/PlayFab/Objective_C_SDK)
* [https://github.com/PlayFab/PhpSdk](https://github.com/PlayFab/PhpSdk)
* [https://github.com/PlayFab/PythonSdk](https://github.com/PlayFab/PythonSdk)

## 200914

日期:2020-09-14

支持 [9 月 2 日 PlayFab 服务发布](https://github.com/PlayFab/PlayFab/releases/tag/2.5.6)

## 200901

日期:2020-09-01

支持 [8 月 26 日 PlayFab 服务发布](https://github.com/PlayFab/PlayFab/releases/tag/2.5.5)

## 200817

日期:2020-08-17

支持 [8 月 12 日 PlayFab 服务发布](https://github.com/PlayFab/PlayFab/releases/tag/2.5.3)

## 200805

日期:2020-08-05

支持 [8 月 5 日 PlayFab 服务发布](https://github.com/PlayFab/PlayFab/releases/tag/2.5.2)

## 200730

日期:2020-07-30

支持 [7 月 15 日 PlayFab 服务发布](https://github.com/PlayFab/PlayFab/releases/tag/2.5.1)

## 200713

日期:2020-07-13

支持 [7 月 1 日 PlayFab 服务发布](https://github.com/PlayFab/PlayFab/releases/tag/2.4.3)

## 200615

日期:2020-06-15

支持 [6 月 10 日 PlayFab 服务发布](https://github.com/PlayFab/PlayFab/releases/tag/2.3.3)

## 200602

日期:2020-06-02

支持 [5 月 27 日 PlayFab 服务发布](https://github.com/PlayFab/PlayFab/releases/tag/2.3.1)

## 200518

日期:2020-05-18

支持 [5 月 13 日 PlayFab 服务发布](https://github.com/PlayFab/PlayFab/releases/tag/2.2.4)

### [UnitySDK](https://github.com/PlayFab/UnitySDK) 相关更改:

* PlayFab SDK 不再设置 Application.runInBackground = true
  * 游戏开发者负责验证应用焦点变更期间或关闭之前的 API 调用是否成功

### [XPlat C++ SDK](https://github.com/PlayFab/XPlatCppSdk) 相关更改

* 在 CURL HTTP 实现中,监控和处理了更多 CURL 错误状态
* 事件管道功能现在使用并支持后台线程功能
* 未设置 TitleId 时,API 方法现在同步抛出实时异常,而不是在同步或线程回调中报告问题

## 200422

日期:2020-04-22

### [NodeSDK](https://github.com/PlayFab/NodeSDK) 更新:

* 热修复
  * 修复了最近的 NPM 包缺少关键文件且无法导入的问题
  * 修复了某些类型定义被错误设置为 "Number" 而非正确类型的问题

## 200421

日期:2020-04-21

SDK 支持截至 2020-04-21 的 PlayFab 服务。[服务发布说明请见此处](https://github.com/PlayFab/PlayFab/releases/tag/2.1.4)

## 200402

日期:2020-04-02

### API 更改

* [Insights](/services/playfab/data-analytics/legacy/insights/overview):
  * 查看我们全新的 [Insights](/services/playfab/data-analytics/legacy/insights/overview) 功能!

## 200330

日期:2020-03-30

### API 更改

* [Authentication](/services/playfab/identity/player-identity/authentication):
  * 为 Apple 和 Nintendo 添加了新的 [LoginIdentityProviders](/services/playfab/api-references/events/data-types/loginidentityprovider)
* [Multiplayer Server](/services/playfab/multiplayer):
  * 添加了新的 BuildRegion 管理函数 [DeleteBuildRegion](https://learn.microsoft.com/en-us/rest/api/services/playfab/multiplayer/multiplayer-server/delete-build-region) 和 [UpdateBuildRegion](https://learn.microsoft.com/en-us/rest/api/services/playfab/multiplayer/multiplayer-server/update-build-region)
* [UnrealMarketplacePlugin](https://github.com/PlayFab/UnrealMarketplacePlugin):
  * 添加了新的 [Mac 构建辅助脚本](https://github.com/PlayFab/UnrealMarketplacePlugin/blob/master/4.24/ExampleProject/BuildMac.sh)

### [XPlat C++ SDK](https://github.com/PlayFab/XPlatCppSdk) 相关更改

* 修复了 PlayFabEventPipeline 的一些线程问题

### [UnrealMarketPlacePlugin](https://github.com/PlayFab/UnrealMarketplacePlugin) 相关更改

* 安全 bug 修复

## 200303

日期:2020-03-03

### API 更改

* server.UnlinkXboxAccountRequest 不再要求 XboxToken 才能取消链接
* Experiments 功能和 API 已发布
  * 有关更多详细信息,请参阅我们的[博客文章](https://api.playfab.com/blog/announcing-playfabs-experimentation-all-new-for-trustworthy-experiments)
* 新方法
  * client.LoginWithApple
  * client.LinkApple
  * client.UnlinkApple

## 200220

日期:2020-02-20

### 新增

* 自动化 - 我们发布了新的 [PlayFab 的 Visual Studio Code 扩展](https://marketplace.visualstudio.com/items?itemName=PlayFab.playfab-explorer)。你可以在 [GitHub](https://github.com/PlayFab/vscode-playfab-explorer) 中找到源代码。

### [CPP Gsdk](https://github.com/PlayFab/gsdk) - 破坏性更改

* 由于线程安全问题,以下方法的签名已修改:
  | 方法名                                                                          | 旧返回类型                                                  | 新返回类型                                                 |
  | ---------------------------------------------------------------------------- | ------------------------------------------------------ | ----------------------------------------------------- |
  | `GSDK::getConfigSettings()`                                                  | `const std::unordered_map <std::string, std::string>&` | `const std::unordered_map <std::string, std::string>` |
  | `GSDK::getLogsDirectory()`                                                   | `const std::string&`                                   | `const std::string`                                   |
  | `GSDK::getSharedContentDirectory()`                                          | `const std::string& `                                  | `const std::string`                                   |
  | 参见我们的[升级指南](https://github.com/PlayFab/gsdk/blob/main/upgradeguide200219.md) |                                                        |                                                       |

## 200218

日期:2020-02-18

### API 和文档更改:

* 新 API 方法:
  * admin.CreateInsightsScheduledScalingTask
  * multiplayer.GetMultiplayerSessionLogsBySessionId
* 新功能和方法:
  * 现在可以在 PlayFab 中使用 Cloud Script 的新机制:Azure functions
  * [功能文档](/services/playfab/live-service-management/service-gateway/automation/cloudscript-af)
  * 新方法列表:
    * cloudscript.ExecuteFunction
    * cloudscript.ListFunctions
    * cloudscript.ListHttpFunctions
    * cloudscript.ListQueuedFunctions
    * cloudscript.PostFunctionResultForEntityTriggeredAction
    * cloudscript.PostFunctionResultForFunctionExecution
    * cloudscript.PostFunctionResultForScheduledTask
    * cloudscript.RegisterHttpFunction
    * cloudscript.RegisterQueuedFunction
    * cloudscript.UnregisterFunction
* API 方法更改:
  * multiplayer.GetMultiplayerServerLogs 不再需要 Region 请求参数

### [CSharpSdk](https://github.com/PlayFab/CSharpSDK) 相关更改:

* 全面改造并改进了 PlayFab Multiplayer 的 QoS ping 计算

## 200213

日期:2020-02-13

PlayFab 的 Multiplayer Servers 引入了名为 Dynamic Standby 的自动扩缩增强功能,它监控备用服务器阈值级别并动态激活游戏服务器的增加配置,以便按需扩展。此功能向多人游戏编程接口添加了一个名为 "DynamicStandby" 的新对象。Dynamic Standby 对象是 [BuildRegionParams](https://learn.microsoft.com/en-us/rest/api/services/playfab/multiplayer/multiplayer-server/update-build-regions#buildregionparams) 对象的可选属性。

Dynamic Standby 是一项高级游戏服务器功能,应谨慎编辑其默认值。配置 Dynamic Standby 可以在 Game Manager 开发者门户中完成,也可以通过以编程方式编辑 Dynamic Standby 对象的属性来完成。要了解更多关于 Dynamic Standby 的信息,请访问 [PlayFab Multiplayer Servers](/services/playfab/multiplayer/servers/dynamic-standby) 在线文档中的用户指南。

## 200128

日期:2020-01-28

### Multiplayer Server 事件更改:

我们正在对 Multiplayer Server 事件命名约定进行更改,以使我们的事件名称与 PlayFab 其他事件名称保持一致。此外,我们在 Multiplayer Server 功能变为公共预览版之前进行这些更改。这些更改是:

* Multiplayer Server 事件名称将更新为使用 PascalCasing
* Multiplayer Server 事件将不再以旧版 v1 PlayStream 事件格式发送;仅支持 v2 PlayStream 事件格式

这两处更改属于破坏性更改,尤其是对于依赖非正确大小写命名或 Multiplayer Server 事件 PlayStream v1 版本的开发者而言。这些更改对于在 Game Manager UI 中(cloud script、insights、rules 或计划任务)使用事件名称的开发者不属于破坏性更改。此更改将于 2020 年 2 月 26 日星期三太平洋标准时间上午 10:00 生效。请在此更改日期之前根据这些更改调整你的代码。

**格式更改**

通常,PlayFab 事件的格式类似于:

```text theme={null}
{
   'Event Name':'my_event'
   'Payload':
   {
      'prop1':1
      'prop2':2
      'camelcase':3
      }
}
```

根本的格式更改是,事件 Payload 对象中的属性将更新为使用 PascalCasing,以与其他 PlayStream 事件保持一致。因此,新的属性名称将符合以下格式:

```text theme={null}
{
   'Event Name':'my_event'
   'Payload':
   {
      'Prop1':1
      'Prop2':2
      'CamelCase':3
      }
}
```

请注意,Multiplayer Server 事件的属性名称现在已更新为使用 PascalCasing。

此更改将影响在 (a) Kusto 查询或 (b) PlayFab cloud script 中处理 Multiplayer Server 事件的客户。最后,如果客户使用 PlayFab Event Archive 功能(目前处于公共预览版),导出的 Multiplayer Server 事件的属性也将以 PascalCasing 格式化。

**架构更改**

引入的第二处更改是 Multiplayer Server 事件将仅以 PlayStream v2 格式交付,不再以旧版 PlayStream v1 格式交付。

PlayFab 目前支持两种事件架构。

| 架构格式          | 说明       | Multiplayer 事件命名空间值            |
| ------------- | -------- | ------------------------------ |
| PlayStream V1 | 围绕玩家事件设计 | com.playfab.events.multiplayer |
| PlayStream V2 | 围绕实体事件设计 | playfab.servers                |

通常,PlayFab API 以 PlayStream V1 格式或 PlayStream V2 格式生成事件。例如,授予玩家物品的 API 会生成 PlayStream V1 事件。而授予实体物品的 API 会生成 PlayStream V2 事件。

由于 Multiplayer Servers 在公共预览版中的推出时间与 PlayStream V2 推出时间相同或接近,Multiplayer Server 功能同时支持 PlayStream V1 和 V2 格式。这意味着,每次 Multiplayer Server API 调用都会生成两个事件;一个是 V1 格式,一个是 V2 格式。

为消除重复,'com.playfab.events.multiplayer.servers' 命名空间中的 Multiplayer Server 事件正在弃用。'playfab.servers' 命名空间中的事件将继续受支持。

要区分 V1 和 V2 格式的 Multiplayer Server 事件,请检查事件的 namespace 属性。命名空间在上表的第三列中指定。JSON 表示形式类似于以下格式:

```text theme={null}
{
   'FullName':
   {
      'Namespace':'abc',
      'Name':'xyz'
   }
}
```

要搜索的属性名为 `Namespace`。

## 200121

日期:2020-01-21

### API 和文档更改:

* PlayFab API 文档站点已完全迁移到 [/gaming/playfab](https://learn.microsoft.com/en-us/gaming/services/playfab/)
  * 大部分 `api.playfab.com` 链接已转换为其对应的 `learn.microsoft.com` 链接
  * 大部分原始链接会正确重定向到新站点
  * 如果有任何旧链接无法工作,请在[论坛](https://community.playfab.com/index.html)中告知我们
* 新 API 方法:
  * multiplayer.ListServerBackfillTicketsForPlayer
  * multiplayer.GetServerBackfillTicket
  * multiplayer.CreateServerBackfillTicket
  * multiplayer.CancelServerBackfillTicket
  * multiplayer.CancelAllServerBackfillTicketsForPlayer
  * server.UnlinkPSNAccount
  * server.LinkPSNAccount

### [LuaSdk](https://github.com/PlayFab/LuaSdk) 相关更改:

* 小 bug 修复

### [PhpSdk](https://github.com/PlayFab/PhpSdk) 相关更改:

* 为严格正确性做的小语法修复

### [UnitySDK](https://github.com/PlayFab/UnitySDK) 相关更改:

* 更新 GitHub 仓库和项目结构。
  * 将 Unity EdEx 包从 (UnityEditorExtensions)\[[https://github.com/PlayFab/UnityEditorExtensions](https://github.com/PlayFab/UnityEditorExtensions)] 迁移到 (UnitySdk)\[[https://github.com/PlayFab/UnitySDK/blob/master/Packages/PlayFabEditorExtensions.unitypackage](https://github.com/PlayFab/UnitySDK/blob/master/Packages/PlayFabEditorExtensions.unitypackage)]
  * 将来,我们还会逐步淘汰独立的 UnityEditorExtensions 仓库


## Related topics

- [PlayFab 2021 版本发布说明](/zh-CN/services/playfab/release-notes/2021.md)
- [PlayFab 2015 版本发布说明](/zh-CN/services/playfab/release-notes/2015.md)
- [PlayFab 2022 版本发布说明](/zh-CN/services/playfab/release-notes/2022.md)
- [PlayFab 2019 版本发布说明](/zh-CN/services/playfab/release-notes/2019.md)
- [PlayFab 2018 版本发布说明](/zh-CN/services/playfab/release-notes/2018.md)
