All notable changes to this package will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Added
ServicesInitialization
monobehaviour to manage services in the scene authoring. - Added
ServicesBehaviour
abstract monobehaviour as a base for behaviours built on top of services. - Added unique identifier for custom service registry creation (
UnityServices.CreateServices
). - Added custom services registries dictionary in
UnityServices.Services
. - Added
GetIdentifier()
method toIUnityServices
interface with a default implementation.
- Updated the minimum supported Editor version to 2021.3.
- Refresh button for Environment dropdown in Project Settings > Services > Environments menu.
- Fixed user permissions fetching for cloud projects where the user has the 'inherited from organization' role.
- The EnvironmentProvider, EnvironmentSaveSystem, EnvironmentService, and related interfaces have been updated to support an object representing the environment (name and id) instead of a string representing the environment name.
- Added initialization success and failure events to UnityServices.
- Apple privacy manifest file (PrivacyInfo.xcprivacy)
- Fixed an issue with the optional
FEATURE_SERVICES_INSTANCES
preprocessor define.
- Fixed a bug where the project linking popup window would appear on Editor start after reimporting packages, even if the user's project was linked.
- Fixed issue with .NET Standard target.
- Added support to -no-cloud-project-bind-popup flag, to prevent the popup from showing.
- The Environment Selector no longer throws exceptions when there is no network connection, instead it displays a different offline UI
- Rolling back interface constraint in service registry due to unforeseen breaking change with transitive dependencies.
- Added service registry and new package initialization interface for enabling instances and editor-time services.
- Resolved issue with
IAccessTokens
reaching rate limit.
- Adding
IServerAccessToken
andIServerEnvironmentId
components for packages that want to support running operations in the context of a server. - Adding
IAccessTokenObserver
component for packages to be notified of changes to theIAccessToken
value.
- Implement JsonConverters to prevent NotImplementedException when converters are invoked by reflection
- Added support for the environments UI to Unity Editor 2020.3
- The
IAnalyticsUserId
component to provide a way to obtain the user ID that the analytics SDK is currently recording events against. - Added new environment selector in Project Settings > Services > Environments.
- Added new environment api to allow services to use a single access point for the current environment.
- New common error codes
ProjectPolicyAccessDenied
andPlayerPolicyAccessDenied
.
- Newtonsoft (de)serialization calls to be thread safe.
- Bumped Newtonsoft dependency to 3.2.1 to use the latest stable version.
- Newtonsoft usage isn't impacted by changes to
JsonConvert.DefaultSettings
anymore.
- The
IAnalyticsStandardEventComponent
component to provide a way to record analytics standard events from any package.
- Package's license to refresh legal links.
- Improved assembly filtering when generating the link file to only link assemblies providing a
IServiceComponent
.
ActionScheduler
doesn't generate GC allocation (used to be 40 bytes) each frame anymore.- Failed telemetry request no longer log errors when they fail, unless
ENABLE_UNITY_SERVICES_CORE_TELEMETRY_LOGGING
is enabled as scripting define. - All
ActionScheduler
registered during play mode are now properly unregistered when exiting playmode.
- A link.xml generator to make sure all required service assemblies are properly preserved in build with code stripping enabled.
- Improved thread safety for scheduler component.
IActionScheduler
is now safely callable from any thread. - Improved thread safety for telemetry components.
IMetrics
andIDisagnostics
are now safely callable from any thread.
- 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.
- Services configuration file isn't temporarily added to the StreamingAssets folder during builds on Unity 2021.3 and up.
- Services initialization without a linked project id will fail (throw
UnityProjectNotLinkedException
).
- 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.
- Core will no longer fail initialization when it fails to find a stripped service package.
UnityServices.ExternalUserId
which can be used to pass a user identifier from a third party provider to Unity Gaming Services
- Services Core failing to find all
IInitializablePackage
if an unity package implements it multiple times.
- All
IInitializablePackage
initialization time is now measured by Services Core.
CoreRegistryInitializer
now throws aServicesInitializationException
instead of an explicitNullReferenceException
when the dependency tree is null.- ActionScheduler updated to be thread safe
- A case where null configuration values were causing serialization issues
- Issue with stripping when authentication APIs are not used.
- Added diagnostic message length limit and telemetry count limit, so telemetry payload will not be rejected by telemetry service.
- Telemetry logs now use the
ENABLE_UNITY_SERVICES_CORE_TELEMETRY_LOGGING
define instead ofENABLE_UNITY_SERVICES_CORE_VERBOSE_LOGGING
.
- Log error instead of warning when core initialize with no cloud project id
- 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. - Log warning when building a project with core package included and without linking the project in project settings.
- NullReferenceException while telemetry was provided an empty file, fixed by introducing a null check
- DirectoryNotFoundException happened inconsistently on Switch, fixed by resolving racing condition issue
- NSUserDefaults handling null values
- Log warning when core initialize with no cloud project id
- Add a message in "Link your unity project" popup to inform the user has to sign-up
- Add Vivox public interfaces:
IVivox
,IVivoxTokenProviderInternal
, to enable interactions with the Vivox service.
- Crash on Switch when initializing telemetry persistence. Now telemetry won't persist anything on Switch.
- NullReferenceException while linking the project
- Issue with user roles and service flags
- Newtonsoft package dependency update to 3.0.2.
- Add QoS public interface:
IQosResults
and return typeQosResult
, to provide QoS functionality to other packages
- Code stripping when core package is not used
- Retrying to initialize all services after a first attempt failed.
- Add Wire public interfaces:
IWire
,IChannel
,IChannelTokenProvider
, and their dependencies, to enable interactions with the Wire service. - The
IUnityThreadUtils
component to simplify working with the Unity thread.
- Newtonsoft dependency to use the latest major Newtonsoft version, 13.0.1.
- Add
IEnvironmentId
component to provide the environment ID from the Access Token to other packages OrganizationProvider
&IOrganizationHandler
to enable package developers to access Organization Key.
IDiagnosticsFactory
component &IDiagnostics
to enable package developers to send diagnostics for their package.- Add
AnalyticsOptionsExtensions
withSetAnalyticsUserId(string identifier)
to set a custom analytics user id. IMetricsFactory
component &IMetrics
to enable package developers to send metrics for their package.
- Calling
UnityServices.InitializeAsync(null)
throwing a null reference exception.
- Getter methods for
ConfigurationBuilder
.
- Fix layout for Project Bind Redirect Popup for Light theme
IActionScheduler
component to schedule actions at runtime.ICloudProjectId
component to access cloudProjectId.
- Removed the Service Activation Popup
- Fix define check bug on Android and WebGL
- New common error codes:
ApiMissing
,RequestRejected
,NotFound
,InvalidRequest
. - Link project pop-up dialog
- Core registry throwing exceptions when domain reloads are disabled
- Added base exception type for other Operate SDKs to derive from. Consistent error handling experience.
UnityServices
class at runtime. It is the entry point to initialize unity services withInitializeAsync()
orInitializeAsync(InitializationOptions)
.InitializationOptions
to enable services initialization customization through code.IInstallationId
component to access the Unity Installation Identifier.IEnvironments
component to get the environment currently used by services.SetEnvironmentName
initialization option to set the environment services should use.- MiniJson.
IProjectConfiguration
component to access services settings at runtime.IConfigurationProvider
to provide configuration values that need to be available at runtime.
- DevEx integration into the editor.
- Service Activation popup.