UGS Release Notes
How to access the latest package features
Please follow the installation instructions to upgrade your packages. If you don't see a package's latest version available in the Editor, make sure you update to the latest LTS or Tech Stream release.
Some new features are pre-releases; these are identified with the pre
tag. Learn more about working with Pre-release packages.
August 2023
Authentication 3.0.0
- Added:
Code-Link
Identity Provider. - Added:
GenerateSignInCodeAsync
,SignInWithCodeAsync
,GetSignInCodeInfoAsync
andConfirmCodeAsync
APIs for use with theCode-Link
Identity Provider - Changed:
GetPlayerNameAsync
accepts aautoGenerate
parameter to prevent it from auto-generating a player name when the player has yet to create a player name.
Analytics SDK 5.0.0
- Added: New initialization and consent flow. Please see the migration guide for more information: https://docs.unity.com/ugs/en-us/manual/analytics/manual/sdk5-migration-guide
- Deprecated: The old initialization and consent flow should no longer be used and will be removed in a future version of the SDK. Please see the migration guide for more information: https://docs.unity.com/analytics/en/manual/AnalyticsSDK5MigrationGuide
- Changed: Updated
com.unity.services.core
dependency to 1.10.1 - Changed: The package no longer has a dependency on Newtonsoft.Json
- Changed: The package now has a dependency on the Unity JsonSerialize module (JsonUtility)
- Changed: A number of elements that were previously marked as Obsolete have now been removed
- Fixed: Analytics no longer blocks services initialization (
UnityServices.InitializeAsync
) if there is no internet connection - Fixed: It is now possible to opt in to data collection during a session where the player has previously opted out (requires migration to the new consent flow)
- Fixed: Application.persistentDataPath is no longer requested on some platforms where access to the file system is denied by default
- Fixed: Event buffer is now cleared on a wider variety of server responses
- Fixed: Events are more eagerly cached to disk (if available) on shutdown to prevent data loss if game is closed while offline
- Fixed: Data deletion requests are now sent using the custom user ID if one is set, instead of always using the installation ID
Remote Config
- Changed: All variants for Remote Config keys are now displayed in the Game Overrides table.
July 2023
Voice and Text Chat (Vivox)
- Released: Vivox Text Chat in Open Beta.
- Includes the following features: Chat History, Edit/Delete, Adaptive Chat Filter, Anti-flooding, Text evidence management, and large channel support.
- Changed: Critical changes that render previous versions of Voice and Text Chat (Vivox) obsolete.
Game Overrides
- Changed: Visual improvements to campaign details pages.
Push NotificationsBETA
- Fixed: Test tool UI now returns a warning when provided with an invalid token.
Authentication
- Added:
SignInWithSteamAsync
andLinkWithSteamAsync
methods withidentity
parameter which provides increased security. - Changed: Marked previous versions of
SignInWithSteamAsync
andLinkWithSteamAsync
methods as obsolete. - Added:
Username/Password
Identity Provider. - Added:
SignInWIthUsernamePasswordAsync
,SignUpWithUsernamePasswordAsync
,AddUsernamePasswordAsync
, andUpdatePasswordAsync
APIs for use with theUsername/Password
Identity Provider. - Added:
IAccessTokenObserver
component for notifying when the access token changes.
CLI 1.0.0
Added: Leaderboards now supports the
ugs deploy
andugs fetch
commands at the root.Added: Leaderboards now supports
new-file
, to create an empty file for leaderboards.Added: Game Server Hosting Module Service commands. Run
ugs gsh -h
to show usage.Added: Supports builds, build configurations, fleets, fleet regions and servers.
Added: Deployment Definitions to the Deploy and Fetch commands.
Added: Analytics relatedc to command usage and options used.
Added: Deploy/Fetch return an array in a table-like format with -json flag enabled.
Added: Deploy sends file configurations into the service.
Added: Fetch updates local files based on service configuration.
Changed: Removed Leaderboards support to
create
andupdate
commands in favor ofdeploy
andfetch
.Fixed: Implement JsonConverters to prevent NotImplementedException when converters are invoked by reflection.
Fixed: A bug with the login command when stdin is redirected.
Fixed: A bug preventing Remote Config fetch dry run to update the fetched file name.
Core SDK 1.11.0
Added: IServerAccessToken and IServerEnvironmentId components for packages that want to support running operations in the context of a server.
Added: IAccessTokenObserver component for packages to be notified of changes to the IAccessToken value.
Fixed: A bug logging an additional error when deploying a file.
June 2023
Relay
- Changed: Updated the way region is selected when there is a lack of QOS results.
Remote Config
- Added: Remote Config Runtime 4.0.1 promoted to production
- Fixed: Bug Fixes (WebGL build enabled, fixed bug regarding persisting auth token when app goes in background)
- Changed: Runtime Code now adheres more to UGS standards, many Quality-Of-Life improvements
Game Overrides
- Fixed: It is no longer possible to delete Economy keys targeted by a Game Override.
Push NotificationsBETA 3.0.1-pre.1
- Fixed: Filters in the web UI now work as intended.
Authentication
- Added: Unity Player Accounts (beta) identity provider.
- Added: Unity Player Accounts SDK (beta) released for Unity Editor versions 2020.3 and above. Windows, Mac, Linux, iOS, and Android platforms supported.
- Added: Support for the Unity Player Accounts identity provider in the Authentication SDK.
Deployment 1.1.0
- Added: Deployment now uses the main Environment Selector in Project Settings > Services > Environment, which can also be used to define the target runtime environment.
- Added: Added inspector support for deployment definition exclude paths.
- Added: Added support for deployment definition exclude paths in the Deployment window.
Core SDK 1.10.1
- Added: The
IAnalyticsUserId
component to provide a way to obtain the user ID that the analytics SDK is currently recording events against. - Added: Added new environment selector in Project Settings > Services > Environments.
- Added: Added new environment api to allow services to use a single access point for the current environment.
Remote Config Runtime 4.0.1
Changed: Dropped support for Unity 2020.3, minimum supported is 2021.3 now
Changed: Removed 2.x namespace and corresponding API's for backward compatibility with 2.x implementation
Changed: Removed static ConfigManager class
Changed: Updated SDK documentation regarding caching and unity attributes
Changed: Updated
com.unity.services.core
dependency from1.5.2
to1.8.1
Changed: Promote Candidate Experimental package to Verified Production
Changed: Updated delivery endpoint from
https://config.unity3d.com/settings
tohttps://config.services.api.unity.com/settings
Fixed: Added fix for inadvertently persisted auth token
UGC Bridge 1.0.1
- Added: Initial release
Game Server Hosting SDK 1.0.5
- Fixed: Issue where editors above 2020.3 were having deserialization errors on ReadyServerForPlayersAsync calls.
- Fixed: Issue where deserializing a payload allocation was throwing an exception when used with Matchmaker.
In-App Purchasing 4.9.4
- Changed: Google Play - Billing Library updated to 5.2.1 (was previously 5.1.0). No new feature support was added, this is simply to add compatibility with Android 14.
- Changed: Apple - Using the CrossPlatformValidation (or AppleValidator), receipts will now be validated if their certificate chain is encoded in SHA-256 instead of SHA-1. Old receipts encoded in SHA-1 will still be validated. See Apple Technical Note.
Leaderboards 1.0.0
- Added: Major release of the Leaderboards SDK, containing some added documentation and changes to the names, parameters, and namespace of the public interface.
Cloud Build 1.0.5
Added: Added define constraints to the package assembly to don't load on Unity versions < 2022.
Changed: Adjusted package accordingly to Unity Build Automation rebranding.
Fixed: Fixed documentation and dashboard links.
Player AccountsBETA 1.0.0-pre.2
- Changed: Updated the core SDK dependency to latest version.
CLIBETA 1.0.0-beta.5
- Added: Added Batching to import and deploy to help prevent "Too Many Requests" error.
- Added: Cloud Code Modules now support
import
andexport
commands. - Added: Cloud Code Scripts now support
import
andexport
commands. - Added: Lobby now supports
import
andexport
commands. - Added: Leaderboards now support
import
andexport
commands. - Added: Remote Config now supports
import
andexport
commands. - Added: Alpine build now added to the release.
- Added: New option
--services
to deploy and fetch commands. This option perform commands only to specified services.- [Breaking Change]: This option is mandatory when using the
--reconcile
flag.
- [Breaking Change]: This option is mandatory when using the
[Breaking Change]: Cloud Code list
command for Modules and Scripts is more descriptive.
[Breaking Change]: Messages are directed to StdErr and Output into Stdout.
[Breaking Change]: Cloud Code create, delete, get, list, new-file, publish and update commands are now under a parent command scripts
and can be called with cloud-code scripts <command>
.
[Breaking Change: Deploy and Fetch output have been modified to match each other.
Statuses have been updated to reflect what is happening in the editor.
Changed: Using standardized output for all Import/Export implementations.
Changed: Plain text Deploy/Fetch Output now prints full path.
- This is to disambiguate output regarding files with same name, but different path.
- This allows to pipe individual parts such as
ugs cmd 1>output 2>logs.txt
. - In both JSON and regular formats.
Fixed: Cloud Code files that failed to read now reported properly in the output.
Fixed: Cloud Code deleted files properly reported in the Deploy output.
Fixed: Remote Config Entries properly reported in the Deploy output.
Fixed: Remote Config Fetch properly bubbles issues in loading files.
Fixed: An issue where fetching a file from Cloud Code that had no parameters would keep appending
module.exports.parameters = {}
.Fixed: Using Cloud Code fetch and deploy multiple times no longer appends new lines.
Fixed: Improved error handling to provide more detail on certain unhandled exceptions.
Fixed: Cloud Code script with invalid parameters will fail to fetch and show in the "failed" result section.
May 2023
Cloud Content Delivery
- Added: New Insights feature allowing users to access detailed CCD usage metrics.
Core 1.9.0
- Added: New common error codes
ProjectPolicyAccessDenied
andPlayerPolicyAccessDenied
. - Changed: Newtonsoft (de)serialization calls to be thread safe.
- Changed: Bumped Newtonsoft dependency to 3.2.1 to use the latest stable version.
Remote Config 3.3.2
- Changed: Updated implementation docs and ExampleSample.cs
- Changed: Updated general support link in the docs
- Changed: Improved load times when switching between versions in the UI.
- Fixed: Deployable assets (.rc) not appearing on load in the Deployment Window with Unity 2022+.
- Fixed: Deployment error message showing twice when duplicate keys are detected in different .rc file
- Fixed: Compile warning was fixed
Cloud Code 2.3.2/2.4.0
- Added: Subscription methods for player-specific and project-wide push messages from Cloud Code C# Modules.
- Changed: Increased timeout from 10 seconds to 25 seconds.
- Changed: Scripts are no longer cached, which would previously prevent deployments without a local change.
- Fixed: When using JS Bundling, modifying an imported file will enable re-deployment for the main script.
- Fixed: Selecting multiple .js files using in-script parameters, the inspector will now remain disabled for editing.
- Fixed: When selecting multiple .js files or deployment definitions, the inspector will now properly refer to their actual types.
- Fixed: Deployable assets (.js) not appearing on load in the Deployment Window with Unity 2022+.
Deployment 1.0.1
- Fixed: Assets not appearing on load in Unity 2022.
Authentication 2.5.0
- Fixed:
- Properly disposing web request when using player names
- Fixing exception reporting in some cases for the SignInFailed event
- Remove time validation on client side, to prevent token expiry errors caused by the wrong date/time settings on devices.
- Adding Preserve attributes to api models to prevent issues with code stripping for player names
Game Overrides
- Fixed: Campaigns using Audiences which no longer exist are now displayed correctly.
- Fixed: The Duplicate Audience button now works as intended.
Push NotificationsBETA 3.0.1-pre.1
- Added: Improved performance and usability of the notification testing tool.
- Added: Updated the integration guide to include Firebase App creation steps.
April 2023
CLIBETA 1.0.0-beta.4
- Added:
ugs fetch
now supports cloud code scripts. - Fixed: Cloud Code script with invalid parameter will fail to deploy and show in deploy result in failed catagory.
- Fixed: Deploying Cloud Code C# Modules that are empty or over the size limit of 10 MB doesn't fail silently anymore.
- Changed: Replaced Jint with Node.js for cloud code javascript parameter parsing. Users need to install Node.js with version > 14.0.0 to parse cloud code javascript.
Core 1.8.2
- Fixed: Fixed Newtonsoft usage so it isn't impacted by changes to JsonConvert.DefaultSettings anymore
Unity DevOps
- Added: Unity Version Control:
- Encryption support for Unity Version Control repositories
- Embedded multimedia viewer to display videos, audio and 3D files (glb, gltf, obj)
- Support adding groups as reviewers in code reviews
- Added: Build Automation:
- Search functionality for Build History
- Bulk delete functionality for Build History
- Universal Windows Platform (beta) support
- Improved: Unity Version Control:
- Full support for .fbx files in the embedded 3D Viewer, with embedded or external textures
- Improved: Build Automation:
- Now, the form clearly indicates to the user if they've made a change do their data, so they don't forget to save before leaving the page
- Updated the Play button behaviour to support local webgl builds and custom template webgl builds
- When modifying their Source Control settings, new users, or users without an UVCS organization, will now see a banner with helpful information about using Unity Version Control
- Users now have the option to “Save and build” after modifying or creating their target
Remote Config 3.3.2-pre.2
- Fixed: A single error message is now displayed when duplicate keys are detected in different
.rc
files - Fixed: Improved json deserialization for a better experience in the deployement window
Game Overrides
- Added: Added support for an optional goal metric.
- Added: Improved loading experience for the reporting summary table.
- Added: Participant data now available in the reporting summary table.
- Added: Total participants and Override length cards added to the reporting page.
- Added: Override Started annotation added to the reporting page.
- Fixed: Players without data now enter the “New Players” Audience where previously they wouldn’t.
- Fixed: Crashing when switching projects during creation.
Analytics 4.4.2
- Fixed: Revoking consent (opting out) now also uploads a data deletion request
- Improved: Recording events is now significantly faster and generates fewer memory allocations
Analytics Dashboard
- Added: New chart types in Data Explorer and SQL Data Explorer (pie chart, stacked bar chart)
- Added: Option to create a pivot table in SQL Data Explorer
In-App Purchasing 4.8.0
- Added: Added new IAP Button in the editor. This new button allows for more UI customization. The new button will no longer update the button fields by default.
- Fixed: GooglePlay - Fixed No such proxy method exception in our representation of BillingClientStateListener.onBillingServiceDisconnected() introduced by Unity IAP 4.6.0
- Changed: Removed com.unity.services.analytics from the IAP SDK dependencies.
- Changed: Google Play - Billing Library update from version 4.0.0 to 5.1.0 Google Release Notes. New Google Billing features are not supported yet, they will be included in a future major update.
- Changed: Upgraded com.unity.services.core from 1.5.2 to 1.8.1.
Push NotificationsBETA 3.0.1-pre.1
- Added: Step-by-step setup guide.
- Added: Updated settings page with clearer UI and test integration option.
- Fixed: Crashing when switching projects during creation.
March 2023
Access Control
- Added: A new feature to control API access to specific UGS products from authenticated players, read here for more details.
Unity DevOps
- Introducing Unity DevOps for game development, read our release blog here!
LeaderboardsBETA
- Added: Released a new Leaderboards product
- Added: Leaderboards v1.0.0-exp SDK
FriendsBETA
- Added: Released a new Friends product
- Added: Friends SDK 0.2.0-preview.9
Authentication 2.5.0-pre3
- Added: Player Names:
UpdatePlayerNameAsync
,GetPlayerNameAsync
,PlayerName
- Added: Player Management:
- Dashboard: Enable/Disable Players
- Public Admin API: Enable/Disable Players, List Players
- UGS CLI:
player
module,create
,delete
,enable
anddisable
commands
- Changed: Player Management:
- Player Overview: Include Creation date, Last login and Linked identities
Analytics Dashboard
- Added: A new workflow for adding custom event definitions. Users can now submit events and our platform automatically captures the event payload to facilitate the creation of the event defintion.
- Added: Summary row in Data Explorer. Users can now display the sum and average for each of the columns.
- Changed: Updated table view in Data Explorer and SQL Data Explorer. Improves readability as well as provides sorting, column visibility and ordering options.
Analytics 4.4.1
- Added: CustomData method now supports
IDictionary<string,object>
,IList<object>
andEnum
parameters - Changed: Events are now serialised immediately when recorded rather than as part of the upload process. This should alleviate any hitches that might have been experienced during upload (every 60 seconds)
- Changed: Updated
com.unity.services.core
dependency to 1.8.1 - Fixed: Custom user ID can now be changed at runtime (by updating
UnityServices.ExternalUserId
) - Fixed: Changing ExternalUserId now takes effect immediately, rather than after an unpredictable delay
- Fixed: Recording a single event that is too big to upload (over 4MB) no longer prevents any further events from being uploaded (event is immediately discarded with a warning)
- Fixed: Session ID is now refreshed when application is paused for over 5 minutes (when Run In Background is false)
- Deprecated: The
RecordEvent(Event event)
API is no longer supported and will be removed in a future version
Cloud Code
- Added: A new set of APIs to create C# Modules in Cloud Code. Enabling code reuse, nuget dependencies, multiple endpoints per module, local unit testing and more.
- Added: Cloud Code C# CLI module.
- Added: Cloud Code SDK v2.3.1
- Added: Support Cloud Code C# Modules.
- Added: Support JS bundling.
- Fixed: Fixed an issue with
null
paths on cloud code scripts.
Remote Config
- Changed: Increased limit from 20,000 to 65,535 characters for string type values.
- Changed: Removed 20,000 characters limit for json type values. Total configuration size per environment remains 5MB.
- Fixed: Improved example for fetching and applying configuration in Remote Config Documentation and in
ExampleSample.cs
.
Game Overrides
- Added: Relative chart type on the reporting page.
- Added: End test functionality for multi-variant Game Overrides.
- Added: Summary table on the reporting page.
- Fixed: Missing type for CampaignRequest condition field in the API spec.
- Fixed: Simulation Experience not working in some cases.
Push NotificationsBETA 3.0.1-pre.1
- Fixed: Resolved potential Firebase dependency conflicts.
- Fixed: Added support for Android 13 permissions.
- Fixed: Unnecessary errors were being thrown in Editor play mode.
- Fixed: Incorrect content types were showing on the Push Notifications overview page.
Deployment Package 1.0.0
- Added: Official GA release.
- Added: Make internal API public.
- Fixed: Issues with displaying new environments in the Deployment window.
Lobby
- Released: Updated Lobby SDK 1.1.0-pre.4 (Changelog)
- Added: more specific LobbyEvents
- Added: password protected lobbies
Use Cases Samples 1.9.1
Added: Serverless Multiplayer Game sample demonstrates how to utilize game lobbies and compete in a simple real-time arena-style game where players collect coins for points.
Changed: Upgraded the project from Unity Editor version 2020.3.20f1 to 2020.3.41f1.
- Updated Unity Services packages to the latest released as of 2023-03-13.
Changed: Updated various non-UGS packages to their latest versions that are verified for Unity Editor 2020.3.41f1.
Changed: Removed
RemoteConfigService.instance.SetCustomUserId()
call fromClientVersionCheck.cs
as calling that method is only necessary for specific circumstances, and ClientVersionCheck is not one of those circumstances.Changed: Minor refactors to files to support newly applied linting rules.
Changed: Add popups to explain cause when client is forced back to the main menu in Serverless Multiplayer Game due to host leaving or kicking player out of lobby.
Changed: Turned off
Interpolate
in the Serverless Multiplayer Game to improve responsiveness in the game scene and reduce the 'host advantage' in gameplay. The flag is located in the player avatar prefabs'ClientNetworkTransform
component.
Economy
- Added: Economy SDK v3.1.2
- Fixed: A bug that was throwing an exception when setting UnityServices.ExternalUserId.
- Added: Economy SDK v3.1.1
- Added: Introduction of the new sync configuration workflow. Old methods have been deprecated. See docs for more info on new workflow.
- Removed: Removed a redundant log message when fetching a non-existent currency from your configuration.
- Fixed: Bug that prevented the Store Identifiers field from being populated on fetch real money purchases requests.
- Fixed: Bug which meant writeLocks weren't being set correctly.
- Fixed: Bug that was throwing an exception when fetching virtual purchases with custom data.
February 2023
Authentication
- Added: Player Management:
- Dashboard: Account Deletion
- Public Admin API: Enable/Disable Players
Cloud Code 2.2.4
- Fixed: Fixed corrupted npm libraries used for services.
- Fixed: Missing logs in some failure cases are now handled.
- Fixed: Added more verbose logging for diagnostics behind a preprocessor directive.
Analytics Dashboard
- Added: Simplify Analytics Event Management - Expand creation modal to include parameters.
Analytics 4.3.0
- Added: CustomData(string eventName) method for recording events that don't have any parameters.
- Changed: The
AnalyticsContainer
object is now spawned duringUnityServices.InitializeAsync
. - Fixed: Issue where a single corrupt event could prevent all subsequent events from being sent.
- Fixed:
NullReferenceException
when passing null instead of a Dictionary of parameters toCustomData
for an event that doesn't have any parameters. - Fixed:
NullReferenceException
when passing null for the currency code toConvertCurrencyToMinorUnits
; it now throws anArgumentNullException
if the currency code is either null or empty. - Fixed: Compiler error on 2020.1 Editor versions.
- Fixed: Documentation comment on
IAnalyticsService.Flush
method to clarify behavior and usage.
Game Overrides
- Added: Game Overrides users can now set a description on their overrides to explain purpose and intended outcome of the override.
- Fixed: Pagination is no longer persisted when switching between Game Overrides and Push Notifications, which in some cases led to an error page being displayed.
Cloud Content Delivery 2.2.2
- Added:
SetTimeout
toCcdManagement
to allow configuring timeouts for API calls. - Added:
GetEntriesAsync(EntryOptions, string, int)
which should be the preferred method of getting entries. - Added:
ListEnvironmentsByProjectAsync
andGetEnvironmentByNameAsync
method. - Added:
MockHttpRequest
for writing unit tests. - Added: Unit tests for
EnvironmentsApi
. - Changed:
InternalUploadAsync
changed to use a signed URL to upload content. - Changed:
CreateEntryAsync
,CreateOrUpdateEntryByPathAsync
,UpdateEntryAsync
andUpdateEntryByPathAsync
changed to request a signed URL if an upload is needed based onIsUpToDate
. - Changed:
SetDefaultEnvironmentIfNotExists
changed to useListEnvironmentsByProjectAsync
. - Changed: Added new
TryCatchRequest
to allow skippingSetDefaultEnvironmentIfNotExists
for routes without an Environment. - Changed: Moved updates of
accessToken
andprojectId
fromCcdManagement.Instance
to an Action that can be removed for testing. - Fixed: Fix issue with
GetReleaseDiff
andGetReleaseDiffEntries
sending empty release num query params. - Fixed: Fix issue with
GetOrgAsync
andGetOrgUsageAsync
sending badly formatted body in request.
Core SDK 1.7.1
- Fixed:
ActionScheduler
doesn't generate GC allocation (used to be 40 bytes) each frame anymore. - Fixed: Added a link.xml generator to make sure all required service assemblies are properly preserved in build with code stripping enabled. Only services providing a
IServiceComponent
are listed in this link file. - Fixed: Failed telemetry request no longer log errors when they fail, unless
ENABLE_UNITY_SERVICES_CORE_TELEMETRY_LOGGING
is enabled as scripting define. - Fixed: All
ActionScheduler
registered during play mode are now properly unregistered when exiting playmode.
In-App Purchasing 4.6.0
- Added: Added a new restore transaction callback
RestoreTransactions(Action<bool, string> callback)
to obtain the error string whenRestoreTransactions
is not successful (IAppleExtensions
andIGooglePlayStoreExtensions
). - Added: Added a new initialize failed callback
IStoreListener.OnInitializeFailed(InitializationFailureReason, string)
to obtain the error string whenOnInitializeFailed
is invoked. - Added: Added a new setup failed callback
IStoreCallback.OnSetupFailed(InitializationFailureReason, string)
to obtain the error string whenOnSetupFailed
is invoked. - Added: Added a new
FetchAdditionalProducts
. ThefailCallback
contains an error string.IStoreController.FetchAdditionalProducts(HashSet<ProductDefinition>, Action, Action<InitializationFailureReason, string>)
. - Added: Apple -
Product.appleOriginalTransactionId
: Returns the original transaction ID. This field is only available when the purchase was made in the active session. - Added: Apple -
Product.appleProductIsRestored
: Indicates whether the product has been restored. - Added: GooglePlay -
IGooglePlayConfiguration.SetFetchPurchasesExcludeDeferred(bool exclude)
has been added to revert to the previous behaviour. This is not recommended and should only be used ifDeferred
purchases are handled in yourIStoreListener.ProcessPurchase
. - Added: GooglePlay -
IGooglePlayStoreExtensions.GetPurchaseState(Product product)
has been added to obtain theGooglePurchaseState
of a product. - Added: GooglePlay - Added missing values to
GoogleBillingResponseCode
in order to output it inPurchaseFailureDescription
's message when available. - Added: Codeless - Added to the IAP Button the option to add a script for the On Transactions Restored:
void OnTransactionsRestored(bool success, string? error)
. - Changed: The old OnInitializeFailed
OnInitializeFailed(InitializationFailureReason error)
was markedObsolete
. - Changed: The old OnSetupFailed
OnSetupFailed(InitializationFailureReason reason)
was markedObsolete
. - Changed: The old FetchAdditionalProducts
FetchAdditionalProducts(HashSet<ProductDefinition> additionalProducts, Action successCallback, Action<InitializationFailureReason> failCallback)
was markedObsolete
. - Changed: The old restore transaction callback
RestoreTransactions(Action<bool> callback)
was markedObsolete
(IAppleExtensions
andIGooglePlayStoreExtensions
). - Changed: Apple - Transactions received from Apple that are invalid (where the product is not entitled) no longer output the
Finishing transaction
log. This only affects transactions that never reached theProcessPurchase
. - Changed: GooglePlay - The enum
GooglePurchaseState
now recognizes4
asDeferred
. - Fixed: Analytics - A
ServicesInitializationException
introduced in Analytics 4.3.0 is now handled properly. - Fixed: Analytics - Fixed an issue where transactions events were invalidated when there was no localization data for a product.
- Fixed: GooglePlay - Fixed a
NullReferenceException
when querying sku details while the BillingClient is not ready. - Fixed: GooglePlay - Fixed Application Not Responding (ANR) when foregrounding the application while disconnected from the Google Play Store.
- Fixed: GooglePlay - Limited the occurence of
PurchasingUnavailable
errors when retrieving products while in a disconnected state to once per connection. - Fixed: GooglePlay -
Deferred
purchases are, by default, no longer sent toIStoreListener.ProcessPurchase
when fetching purchases. This avoids the possibility of granting products that were not paid for. These purchases are only processed when they becomePurchased
. This can be reverted withIGooglePlayConfiguration.SetFetchPurchasesExcludeDeferred(bool exclude)
to not exclude them, butDeferred
purchases must be handled inIStoreListener.ProcessPurchase
.
Remote Config
- Changed: Upgraded backend infrastructure to improve connectivity globally. Remote Config is now serving traffic from North America, Europe and Asia.
Lobby 1.1.0-pre.3
Added:
LobbyEvents
now provides a Version for comparison.Added:
CreateOrJoinLobby
function to allow for a single call to create or join.Added:
PlayerProfile
field to Player class.Added:
LobbyEvents
functionality introduced to provide live change updates for lobbies.Fixed: Removed guards that were preventing Lobby Events APIs from being exposed completely.
January 2023
Authentication 2.4.0
- Added: Apple Game Center Support:
SignInWithAppleGameCenterAsync
,LinkWithAppleGameCenterAsync
,UnlinkAppleGameCenterAsync
Apple Game Center Authentication API Support
- Added: Player Account Deletion API.
Cloud Code 2.2.1
- Fixed: Duplicate file in the deployment window now appear as a warning instead of an error.
- Fixed: Rate limiting triggered in some cases.
Remote Config 3.3.1
- Added: Updated deployment API implementation for Config As Code.
- Fixed: An issue where deployment failures did not include the message detail.
DeploymentBETA 1.0.0-pre.7
- Added: New UI addition for the deployment window: Enhanced status observability.
- Added: New UI addition for the deployment window: Asset selection with checkboxes.
- Fixed: Deployment Status being saved across Editor sessions.
- Fixed: Issue with rate-limiting on deployments.
In-App Purchasing 4.5.2
- Fixed: Removed unused exception variable causing a compiler warning CS0168.
- Fixed: Telemetry - Calls to telemetry reporting were occasionally tripping a
NullReferenceException
,IndexOutOfRangeException
orKeyNotFoundException
, for some users. These exceptions are now caught safely and logged. These failures are also mitigated by moving all Telemetry calls to the main thread. Issue noticed in IAP 4.4.1, but may be older. - Fixed: Apple - Optimized memory usage when processing transactions to prevent out of memory crash when processing transactions on launch.
- Fixed: Batch Mode - Calls to
UnityPurchasingEditor.TargetAndroidStore
to select UDP now successfully check UDP package installation and log an error instead of throwing a blocking popup when executed as part of a Batch Mode command. - Fixed: Analytics - Removed escape characters for receipt JSON which was causing parsing issues in the backend.
- Fixed: GooglePlay - Fixed a bug causing a crash when retrying to finish a transaction while disconnected.
Cloud Save
- Changed: Removed 16KB slot size limit, users now have 5MB to work with in total across all slots.
- Changed: Increased maximum slot count from 200 to 2000.
Push NotificationsBETA 3.0.0-pre.1
- Added: Product dashboard link is now present in the package settings panel.
- Changed: Renamed package settings (Android) so that they match Firebase setting names.
- Changed: Removed some classes from the public API that weren't meant to be used directly.
- Changed: Removed deprecated
PushNotifications
class and obsoletePushNotificationSettings
properties. - Fixed:
notificationOpened
events are now also sent when launching a fully closed app from a notification. - Released into Open Beta.
Analytics
- Added: Support for legacy analytics custom events in UGS Analytics to avoid the need to make changes to game code.
Game Server Hosting (Multiplay)
- Fixed: Fixed a bug when subscribing to server events that caused a race condition where events could be missed.
December 2022
Relay 1.0.5
- Added: Using this version of Relay with UTP 2.0.0-pre.3 and NGO 1.2.0 enables using Relay on webGL.
- Added: Update
SimpleRelay
sample. - Changed: Replaced
InteractiveRelayUtp
sample withSimpleRelayUtp
. - Changed: Update QoS dependency to 1.1.0.
- Changed: Update UTP dependency to 1.3.0.
Core SDK 1.7.0
- Changed: Editor
AccessTokens
now caches the Gateway JWT per session and refreshes it as needed. It can now be used directly without needing to cache the results. - Fixed: Improved thread safety for scheduler component.
IActionScheduler
is now safely callable from any thread. - Fixed: Improved thread safety for telemetry components.
IMetrics
andIDisagnostics
are now safely callable from any thread.
Vivox
- Fixed: Fixed an issue with the Android VivoxNative.aar library causing it to have issues when trying to resolve internal dependencies.
November 2022
Authentication 2.3.1
- Added: Meta Quest (Oculus) Support:
SignInWithOculusAsync, LinkWithOculusAsync, UnlinkOculusAsync
Meta Quest Authentication API Support
- Added:
GetGooglePlayGamesId()
toPlayerInfo
.
Cloud Code 2.1.1
- Added: Integration with the
Deployment
package for config-as-code which allows to edit and configure CloudCode scripts directly from the Editor. - Fixed: Void type now allowed as return type for CloudCode scripts.
- Fixed: Removed requirement for function arguments when calling an endpoint. Now, it's possible to provide either null or omit them.
Core SDK 1.6.0
- Added:
UnityServices.ExternalUserId
which can be used to pass a user identifier from a third party provider to Unity Gaming Services. - Added: All
IInitializablePackage
initialization time is now measured by Services Core. - Changed:
CoreRegistryInitializer
now throws aServicesInitializationException
instead of an explicitNullReferenceException
when the dependency tree is null. - Changed: ActionScheduler updated to be thread safe.
- Changed: Services configuration file isn't temporarily added to the StreamingAssets folder during builds on Unity 2021.3 and up.
- Changed: Services initialization without a linked project ID now fail (throw
UnityProjectNotLinkedException
). - Fixed: Persisting telemetry no longer logs errors, unless
ENABLE_UNITY_SERVICES_CORE_TELEMETRY_LOGGING
is enabled as scripting define. Diagnostics are sent when persisting telemetry produces an error. - Fixed: Core no longer fails initialization when it fails to find a stripped service package.
- Fixed: Services Core failing to find all
IInitializablePackage
if an unity package implements it multiple times. - Fixed: A case where null configuration values were causing serialization issues.
- Fixed: Issue with stripping when authentication APIs are not used.
Deployment 1.0.0-pre.4
- Added: Deployment Window now allows management of deployments for Cloud Code and Remote-Config.
- Added: First pre-release version of the package.
Economy 3.0.0
- Added:
CustomDataDeserializable
has been added to configuration items and is of typeIDeserializable
. - Added: Missing XmlDoc to public interfaces:
IEconomyConfigurationApiClient
,IEconomyPlayerBalancesApiClient
,IEconomyPlayerInventoryApiClient
andIEconomyPurchasesApiClientApi
. - Removed: remote-config-runtime dependency.
Remote Config 3.2.2
- Added: Implemented file-based-authoring for RC Editor.
- Added: Added documentation for caching mechanism.
- Added: Released versioning, it is now possible to view and restore older versions of a games’ configuration through the dashboard as well as the admin API.
In-App Purchasing 4.5.1
- Fixed: GooglePlay - Fixed deferred purchases being processed when the app is foregrounded. Issue introduced in Unity IAP 4.5.0.
- Fixed: GooglePlay - Fixed a
NullReferenceException
inDequeueQueryProducts
happening when launching the app. Issue introduced in Unity IAP 4.2.0. - Fixed: Analytics - Fixed a
NullReferenceException
when reporting failed transactions of purchase unavailable products. Issue introduced in Unity IAP 4.2.0. - Fixed: Analytics - Legacy Analytics no longer reports events in custom UGS environments, which would cause misreported live sales figures. Issue introduced in Unity IAP 4.2.0.
Matchmaker
- Fixed: In-Package sample was breaking on WebGL builds due to using Task.Delay, this has been changed with a Coroutine implementation on polling.
- Added: MatchmakingResults model has new property ‘PoolId’.
October 2022
Authentication 2.2.0
- Added: Bring Your Own Identity v1 - OpenID Connect Support:
SignInWithOpenIdConnectAsync, LinkWithOpenIdConnectAsync, UnlinkOpenIdConnectAsync
OpenID Connect Authentication API Support
- Added
:
WebGL Support.
Core SDK 1.4.3
- Changed: Telemetry logs now use the
ENABLE_UNITY_SERVICES_CORE_TELEMETRY_LOGGING
define instead ofENABLE_UNITY_SERVICES_CORE_VERBOSE_LOGGING
. - Fixed: Added diagnostic message length limit and telemetry count limit, so telemetry payload isn't rejected by telemetry service.
In-App Purchasing 4.5.0
- Added: Apple - Add support for Family Sharing.
- API
IAppleConfiguration.SetEntitlementsRevokedListener(Action<List<Product>>
called when entitlement to a products are revoked. TheAction
is called with the list of revoked products. See documentation "Store Guides" > "iOS & Mac App Stores" for a sample usage. - API - Product metadata is now available in
AppleProductMetadata
fromProductMetadata.GetAppleProductMetadata()
viaIStoreController.products
. - API
AppleProductMetadata.isFamilyShareable
indicated if the product is family shareable. Apple App Store - 11 Family Sharing
sample that showcases how to use Unity IAP to manage family shared purchases.
- API
- Fixed: GooglePlay - Processing out-of-app purchases such as Promo codes no longer requires the app to be restarted. The purchase is processed the next time the app is foregrounded. Technical limitation: In the case of promo codes, if the app is opened while the code is redeemed, you might receive an additional call to
IStoreListener.OnPurchaseFailed
withPurchaseFailureReason.Unknown
. This can be safely ignored. - Fixed: GooglePlay - Fixed a
NullReferenceException
that would rarely occur when retrieving products due to a concurrency issue introduced in Unity IAP 4.2.0.
September 2022
Analytics 4.2.0
- Added:
SessionID
property that returns the GUID value currently being used to populate thesessionID
parameter of all events. - Changed: Reduced frequency of gameRunning event to reduce excess traffic (this doesn't affect the quality of your data).
- Fixed: SDK initialisation failing silently on WebGL due to problem with privacy consent flow.
- Fixed: SDK event batching for upload failing silently on WebGL.
In-App Purchasing 4.4.1
- Added: GooglePlay - Google Play Billing Library version 4.0.0.
- The Multi-quantity feature is not yet supported by the IAP package and will come in a future update. Do not enable
Multi-quantity
in the Google Play Console. - Add support for the IMMEDIATE_AND_CHARGE_FULL_PRICE proration mode. Use
GooglePlayProrationMode.ImmediateAndChargeFullPrice
for easy access. - The "
skuDetails
" in the receipt json is now an array of the old structure, not just one object. It only has one element in most cases, so if this is being parsed in your app, treat it like an array and get the first element by default.
- The Multi-quantity feature is not yet supported by the IAP package and will come in a future update. Do not enable
- Fixed: GooglePlay - Fixed NullReferenceException and ArgumentException that would rarely occur due to a concurrency issue introduced in Unity IAP 4.2.0.
- Fixed: Amazon - Set android:export to true to support Android API level 31+.
- Fixed: GooglePlay - Fix
IGooglePlayConfiguration.SetDeferredPurchaseListener
andIGooglePlayConfiguration.SetDeferredProrationUpgradeDowngradeSubscriptionListener
callbacks sometimes not being called from the main thread. - Fixed: GooglePlay - When configuring
IGooglePlayConfiguration.SetQueryProductDetailsFailedListener(Action<int> retryCount)
, the action is invoked withretryCount
starting at 1 instead of 0. - Fixed: GooglePlay - Added a validation when upgrading/downgrading a subscription that calls
IStoreListener.OnPurchaseFailed
withPurchaseFailureReason.ProductUnavailable
when the old transaction ID is empty or null. This can occur when attempting to upgrade/downgrade a subscription that the user doesn't own.
Vivox
- Fixed: Fixed an issue with audio buffer-related generated APIs causing the Unity editor to crash.
- Added: Added a number of generated APIs back to the SDK which were previously being omitted.
- Fixed: Fixed an issue with Build Configuration values being stored as nulls instead of empty strings which caused an exception in the editor if a project was not linked in the Project Settings.
August 2022
Analytics 4.1.0
- Added: Added a method to access the user ID used by Analytics at runtime.
- Fixed: Events are now recorded with timestamps including milliseconds.
- Fixed: XML documentation is available for more model objects.
- Fixed: A better error message is displayed when the project ID is missing.
Lobby 1.0.3
- Fixed: A bug where
ArgumentNullException
would throw onLobbyConflict
(HTTP 409) resolution. - Fixed: An issue where a
CommonErrorCode
was being reported instead of aLobbyExceptionReason
, invalidating some switch cases.
In-App Purchasing 4.3.0
- Added: GooglePlay - API
IGooglePlayConfiguration.SetQueryProductDetailsFailedListener(Action<int>)
called when Unity IAP fails to query product details. TheAction
is called on each query product details failure with the retry count. See documentation Store Guides > Google Play for a sample usage.
Matchmaker
- Fixed: Serialization for the Multiplay token class would be stripped on some IL2CPP platforms compilation.
Vivox
- Changed: Adjusted the Windows and Mac VivoxNative library .meta files to enable Load on Startup so they get loaded in regardless of the build target of the editor. Notably, this caused compiler errors when entering Play Mode if the editor build target was iOS since our Mac library, which gets used for the editor alongside the Windows library, wasn’t loaded yet.
- Fixed: Fixed an issue with various plugin .meta files not targeting their specific platform resulting in editor crashes when entering Play Mode if additional Vivox platform packages got installed.
- Fixed: Fixed an issue that would cause a compiler error if the Authentication package wasn’t available to the ChatChannelSample. The Authentication package should get automatically pulled in when the ChatChannelSample is installed, but if it hadn’t been, a compiler error would appear.
July 2022
Authentication 2.1.1
- Added: Google Play Games Support:
SignInWithGooglePlayGames, LinkWithGooglePlayGames, UnlinkGooglePlayGames
Google Player Games Authentication API Support
Cloud Code 2.0.1
- Fixed: Missing XmlDoc on public
ICloudCodeService
interface.
Cloud Save 2.0.1
- Added: Missing XmlDoc to public
ICloudSaveDataClient
interface andCloudSaveService
static class.
Core SDK 1.4.2
- Added: Log a JSON containing the common configuration shared among all services for debugging purposes when using
ENABLE_UNITY_SERVICES_CORE_VERBOSE_LOGGING
as a scripting define. - Added: Log warning when building a project with core package included and without linking the project in project settings.
- Changed: Log error instead of warning when core initialize with no cloud project ID.
- Fixed:
NullReferenceException
while telemetry was provided an empty file, fixed by introducing a null check. - Fixed:
DirectoryNotFoundException
happened inconsistently on Switch, fixed by resolving racing condition issue.
Remote Config 3.1.3
- Added: Using
ENABLE_CLOUD_SERVICES_ANALYTICS
flag for platforms using Analytics within 2.x namespace. - Added: Whitelisting platforms for getting userId from Analytics package within 2.x namespace.
- Added: Allowing projectId and userId params to be in the payload for consoles.
In-App Purchasing 4.2.1
- Added: Feature to automatically initialize Unity Gaming Services through the catalog UI. Please see the documentation for more details.
- Changed: The In-App Purchasing package now requires Unity Gaming Services to have been initialized before it can be used. For the time being IAP will continue working as usual, but will log a warning if Unity Gaming Services has not been initialized. In future releases of this package, initializing Unity Gaming Services will be mandatory. Please see the documentation for more details.
- Fixed: Downgrade
com.unity.services.core
from 1.4.1 to 1.3.1 due to a new bug found in 1.4.1.
Matchmaker
- Fixed: Bugfix: Serialization for the Multiplay token class would be stripped on some Linux platforms compilation.
- Added: Added PoolId and MatchId to CreateBackfillTicketOptions for Photon integration.
Vivox
- Added: Added VivoxConfig as a parameter to the VivoxService.Instance.Initialize(...) method so developers can configure the Vivox Client’s settings on startup.
- Changed: Stopped removing minus (‘-’) characters from the Environment ID when appending it to the AccountId and ChannelId URIs. The Environment ID will now be appended verbatim.
- Fixed: Fixed an issue causing generated files from the Android platform to make it into the package resulting in methods that could not be resolved due to the APIs not existing in any other library.