Changelog
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.
[1.2.0] - 2025-10-15
Added
- Custom inspector for
.gshfiles.
Changed
- Removed error logging for unknown Lobby patch paths over Wire to support future Distributed Authority state updates.
Fixed
- Fixed assets being loaded despite being of the incorrect type.
- Fixed stale data used when deploying
.gshfiles via the deployment window. - Resolved an issue where the
Taskwould resolve before theNetworkManagerwas fully connected and synchronized when using Netcode for GameObjects. - Resolved an issue where the
Taskwould resolve before theNetworkManagerhad finished shutting down when using Netcode for GameObjects. - Resolved an issue where some settings on the
NetworkManagerwould stay changed after leaving a Distributed Authority session. - Fixed an issue where joining clients to a relay hosted game (either with Relay or Distributed Authority) would no be able to connect because the relay protocol is invalid for their platform. The RelayProtocol from the
_session_networkproperty is now ignored by joining and reconnecting players. Players will always use theRelayProtocol.Defaultvalue instead.
[1.1.8] - 2025-09-09
Fixed
- Resolved an issue where a rule without a reference could not be deployed.
[1.1.7] - 2025-08-19
Changed
- The user-provided allocation callback is now guaranteed to be invoked regardless of whether the session is created successfully.
- If session creation fails, the
OnAllocatecallback will still be invoked. This means you must check whether the Session is null before using it. The deallocation callback will be invoked once the server times out.
- If session creation fails, the
- The user-provided deallocation callback is now guaranteed to be invoked.
Fixed
- Resolved an issue where the server, upon failing to create a session, would be left in a broken state.
[1.2.0-pre.1] - 2025-08-06
Added
- Added support for Host Migration in lobbies:
- Added migration operations
GetMigrationDataInfoAsync,DownloadMigrationDataAsyncandUploadMigrationDataAsync.
- Added migration operations
- Added support for Host Migration in sessions:
- Added
WithHostMigrationsession option to enable automatic netcode snapshots at a configurable interval.- It requires an implementation of
IMigrationDataHandlerwhich defines how data is generated and applied. - We provide a default migration data handler implementation for Netcode with Entities (Minimum required version 1.7.0)
- It requires an implementation of
- Added migration data methods to
IHostSession:GetHostMigrationDataAsyncandSetHostMigrationDataAsyncfor manual implementations. - Added host migration flow to restart the network on session host changed
- Added
SessionHostChangedandSessionMigratedevent onISession. - Added optional parameter
preserveRegiontoRelayOptionsto configure relay reallocation behavior during host migration. Setting this to true saves the region of the first relay allocation and reuses when a relay server is reallocated during host migration.
- Added
- Adding concurrency control settings to the lobby service and to sessions. When enabled, a If-Match header will be sent and an exception will now be thrown in case of conflict for the following operations:
- deleting a lobby or session
- removing a player from a lobby or session
- updating a lobby or session player
- updating a lobby or session
- Added
SessionObserverclass that allows to listen toISessionlifecycle for a specificISession.Type. - Added
AddingSessionStartedandAddingSessionFailedevents insideIMultiplayerService. - Added overloads for
WithRelayNetworkandWithDistributedAuthorityNetworkto enable manual setting of the underlying network protocol. Defaults left as before: Most platforms keep using DTLS as a default connection and WebGL still defaults to WSS. Use theRelayNetworkOptionsvariant to override the default behavior. - Added a
WithDirectNetworkoverload that acceptsDirectNetworkOptionswhich takesListenIpAddressandPublishIpAddressparameters. - Added a
WithDirectNetworkoverload that accepts no arguments, ensuring backward compatibility with the previousWithDirectNetworkoverload. - Added player name integration into multiplayer sessions
WithPlayerName()session option for a player to provide their name into a multiplayer session.GetPlayerName()extension method to the sessionIReadOnlyPlayermodel to retrieve a player's name.
- Added
IsServerproperty inISessionto validate if the local owner of the session handle is a server managing the session. - Added
HasPlayermethod inISessionto easily validate if a player is in a session. - Added
GetPlayermethods inISession&IHostSesssionto easily access a specific player model by player id. - The default network handler implementation for netcode for entities will now automatically create client & server worlds if none are available when starting a network connection.
- Added an Inspector for Matchmaker queue files to allow the edition of the most common properties of the Matchmaker Queue configuration in the editor.
- Added
Networkproperty to provide control over the network managed by the Session.IHostSessionprovides theIHostSessionNetworkinterface which lets you control the network connection for the session.ISessionprovides theIClientSessionNetworkinterface which lets you access the network state and relevant events.- Come in and out of games within the same multiplayer session.
- Wait for specific conditions before starting the network connection and your gameplay
- Session reaching max players
- All players marking themselves as ready through player properties
- Etc.
- Added
Networkproperty onISession(IClientSessionNetwork) &IHostSession(IHostSessionNetwork) to provide control over the network managed by the Session. This can let you come in and out of games within the same multiplayer session. - Adding parameter validation for
IMultiplayerServerService.StartMultiplaySessionManagerAsync. AnArgumentNullExceptionwill be throw if the following values are not providedMultiplaySessionManagerOptionsMultiplaySessionManagerOptions.SessionOptionsMultiplaySessionManagerOptions.MultiplayServerOptions
- Added a new
MatchmakerQueueAssetclass created when importing.mmqfiles that can be referenced from runtime assets. - Added a new
BuildProfilereference andBuildOptionssettings to the.gshfile description to allow Multiplay Server Hosting build deployment to perform more specific builds. - Added an Inspector for
.gshfiles to allow the edition of the most common properties of the Multiplay configuration in the editor.
Changed
- Trying to use an unsupported connection protocol on WebGL will throw an
ArgumentExceptioninstead of logging a warning message. - Matchmaker queue and environment configuration files will display their status against the remote configuration in the cloud project from the Deployment Window.
- Changed
IMultiplaySessionManager.StartMultiplaySessionManagerAsyncto await the full allocation and session initialization flow and to cover all potential errors. - Removed exception thrown when trying to access the session property in
IMultiplaySessionManager.Sessionas we now guarantee full initialization.
Fixed
- Resolved an issue where a host could not rejoin the same session after leaving while using Distributed Authority.
- Resolved an issue where a rule without a reference could not be deployed.
[1.1.6] - 2025-07-28
Fixed
- Resolved an issue where a host could not rejoin the same session after leaving while using Distributed Authority.
[1.1.5] - 2025-07-14
Fixed
- Fixed an internal task scheduling issue that caused Session Create and Join operations to hang indefinitely on WebGL.
[1.1.4] - 2025-06-18
Added
- Added access to session properties on query results.
- Added host id to session network.
- Added better error message for a GUID collision edge case for Multiplay hosted sessions.
Fixed
- Fixed first time Matchmaker queue file deployment that would leave the Matchmaker disabled if no Matchmaker Environment file was deployed along the queue files.
- Fixed the potential for an awaited successful session creation getting interrupted by an exception thrown from a registered event handler.
- Fixed the network connection attempting to parse an IP address as IPV6 on platforms where IPV6 is not supported.
[1.2.0-exp.4] - 2025-04-10
Changed
- Soft dependency to the Services Deployment Api in the QuickStart was changed from
com.unity.deployment.api@1.1.0tocom.unity.deployment@1.4.1.
Fixed
- Creating a new Matchmaker Queue from the QuickStart menu doesn't log a path warning issue anymore.
- Fixed first time Matchmaker queue file deployment that would leave the Matchmaker disabled if no Matchmaker Environment file was deployed along the queue files.
[1.1.3] - 2025-04-02
Added
- Added session refresh after subscription to events.
Fixed
- Fixed DGS not properly deleting the lobby when it leaves it or stops.
- Fixed inability to catch exception in the Matchmaker process if thrown after the match was found.
- Fixed lobby heartbeat start on host changed.
- Fixed
ArgumentNullExceptionbeing thrown when selecting specificDeploymentfiles in the Project Window. - Fixed inconsistent session changed events.
[1.2.0-exp.3] - 2025-03-21
Added
- Added Matchmaker Onboarding Section and presets for Multiplayer Center
[1.1.2] - 2025-03-03
Fixed
- Calling
SubscribeToLobbyEventsAsyncmultiple times on the same lobby no longer throws exception.
[1.1.1] - 2025-01-31
Added
- Added migration path validation to warn users when they are using incompatible packages namely the lobby, matchmaker, multiplay and relay standalone SDK.
Changed
- Increased Lobby max player count to 150.
- Removing a player that is not in the lobby no longer throws a
LobbyServiceException. Instead, if verbose logging is enabled, it will log that the player was not found. - Updated error when trying to access
MultiplayService.Instancewhile in the editor. - Subscribing to lobby events when a player is already subscribed no longer throws a
LobbyServiceException. Instead, if verbose logging is enabled, it will log that the player is already subscribed.
Fixed
- Fixed lobby so it no longer throws
ArgumentException: An item with the same key has already been added. - Fixed unauthorized error when trying to remove other players from a lobby, with service account authentication.
[1.2.0-exp.2] - 2025-01-22
Added
- Increased Lobby max player count to 150.
- Added migration data methods to
LobbyHandlerandIHostSession.
[1.2.0-exp.1] - 2024-11-27
Added
- Added Lobby migration data methods.
[1.1.0] - 2024-11-19
Added
- Added more detail in
SessionExceptionmessage forMatchmakerAssignmentFailedandMatchmakerAssignmentTimeout, and exposed the Error property viaToString(). - Added 2 new events under
ISession,ISession.PlayerLeavingandISession.PlayerHasLeft.
Changed
- Marked the
ISession.PlayerLeftevent as obsolete. It is getting replaced by the newISession.PlayerLeavingevent. - Increased timeout when uploading files from a build.
Fixed
- Fixed Session backfilling configuration:
- Fixed
WithBackfillingConfigurationsettingbackfillingLoopIntervalas theplayerConnectionTimeout. - Added the missing
playerConnectionTimeoutparameter toWithBackfillingConfiguration.
- Fixed
- Fixed the
ISessionextension methodGetMatchmakingResultswhen used with MatchId Matchmaking and non-backfill Multiplay Matchmaking. - Deprecated the
WithBackfillingConfigurationmethod and replaced it with the corrected method with the same name and the missingplayerConnectionTimeoutparameter. - Fixed Lobby Vivox interoperability issues around joining certain channel types or joining channels that didn't match a Lobby ID when trying only to use the Vivox SDK while the Lobby SDK was present in the project.
- Fixed the Lobby Vivox channel validation to allow for positional 3D channels.
- Fixed the Server Query Protocol (SQP) responses from Multiplay Hosting servers to include correct Version and Port.
- Fixed potential issue when querying for fleet status in the Deployment Window.
- Fixed Help URL links.
[1.0.2] - 2024-10-28
Fixed
- Fixed WebGL support for Distributed Authority.
[1.0.1] - 2024-10-21
Fixed
- Fixed an issue preventing Multiplay config files proper reimport and deploy.
[1.0.0] - 2024-09-18
Added
- Added QoS region selection for Distributed Authority session creation if none is passed.
- Added the ability to query the session the player has joined with
IMultiplayerService.GetJoinedSessionIdsAsync. - Added the ability to reconnect to a session with
IMultiplayerService.ReconnectToSessionAsync. - Added the ability to exclude paths on a Game Server Hosting build that supports basic patterns (*, ?).
- Added validation when accessing the
IMultiplaySessionManager.Session. - Added
$schemadoc field to both Queue and Environment config files. - Added documentation on
defaultQoSRegionName. - Added settings to game server hosting configuration schema:
- Added server density settings (
usageSettings) infleets.
- Added server density settings (
Changed
- Updated
com.unity.services.wirefrom 1.2.6 to 1.2.7 to fix reconnection issues notably with the lobby. - Updated matchmaker deployment window:
- Made
defaultQoSRegionNamea valid region:North America. - Ensured
backfillEnabledis no longer ignored.
- Made
- Made the QoS Calculator class internal.
- Marked server hardware settings as deprecated in
buildConfigurationsin Game Server Hosting configuration schema. - Updated documentation to replace Game Server Hosting with Multiplay Hosting.
- Updated minimum required version for Netcode for GameObjects from 2.0.0-pre.3 to 2.0.0.
- Updated minimum required version for Netcode for Entities from 1.3.0-pre.2 to 1.3.2.
- Changed connection metadata visibility to only be visible to members of the session.
- Updated Distributed Authority session properties.
- Enhanced exception messages on
ClientServerBootstrapworlds checks.
Fixed
- Fixed matchmaker deployment window:
- Fixed deploying queue when the remote queue has filtered pools.
- Fixed deploying queue when the remote queue has no pools.
- Fixed default value for session property constructor.
- Fixed
SessionHandlerdropping property's index when updating them. - Fixed session cleanup when a player polls for session updates and is kicked from the session.
- Fixed session error on deleting a non-existing session.
- Fixed port randomization compatibility with Network for GameObjects.
- Fixed occasional failure to fetch matchmaking results from P2P matches:
- Properly uploaded these results.
- Fixed matchmaking results 204 exception.
- Fixed broken links in Multiplay Hosting documentation.
- Fixed error relating to
ENABLE_UCS_SERVERscripting define to support limited server functionality via Play Mode using a non-server build profile. - Fixed
TaskCanceledExceptionwhen starting an SQP server in Game Server Hosting. - Fixed
SavePropertiesAsyncnot saving session fields if properties are unchanged. - Fixed typo in
SessionError.
[1.0.0-pre.1] - 2024-07-18
Added
- Added ability to update the session published port with
NetworkConfiguration.UpdatePublishPortto enable auto-port selection in network handlers. - Added View in Deployment Window button for Game Server Hosting and Matchmaker config-as-code resource files, dependent on Deployment package version 1.4.0.
Changed
- Updated default values for direct network options:
listenIpandpublishIpdefault to127.0.0.1.portdefaults to0.
- Updated network support in sessions for Netcode for Entities to version 1.3.0-pre.2.
- Updated network support in sessions for Netcode for GameObjects v2 to version 2.0.0-pre.1 (required for Distributed Authority).
Fixed
- Fixed issue where Game Server Hosting deploy upload may fail in some cases.
[0.6.0] - 2024-07-10
Added
- Added Apple privacy manifest.
- Added missing List and Delete APIs for Build configuration and Builds.
- Added missing documentation.
Changed
- Renamed session connection operations to network branding.
- Updated
com.unity.services.wiredependency to 1.2.6.
Fixed
- Fixed issue where the notification system would fail to reconnect silently.
[0.5.0] - 2024-06-18
Added
- Added session matchmaking support for peer-to-peer and dedicated game servers.
- Added Multiplay server lifecycle support & server session management.
- Added matchmaker backfilling support for server sessions.
- Added session authorization flow for distributed authority.
- Added session filters for session matchmaking and queries.
- Added automatic attempt to leave a session when leaving the application/play mode.
- Added session viewer editor window for better observability.
- Added matchmaker deployment support.
Changed
- Made minor improvements to sessions.
[0.4.2] - 2024-05-28
Changed
- Updated documentation.
[0.4.1] - 2024-05-17
Changed
- Updated some name changes in Netcode for GameObjects v2.0.0-exp.3.
[0.4.0] - 2024-04-23
Changed
- Renamed package from Multiplayer Services SDK to Multiplayer Services.
[0.3.0] - 2024-04-04
Added
- Added support for Distributed Authority with Netcode for GameObjects 2.0.
Changed
- Ensured deployment window integration compatibility with Multiplay package:
- Multiplay owns the integration from [1-1.2).
- Unified package owns it onwards.
[0.2.0] - 2024-03-26
Added
- Added session delete API.
Changed
- Set player properties on join.
- Abstracted session host concept.
- Refactored
SessionInfo.
Removed
- Removed
PlayerProfilefromISession.
Fixed
- Fixed session to honour session data when creating lobby.
[0.1.0] - 2024-03-11
Added
- Initial Multiplayer SDK sessions implementation.
- Added common Multiplayer Backend behind a feature flag:
- Standalone functions available and support for the matchmaking flow (matchmake into a CMB session).
- Added IP Address as an optional field in Multiplay ServerConfig.
Removed
- Removed
PostBuildHookandEventConnectionStateChanged.
[0.0.7] - 2023-08-23
Changed
- Updated documentation.
[0.0.6] - 2023-08-21
Changed
- Updated README.
[0.0.5] - 2023-08-16
Changed
- Updated the minimum supported Editor version to 2021.3.
- Updated README with links to consolidated SDK documentation.
[0.0.4] - 2023-08-15
Changed
- Updated
.npmignore.
Removed
- Removed samples from the package.
[0.0.3] - 2023-08-14
Changed
- Unexported
MatchHandlerImpl. - Made API changes.
[0.0.2] - 2023-08-10
Changed
- Updated README.
[0.0.1] - 2023-08-09
Added
- Initial SDK.