> ## 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 Release Notes 2020

> PlayFab Services SDK release notes for 2020, capturing SDK updates, new API endpoints, feature additions, and bug fixes shipped throughout the year.

<Note>
  For release notes about service releases and product updates, see the [release notes](https://github.com/PlayFab/PlayFab/releases) section on [PlayFab's public GitHub repository](https://github.com/PlayFab/PlayFab)
</Note>

## 201218

Date: 2020-12-18

* Minor bug fixes

## 201207

Date: 2020-12-07

Supports the [December 2 PlayFab service release](https://github.com/PlayFab/PlayFab/releases/tag/2.5.7)

### [UnrealMarketplacePlugin](https://www.unrealengine.com/marketplace/product/playfab-sdk) specific changes

* Fixed static settings issues. Follow the [new upgrade guide](https://github.com/PlayFab/UnrealMarketplacePlugin/blob/master/UpgradeGuide_201207.md).

## 201119

Date: 2020-11-19

### [PostmanCollection](https://github.com/PlayFab/PostmanCollection) specific changes

* Added an auto-login for Title Entity, when appropriate

### [UnitySDK](https://github.com/PlayFab/UnitySDK) specific changes

* Fixed a spammy log for Unity 2020
* Unity 2020 fully supported now

### [XPlat C++ SDK](https://github.com/PlayFab/XPlatCppSdk) specific changes

* Fixed QoS search response when all servers time-out.

## 201027

Date: 2020-10-27

Supports the [September 2 PlayFab service release](https://github.com/PlayFab/PlayFab/releases/tag/2.5.6)

Minor updates were made to APIs.

## 201014

Date: 2020-10-14

Supports the [September 2 PlayFab service release](https://github.com/PlayFab/PlayFab/releases/tag/2.5.6)

(Also supports new methods in the [Experimentation](https://learn.microsoft.com/en-us/rest/api/services/playfab/experimentation/experimentation) API, which will appear in a near-future Service release)

PlayFab is committed to enable you to use our services for developing cross-platform and cross-device games using various game engines and frameworks. To help us better focus on creating new features that you need, we're opening the following SDKs for community contributions. If you have more questions or need support, go to [PlayFab community forum](https://community.playfab.com/index.html). This will be our last official update to the following SDKs:

* [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

Date: 2020-09-14

Supports the [September 2 PlayFab service release](https://github.com/PlayFab/PlayFab/releases/tag/2.5.6)

## 200901

Date: 2020-09-01

Supports the [August 26 PlayFab service release](https://github.com/PlayFab/PlayFab/releases/tag/2.5.5)

## 200817

Date: 2020-08-17

Supports the [August 12 PlayFab service release](https://github.com/PlayFab/PlayFab/releases/tag/2.5.3)

## 200805

Date: 2020-08-05

Supports the [August 5 PlayFab service release](https://github.com/PlayFab/PlayFab/releases/tag/2.5.2)

## 200730

Date: 2020-07-30

Supports the [July 15 PlayFab service release](https://github.com/PlayFab/PlayFab/releases/tag/2.5.1)

## 200713

Date: 2020-07-13

Supports the [July 1 PlayFab service release](https://github.com/PlayFab/PlayFab/releases/tag/2.4.3)

## 200615

Date: 2020-06-15

Supports the [June 10 PlayFab service release](https://github.com/PlayFab/PlayFab/releases/tag/2.3.3)

## 200602

Date: 2020-06-02

Supports the [May 27 PlayFab service release](https://github.com/PlayFab/PlayFab/releases/tag/2.3.1)

## 200518

Date: 2020-05-18

Supports the [May 13 PlayFab service release](https://github.com/PlayFab/PlayFab/releases/tag/2.2.4)

### [UnitySDK](https://github.com/PlayFab/UnitySDK) specific changes:

* PlayFab SDK no longer sets Application.runInBackground = true
  * Game Developers are responsible for verifying API calls during app focus change or before shutdown, are successful

### [XPlat C++ SDK](https://github.com/PlayFab/XPlatCppSdk) specific changes

* In the CURL HTTP implementation, more CURL error states are monitored and processed
* The Event Pipeline feature now uses and supports the background thread feature
* When TitleId isn't set, API methods now throw real-time exceptions synchronously, rather than reporting the issue in synchronous or threaded callbacks

## 200422

Date: 2020-04-22

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

* Hotfix
  * Fixed an issue where recent NPM packages were missing a critical file, and couldn't be imported
  * Fixed an issue where some type definitions were incorrectly set to "Number" rather than proper types

## 200421

Date: 2020-04-21

SDK's support the PlayFab Service as of 2020-04-21. [Service release notes available here](https://github.com/PlayFab/PlayFab/releases/tag/2.1.4)

## 200402

Date: 2020-04-02

### API Changes

* [Insights](/services/playfab/data-analytics/legacy/insights/overview):
  * See our new [Insights](/services/playfab/data-analytics/legacy/insights/overview) feature!

## 200330

Date: 2020-03-30

### API Changes

* [Authentication](/services/playfab/identity/player-identity/authentication):
  * Added new [LoginIdentityProviders](/services/playfab/api-references/events/data-types/loginidentityprovider) for Apple and Nintendo
* [Multiplayer Server](/services/playfab/multiplayer):
  * Added new BuildRegion management functions [DeleteBuildRegion](https://learn.microsoft.com/en-us/rest/api/services/playfab/multiplayer/multiplayer-server/delete-build-region) and [UpdateBuildRegion](https://learn.microsoft.com/en-us/rest/api/services/playfab/multiplayer/multiplayer-server/update-build-region)
* [UnrealMarketplacePlugin](https://github.com/PlayFab/UnrealMarketplacePlugin):
  * Added new [Mac build helper scripts](https://github.com/PlayFab/UnrealMarketplacePlugin/blob/master/4.24/ExampleProject/BuildMac.sh)

### [XPlat C++ SDK](https://github.com/PlayFab/XPlatCppSdk) specific changes

* Fixed some threading issues for the PlayFabEventPipeline

### [UnrealMarketPlacePlugin](https://github.com/PlayFab/UnrealMarketplacePlugin) specific changes

* Security bug fixes

## 200303

Date: 2020-03-03

### API Changes

* server.UnlinkXboxAccountRequest no longer requires the XboxToken to be unlinked
* The Experiments feature and API have been released
  * See our [Blog Post](https://api.playfab.com/blog/announcing-playfabs-experimentation-all-new-for-trustworthy-experiments) for more details
* New Methods
  * client.LoginWithApple
  * client.LinkApple
  * client.UnlinkApple

## 200220

Date: 2020-02-20

### New

* Automation - We released a new [Visual Studio Code extension for PlayFab](https://marketplace.visualstudio.com/items?itemName=PlayFab.playfab-explorer). You can find the source code in [GitHub](https://github.com/PlayFab/vscode-playfab-explorer).

### [CPP Gsdk](https://github.com/PlayFab/gsdk)- Breaking change

* Due to thread safety concerns, the signatures of the following methods were modified:
  | Method name                                                                              | Old return type                                        | New return type                                       |
  | ---------------------------------------------------------------------------------------- | ------------------------------------------------------ | ----------------------------------------------------- |
  | `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`                                   |
  | See our [Upgrade guide](https://github.com/PlayFab/gsdk/blob/main/upgradeguide200219.md) |                                                        |                                                       |

## 200218

Date: 2020-02-18

### API & Documentation Changes:

* New api methods:
  * admin.CreateInsightsScheduledScalingTask
  * multiplayer.GetMultiplayerSessionLogsBySessionId
* New feature and methods:
  * A new mechanism for Cloud Script: Azure functions, can now be used in PlayFab
  * [Feature Documentation](/services/playfab/live-service-management/service-gateway/automation/cloudscript-af)
  * List of New Methods:
    * cloudscript.ExecuteFunction
    * cloudscript.ListFunctions
    * cloudscript.ListHttpFunctions
    * cloudscript.ListQueuedFunctions
    * cloudscript.PostFunctionResultForEntityTriggeredAction
    * cloudscript.PostFunctionResultForFunctionExecution
    * cloudscript.PostFunctionResultForScheduledTask
    * cloudscript.RegisterHttpFunction
    * cloudscript.RegisterQueuedFunction
    * cloudscript.UnregisterFunction
* Api method changes:
  * Region request parameter is no longer required for multiplayer.GetMultiplayerServerLogs

### [CSharpSdk](https://github.com/PlayFab/CSharpSDK) specific changes:

* Overhaul and improve the QoS ping calculation for PlayFab Multiplayer

## 200213

Date: 2020-02-13

PlayFab's Multiplayer Servers introduces an auto scaling enhancement named Dynamic Standby that monitors standby server threshold levels and dynamically activates increased provisioning of game servers so that demand can be met at scale.  This feature adds a new object to the Multiplayer programming interface called "DynamicStandby" object. The Dynamic Standby object is an optional property of the [BuildRegionParams](https://learn.microsoft.com/en-us/rest/api/services/playfab/multiplayer/multiplayer-server/update-build-regions#buildregionparams) object.

Dynamic Standby is an advanced game server feature and editing the settings from its default values should be done with caution. Configuring Dynamic Standby can be accomplished in the Game Manager Developers' portal or programmatically editing properties of the Dynamic Standby object. To learn more about Dynamic Standby, visit its user guide in the [PlayFab Multiplayer Servers](/services/playfab/multiplayer/servers/dynamic-standby) online documentation.

## 200128

Date: 2020-01-28

### Multiplayer Server Event Changes:

We're introducing a change to the Multiplayer Server event naming convention in efforts to unify our event names with the rest of PlayFab event names.  Additionally, we're making these changes in advance of the Multiplayer Server feature becoming Public Preview.  The changes are:

* Multiplayer Server event names will be updated to use PascalCasing
* Multiplayer Server events will no longer be sent in the legacy v1 PlayStream event format; only v2 PlayStream event format will be supported

These two changes represent breaking changes, particularly for developers who take a dependency on non-right casing of names or PlayStream v1 of Multiplayer Server events.  These changes aren't breaking for developers who use event names in the Game Manager UI (cloud script, insights, rules, or scheduled tasks).  This change will take effect Wednesday February 26, 2020 at 10:00 AM PST.  Adjust your code for these changes before the change date.

**Format Changes**

Generally, PlayFab Events have the format similar to:

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

The fundamental format change is that properties in the events Payload object will be updated to use PascalCasing for consistency with other PlayStream events.  Therefore, the new property names will meet the following format:

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

Observe that the property names of Multiplayer server events are now updated to use PascalCasing.

This change will impact customers who process Multiplayer server events in (a) Kusto queries or (b) PlayFab cloud scripts.  Lastly, if a customer uses the PlayFab Event Archive feature (currently in public preview), the properties of Multiplayer server events exported will also be formatted in PascalCasing.

**Schema Changes**

The second change introduced is that Multiplayer server events will only be delivered in PlayStream v2 format and no longer the legacy PlayStream v1 format.

PlayFab currently supports two event schemas.

| Schema Format | Description                   | Multiplayer Events Namespace Value |
| ------------- | ----------------------------- | ---------------------------------- |
| PlayStream V1 | Designed around player events | com.playfab.events.multiplayer     |
| PlayStream V2 | Designed around entity events | playfab.servers                    |

Generally, PlayFab APIs generate events in either PlayStream V1 format or PlayStream V2 format.  For example, APIs that grant player items generated a PlayStream V1 event.  Whereas APIs that grant entity items generated a PlayStream V2 event.

Because the Multiplayer Servers launched in public preview at or near the same time PlayStream V2 was introduced, the Multiplayer Server feature supported both PlayStream V1 and V2 formats.  Meaning, every Multiplayer Server API call generated two events; one in V1 and V2 format.

To remove duplication, Multiplayer server events in the 'com.playfab.events.multiplayer.servers' namespace are being deprecated.  Events in the 'playfab.servers' namespace will continue to be supported.

To distinguish between Multiplayer Server events of V1 and V2 format, examine the namespace property of the event.  The namespace is specified in the third column of the table above. The JSON representation resembles the following format:

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

The property to search for is named `Namespace`.

## 200121

Date: 2020-01-21

### API & Documentation Changes:

* PlayFab API Documentation site has been fully migrated to [/gaming/playfab](https://learn.microsoft.com/en-us/gaming/services/playfab/)
  * Most `api.playfab.com` links have been converted to their equivalent `learn.microsoft.com` links
  * Most original links redirect to the new site properly
  * Let us know in the [forums](https://community.playfab.com/index.html) if any old links don't work
* New api methods:
  * multiplayer.ListServerBackfillTicketsForPlayer
  * multiplayer.GetServerBackfillTicket
  * multiplayer.CreateServerBackfillTicket
  * multiplayer.CancelServerBackfillTicket
  * multiplayer.CancelAllServerBackfillTicketsForPlayer
  * server.UnlinkPSNAccount
  * server.LinkPSNAccount

### [LuaSdk](https://github.com/PlayFab/LuaSdk) specific changes:

* Minor login bugfix

### [PhpSdk](https://github.com/PlayFab/PhpSdk) specific changes:

* Minor syntax fix for strict correctness

### [UnitySDK](https://github.com/PlayFab/UnitySDK) specific changes:

* Update the GitHub repro and project structure.
  * Moving the Unity EdEx package from (UnityEditorExtensions)\[[https://github.com/PlayFab/UnityEditorExtensions](https://github.com/PlayFab/UnityEditorExtensions)] to (UnitySdk)\[[https://github.com/PlayFab/UnitySDK/blob/master/Packages/PlayFabEditorExtensions.unitypackage](https://github.com/PlayFab/UnitySDK/blob/master/Packages/PlayFabEditorExtensions.unitypackage)]
  * In the future, we'll also be phasing out the separate UnityEditorExtensions repo


## Related topics

- [PlayFab Party Release Notes](/services/playfab/multiplayer/networking/release-notes.md)
- [PlayFab Party XBOX Live Helper Release Notes](/services/playfab/multiplayer/networking/party-xboxlive-relnotes.md)
- [PlayFab Release Notes 2015](/services/playfab/release-notes/2015.md)
- [PlayFab Release Notes 2018](/services/playfab/release-notes/2018.md)
- [PlayFab Release Notes 2021](/services/playfab/release-notes/2021.md)
