PlayFab Party release notes
November 11, 2022
- Fixed a bug that failed to open a Web request after a certain point in time on Linux.
October 7, 2022
- Fixed a bug where a crash may occur when a chat control is connect to a network on iOS.
- Fixed a bug where a crash may occur when enabling iOS log.
September 27, 2022
New Bundle release for macOS
- Added .bundle for Unity plug-in loading and native macOS development.
- Fixed a bug where a crash may occur when enabling macOS log.
August 12, 2022
New SDKs for Linux and macOS
- Added native support for PlayFab Party on Linux and macOS, enabling game developers to create cross-platform or multiplatform real-time multiplayer experiences on even more platforms. For links to these and other SDK releases,see Azure Playfab Party SDKs.
August 11, 2022
- Introduces PlayFab Party for Linux
June 24, 2022
- Fixed an issue where a single memory allocation would still remain following a call to
April 21, 2022
- Fixed an issue where memory wasn't fully cleaned up when
- Fixed an issue where calling
PartyLocalChatControl::SetAudioOutput()with the same audio device selection would unnecessarily result in the library reinitializing the audio device.
March 16, 2022
- PlayStation®4, PlayStation®5: 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.
“PlayStation” is a registered trademark or trademark of Sony Interactive Entertainment Inc.
February 8, 2022
- Windows, XDK, Nintendo Switch, PlayStation 4, PlayStation 5: 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.
- iOS, Android, Switch, PlayStation 4, PlayStation 5, 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 isn't enabled.
September 30, 2021
- Fixed an issue where some 16kHz microphones weren't working.
- Fixed an issue where microphone permission changes were not handled on Windows.
- Fixed a memory leak in some
- Fixed an occasional crash in
June 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
Endpoint message behavior improvements
- The 'PartySendMessageQueuingConfiguration'
timeoutInMillisecondsfield 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.
- 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.
April 12, 2021
New thread control and text moderation features
- The library's work can now be run manually on game-controlled threads. For more information, see
- Offensive text chat can now optionally be filtered. For more information, see Using text moderation.
Explicit enum numbering in the header
- Enum values in the header now have explicit numbering.
March 26, 2021
- 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.
- 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.
September 05, 2020
- Fixed a bug where the library may fail to activate the microphone on iOS.
New direct peer-to-peer connectivity, latency, and speech-to-text features
- Direct peer-to-peer connectivity is now supported in the Windows 10 and Microsoft Game Core versions of the library. For more information, see Using direct peer-to-peer connectivity.
- The round trip latency between the local device and a remote device can now be queried through the library. For more information, see
- Speech-to-text profanity masking can now be disabled. For more information, see
Android and iOS audio bug fixes
- Android: Bluetooth manager will be initialized the first time
PartyLocalDevice::CreateChatControl()is called, rather than when
- iOS: Fixed a minor sound artifact when
Windows 8.1 dependency issue
This release removes an unnecessary dependency on api-ms-win-core-version-l1-1-1.dll that prevented previous versions from working on Windows 8.1
April 30, 2020
- The transcription stack has been updated to use TLS1.2 on Windows 7, Android, and iOS. 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.
- Fixed a bug where the
languageCodefield in the
PartyCreateChatControlCompletedStateChangestruct was not being populated.
- Fixed a bug which was artificially inflating the latency measurements reported by
- Fixed a bug that allowed
PartyManager::SetMemoryCallbacks()to be called at unsafe times.
- Fixed a bug where calling
PartyNetworkwould generate a
PartyLocalUserRemovedStateChangewith an incorrect value in the removedReason field,
PartyLocalUserRemovedReason::RemoveLocalUser, instead of the correct value,
- 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 that rely on a valid token.
- Typos in the header documentation have been fixed.
- A more descriptive error code and error message are now provided when an invalid region is passed to
- The documentation for the lifetimes of
PartyStringvalues 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.
Chat API Changes
- The real-time audio manipulation functions, which can be used to modify outgoing or incoming voice chat audio, are implemented for Windows and Xbox. For more information, see Using real-time audio manipulation to apply custom voice effects.
- The chat permission options have more options for optionally configuring text-to-speech and microphone audio permissions independently. For more information, see
- This breaks compatibility with previous releases of the Xbox Live Helper library. This release is compatible with version 1.2.0 of the Xbox Live Helper library. For more information, see the Xbox Live Helper Library release notes.
- Each transcription state change now indicates whether it represents text-to-speech or microphone audio. For more information, see
- Adds support for the volume control API.
- 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.
- Fixed crash in background telemetry
Party API 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
TitleCreateNetworkThrottled has been removed from the API, since the Party library will never generate it.
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.
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.
The iOS flavor of Party now has the framework package included for dynamically loading libparty instead of the statically built libparty.a.
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
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 pause application execution for a long time, the token may be prevented from being refreshed before it expires. The token should be checked for expiration once execution resumes.
The rough flow is as follows:
- The game calls a
- The response from PlayFab contains the entity token and also the expiration time
- Provide the token information to Party with the
PartyManager::CreateLocalUser()API, as before
- [New] Make note of the expiration time in order to know when to refresh it
- [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
- [New] Call
PartyLocalUser::UpdateEntityToken()to pass in the new token to Party
- 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. Having both the game and the Party library fetch entity tokens causes unnecessary service load to manage two sets of tokens.
Chat API Changes
PartyVoiceChatTranscriptionReceivedStateChange now includes a
languageCode field, which indicates the language of the transcription.
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
Added support for iOS, Android, and Nintendo Switch platforms.
For more information, see the following links:
- Added support for text-to-speech narration. (see
- Added more options for controlling when speech-to-text occurs. (see
- Added text-to-text translation to the API, although it is not yet supported. (see
- 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
PartyInvitationclass and related methods to create open invitations or grant access to specific PlayFab users to your Party networks.
Added new public API
PartyManager::Initializenow requires a valid PlayFab Title ID to be passed in.
Submit and view feedback for