PlayFab Party release notes

PlayFab Party had a significant (up to 90%) price drop on 10/13/2020. You can view the updated Party rates on the Pricing page. For more information about the price drop, see our blog post.

1.7.8

April 21, 2022

Bug fixes

  • Fixed an issue where memory wasn't fully cleaned up when PartyManager::Cleanup() was called.
  • Fixed an issue where calling PartyLocalChatControl::SetAudioInput() or PartyLocalChatControl::SetAudioOutput() with the same audio device selection would unnecessarily result in the library reinitializing the audio device.

1.7.7

Mar 16, 2022

Bug fixes

  • Playstation4, Playstation5: Fixed a crash that occurred when there was no audio device after the audio devices were removed.
  • Switch: Fixed an issue that caused web requests to fail when multiple PlayFab transactions were triggered.

1.7.6

Feb 8, 2022

Performance improvements

  • Windows, XDK, Nintendo Switch, Playstation4, Playstation5: Removed two worker threads and perform relevant work on a preexisting, lower frequency work thread. The Microsoft Game Development Kit (GDK) version of the library already had this coalesced work behavior.

Bug fixes

  • iOS, Android, Switch, Playstation4, Playstation5, and Stadia: Fixed a small amount of memory allocated during initialization not being properly freed during cleanup.
  • Avoid reporting PartyChatTextReceivedOptions::FilteredDueToError flag in PartyChatTextReceivedStateChange when text moderation is not enabled.

1.7.5

Sep 30, 2021

Bug fixes

  • Fixed an issue where some 16kHz microphones were not working.
  • Fixed an issue where microphone permission changes were not handled on Windows.
  • Fixed a memory leak in some PartyManager::CreateNewNetwork() failure conditions.
  • Fixed an occasional crash in PartyLocalEndpoint::GetEndpointStatistics().

1.7.0

Jun 29, 2021

New profiling hooks and chat control indicators

  • Developers interested in where time is spent in internal library functions can now install optional method entrance and exit callbacks to hook into their preferred high-performance instrumentation method. For more information, see PartyManager::SetProfilingCallbacksForMethodEntryExit. In this release the callbacks are only supported for Windows, Xbox One XDK, and Microsoft Game Core platforms.
  • New NoRemoteInput and RemoteAudioInputMuted chat control indicators provide more granularity on currently silent audio state. For more information, see PartyChatControlChatIndicator.

Endpoint message behavior improvements

  • The 'PartySendMessageQueuingConfiguration' timeoutInMilliseconds field is now also evaluated by the transparent cloud relay if forced to queue messages before forwarding because of differing network conditions or responsiveness of the remote targets.
  • When fully authenticated into a network, sending to a 0-entry array will correctly target the exact set of all remote endpoints the library currently reports in the network at that time. Endpoints being created while the message is in the process of transmitting are no longer potentially included.

1.6.1

Bug fixes

  • Fixed a bug where a crash may occur when a chat control is connected to a network while that same chat control is disconnecting from another network.

1.6.0

Apr 12, 2021

New thread control and text moderation features

Explicit enum numbering in the header

  • Enum values in the header now have explicit numbering.

1.5.13

Mar 26, 2021

Bug fixes

  • Fixed a bug where audio is cutting out on iOS devices using Bluetooth headsets.
  • Fixed a bug where an incorrect error code is generated when the app doesn't have permission to activate a microphone on Windows platforms.
  • Fixed a bug where an unhealthy device is never refreshed unless something else forces a refresh.
  • Fixed a bug where a crash may occur when dereferencing a send channel's user data after the source endpoint associated with that channel has become invalid.
  • Fixed a bug where clients experience silent failures if a remote chat control doesn't have a language code.

1.5.10

Bug fixes

  • Fixed a bug where the library may fail to initialize on some Windows devices due to a mismatch between the processor affinity of the process and the library's default thread affinity.
  • Fixed a bug where the library may not provide errors when an operation fails due to an internal web request failure.
  • Fixed a bug where a crash may occur when direct peer connectivity is enabled and the library attempts to establish direct peer connectivity to another device.
  • Fixed a bug that may result in crackly or distorted audio.

1.5.1

Sep 05, 2020

Bug fix

  • Fixed a bug where the library may fail to activate the microphone on iOS.

1.5.0

New direct peer-to-peer connectivity, latency, and speech-to-text features

Android and iOS audio bug fixes

  • Android: Bluetooth manager will be initialized the first time PartyLocalDevice::CreateChatControl() is called, rather than when PartyManager::Initialize() is called.
  • iOS: Fixed a minor sound artifact when PartyManager::Initialize() is called.

1.4.13

Windows 8.1 dependency issue

This release removes an unnecessary dependency on api-ms-win-core-version-l1-1-1.dll which prevented previous versions from working on Windows 8.1

1.4.8

Apr 30, 2020

TLS1.2

  • The transcription stack has been updated to use TLS1.2 on Windows 7, Android, and iOS. Please upgrade if you make use of any of these platforms as TLS1.1 support will be deprecated by Azure Speech Services beginning in September 2020. All other platforms already support TLS1.2 and no upgrade is necessary.

Bug fixes

  • Fixed a bug where the languageCode field in the PartyCreateChatControlCompletedStateChange struct was not being populated.
  • Fixed a bug which was artificially inflating the latency measurements reported by PartyManager::GetRegions().
  • Fixed a bug which allowed PartyManager::SetMemoryCallbacks() to be called at unsafe times.
  • Fixed a bug where calling PartyManager::DestroyLocalUser() with a PartyLocalUser in a PartyNetwork would generate a PartyLocalUserRemovedStateChange with an incorrect value in the removedReason field, PartyLocalUserRemovedReason::RemoveLocalUser, instead of the correct value, PartyLocalUserRemovedReason::DestroyLocalUser.

Misc changes

  • The bandwidth used by chat data has been reduced.
  • More descriptive error codes and error messages are now provided when sandbox issues are encountered on Xbox.
  • PartyManager::Initialize() will now fail if an empty PlayFab Title ID is provided.
  • Passing invalid PlayFab Entity Tokens to PartyManager::CreateLocalUser() will now result in more descriptive error messages in the state change results for operations which rely on a valid token.
  • Typos in the header documentation have been fixed.
  • A more descriptive error code and error message is now provided when an invalid region is passed to PartyManager::CreateNewNetwork().
  • The documentation for the lifetimes of PartyString values has been clarified for the structures and interfaces in Party.h.
  • The documentation for PartyManager::Cleanup() was clarified to explain it is not a thread-safe call.
  • A more descriptive error code and error message are provided when PartyManager::ConnectToNetwork() asynchronously fails with internet connectivity errors.

1.3.0

Chat API Changes

1.2.2

iOS Changes

  • Adds support for the volume control API.

1.2.0

Android Changes

  • Adds support for the volume control API.
  • Removes audio focus handling from the library. Host applications are now expected to implement their own focus handling logic.

1.0.2

  • Fixed crash in background telemetry

1.0.1

Party API Changes

PartyManager::SetMemoryCallbacks Changes

This release of Party adds fixes for PartyManager::SetMemoryCallbacks() and also restrictions about when this API is safe to call. Check the reference documentation of the API in Party.h for details.

Removal of PartyStateChangeResult::TitleCreateNetworkThrottled

The PartyStateChangeResult value TitleCreateNetworkThrottled has been removed from the API, since the Party library will never generate it.

0.7.0-prerelease

Windows Packaging Changes

This release of Party introduces a new NuGet package, Microsoft.PlayFab.PlayFabParty.Cpp.Windows, which replaces and deprecates the NuGet packages specific to Windows 10 and Windows 7 (Microsoft.PlayFab.PlayFabParty.Cpp.Win10 and Microsoft.PlayFab.PlayFabParty.Cpp.Win7, respectively). The new unified Windows NuGet package contains two new DLLs, PartyWin.dll (supports Windows 8.1 and up) and PartyWin7.dll (only for use on Windows 7). With the new Windows unified NuGet package, the correct Party DLL is loaded based on runtime detection of the OS version, so both PartyWin.dll and PartyWin7.dll should be included in the game distribution package.

Android Changes

The Android flavor now uses a shared object for Party (libparty.so) instead of a static library (libparty.a).

This release also contains Android-specific bug fixes for audio device selection.

iOS Changes

The iOS flavor of Party now has the framework package included for dynamically loading libparty instead of the statically built libparty.a.

API Changes

UpdateEntityToken API

This release of Party makes a change related to the handling of PlayFab entity tokens. In the previous version, the game provided Party with a user's entity token in the PartyManager::CreateLocalUser() API. Thereafter, Party internally refreshed the entity token and kept it up to date.

In this version, the internal token refreshing behavior has been removed and is replaced by a new API, PartyLocalUser::UpdateEntityToken(). The caller is now responsible for monitoring the expiration of the entity token provided to PartyManager::CreateLocalUser() and PartyLocalUser::UpdateEntityToken(). When the token is nearing or past the expiration time a new token should be obtained by performing a PlayFab login operation and provided to the Party library by calling PartyLocalUser::UpdateEntityToken(). It is recommended to acquire a new token when the previously supplied token is halfway through its validity period. On platforms that may enter a low power state or otherwise cause the application to pause execution for a long time, preventing the token from being refreshed before it expires, the token should be checked for expiration once execution resumes.

The rough flow is as follows:

  1. The game calls a LoginWith* PlayFab API
  2. The response from PlayFab contains the entity token and also the expiration time
  3. Provide the token information to Party with the PartyManager::CreateLocalUser() API, as before
  4. [New] Make note of the expiration time in order to know when to refresh it
  5. [New] At halfway through the token's expiration time (or soonest opportunity after that time), acquire a fresh token by calling LoginWith* again and track the new token's expiration time
  6. [New] Call PartyLocalUser::UpdateEntityToken() to pass in the new token to Party

Additional notes:

  • The act of acquiring an entity token does not invalidate any previously obtained entity tokens. They remain valid until they expire.
  • The internal refreshing functionality was removed because most games are expected to make their own PlayFab calls and so having both the game and the Party library fetching entity tokens causes unnecessary service load to basically manage two sets of tokens.

Chat API Changes

The PartyVoiceChatTranscriptionReceivedStateChange now includes a languageCode field, which indicates the language of the transcription.

The PartyChatTextReceivedStateChange now includes a languageCode field, which may indicate the language of the chat text. The languageCode field will be populated when chat text translation has been enabled via PartyLocalChatControl::SetTextChatOptions().

0.6.0-prerelease

Added support for iOS, Android, and Nintendo Switch platforms.

For more information, see the following links:

iOS/Android

Nintendo Switch

0.5.0-prerelease

API Changes

Accessible Chat

  • Added support for text-to-speech narration. (see PartyLocalChatControl::SetTextToSpeechProfile())
  • Added more options for controlling when speech-to-text occurs. (see PartyLocalChatControl::SetTranscriptionOptions())
  • Added text-to-text translation to the API, although it is not yet supported. ( see PartyLocalChatControl::SetTextChatOptions())
  • Reduced text-to-speech bandwidth and memory usage.

Network access control

  • PartyNetwork::SetAccessControlList() and related methods have been removed from the API. Use the new PartyInvitation class and related methods to create open invitations or grant access to specific PlayFab users to your Party networks.

0.4.6-prerelease

API Changes

Added new public API PartyLocalUser::UpdateEntityToken().

0.2.0-prerelease

API Changes

  • PartyManager::Initialize now requires a valid PlayFab Title ID to be passed in.