Legacy
Last updated
Last updated
WARNING: You are viewing changelogs for old versions of the plugin.
Fixed an issue where party state cleanup would sometimes fail when leaving the party as a client. This caused party player actors to stay alive even after leaving the party. With this change the PreLeaveParty
function has been renamed to CleanupPartyState
in the KronosPartyState
class. Please make sure to update your code if you had this function overridden in C++ before.
Fixed an issue in KronosOnlineSession
class where the CanAcceptSessionInvite
function had the "Session" param as output instead of input. This caused the session to reset into an invalid state when accepting the invite. Please make sure to update your blueprint if you had this function overridden before.
The "Session" param of OnGameSessionInviteAccepted
and OnPartySessionInviteAccepted
events in KronosOnlineSession
have also been turned into constant reference.
Added the ability to reconnect parties after returning to the main menu from a match! This is only the first iteration of this feature, and I expect to improve it with later releases. For a user guide, please refer to the page of the documentation. Several new things have been introduced for this system, see below.
Added ReconnectKronosParty
async node to the plugin.
Added CancelReconnectKronosParty
async node to the plugin.
Added ClientReconnectPartyDelay
and ClientReconnectPartyAttempts
config params to the plugin.
Added three new properties to KronosLastPartyInfo
. It now also stores the last party session id, player count, and (in C++ only) the session settings of the party.
Added bUseVoiceChatIfAvailable
setting to KronosHostParams
and KronosSessionSettings
. This allows you to set the bUseLobbiesVoiceChatIfAvailable
session setting in case your Online Subsystem depends on it for VOIP integration.
Added LeavePartyInternal
function to KronosPartySubsystem
(C++ only). The previous LeaveParty
function is now only used for user requested disconnects. If you have extended the plugin from C++, and have cases where the player must leave the party due to game control flow, please use this new internal function instead.
Added OnKronosMatchUpdated
event to KronosOnlineSession
.
Added OnKronosPartyUpdated
event to KronosOnlineSession
.
Added initial replication handling to KronosLobbyHUD
. This system brings two new nodes to the HUD class. See below.
Added OnInitialReplicationFinished
event to KronosLobbyHUD
.
Added HasInitialReplicationFinished
function to KronosLobbyHUD
. You can override this function to set variable replication requirements for the HUD.
Added the ability to recreate a session from previous session settings (C++ only). Set the SessionSettingsOverride
param in the KronosHostParams
to recreate a session from its native state. If set, all other params will be ignored in the host params. The session owner id will be updated automatically if necessary.
Added connection lost error message (after host left the match) to the examples shipped with the plugin as it was missing. You can find it in BP_KronosExampleLobbyPlayerController
.
Fixed an issue with party cleanup, where party player actors would not get destroyed after the player has left the party.
Fixed an issue with KronosLobbyHUD
where sometimes the player connected/disconnected events wouldn't be called due to late replication of game state.
Fixed an issue with matchmaking where using a specific session query for session owner id would not find any sessions.
The SEARCH_USER
query setting is no longer used by the plugin because it was causing owner id based specific session query to fail for some reason. The removal of this setting does not affect matchmaking in any way. However, I hope to debug this in the future and re-introduce it if possible in case an Online Subsystem wishes to use this.
The KronosNameplateComponent
now destroys the nameplate widget when the component is destroyed.
The KronosEditor
module has been reworked to better segment its code.
The KronosEditor
module now has its own EditorStyle
as per engine convention.
Updated the description of UpdateKronosSession
async nodes.
Updated copyright notice in plugin module build files and fixed missing copyright notice in KronosFriendsSubsystem
.
Please note: For the 2.0 release I want to overhaul some aspects of the plugin that are currently problematic. Due to this, the 2.0 update may NOT be 100% backwards compatible with previous versions, and may require you to manually update some code in your project. If any breaking changes are introduced, a complete migration guide will be available for all users.
Added support for Unreal Engine 5.2!
Added the ability to spawn player actors for party members! Several new things have been introduced to allow this feature to work seamlessly, see below.
Added a new KronosPartyPlayerActor
class. This actor represents a single party member visually in the game world. Optionally it can also render a widget to the screen at the actor's location automatically.
Added a new KronosPartyPlayerStart
class that can be used to mark spawn locations for party player actors. You can find this class in the "Place Actors" tab inside the "Kronos Matchmaking" category.
Added a custom "Kronos Matchmaking" category to the "Place Actors" tab of the engine.
Added PartyPlayerActorClass
param to KronosPartyState
. If set, one actor will be spawned automatically for each party member.
Added several console commands to the plugin to help with debugging. For the full list of console commands please refer to the Console Commands section of the documentation on the Testing & Debugging page.
Changed the "PartyPlayerEntryBox" widget binding in the KronosPartyWidget
to be optional instead of required.
Updated the party cleanup process. The KronosPartyState
actor is now getting destroyed before leaving the party.
Updated the example content provided with the plugin to showcase the new party player actor spawning system.
Fixed a potential issue where the KronosNameplateComponent
initialization wouldn't abort if its owning actor was getting destroyed.
Fixed an issue in the example content provided with the plugin where players were unable to invite players to the lobby due to the platform invite UI not appearing.
The plugin now ships with a new set of example blueprints, widgets, and maps. You can find these examples in the Content Browser. Make sure that the "Show Engine Content" and "Show Plugin Content" settings are enabled.
The plugin is now integrated with the GameplayDebugger
. A custom gameplay debugger category has been implemented for Kronos which will draw matchmaking and session information to the screen in real-time. The gameplay debugger can be activated with the apostrophe (') key by default, or with the EnableGDT
console command.
Added ClientFollowPartyAttempts
param to KronosConfig
. This allows you to specify the amount of search attempts to make for the party leader's session when following the party into a session.
Added CopyRegisteredReservations
function to KronosReservationSubsystem
and KronosStatics
. This function is intended to be used as the host reservation before traveling to a new map in an online match. Going forward, this is the recommended way of setting the host reservation instead of MakeReservationForGamePlayers
.
Added GetOwningPartyClient
function to KronosPartyPlayerState
.
Changed the SETTING_USERESERVATIONS
session setting's type from bool
to int32
because the Steam Online Subsystem doesn't support bool queries.
Updated the code documentation of several matchmaking and host params.
Updated copyright notice in plugin source files.
Fixed an issue where the editor would crash when attempting to create a party in PIE.
Fixed an issue where a reservation was attempted to be removed with an invalid player id when toggling the debug camera in the GameplayDebugger
.
Fixed an issue where players would sometimes crash when joining a party.
Fixed an issue where the FollowPartyToSessionFailure
and OnFollowPartyFailure
events weren't getting called when the session was not found.
Added a new subsystem called KronosFriendsSubsystem
. This subsystem will implement online friends interface related events and utility functions.
Added IsFriend
function to KronosStatics
and KronosFriendsSubsystem
.
Added a new LastPartyInfo
struct to the KronosPartySubsystem
that contains some context information about the last party that we were a part of. This information is updated automatically when we create or join a party.
Added GetLastPartyInfo
function to KronosStatics
and KronosPartySubsystem
.
Added HasLastPartyInfo
function to KronosStatics
and KronosPartySubsystem
.
The host reservation feature of the KronosReservationHost
beacon is now an array instead of a single reservation. This allows us to auto register multiple reservations, which in turn makes it possible to preserve all reservations as is before transitioning from the lobby to the match (keeping the information of who joined from the same party).
Added GetReservations
function to KronosReservationHost
. This can be used to retrieve all registered reservations in their current state.
Added SetHostReservations
function to KronosStatics
and KronosReservationSubsystem
.
Added GetPlayerControllerFromUniqueId
utility function to KronosStatics
.
The GetPlayerStateFromUniqueId
function in KronosStatics
no longer returns the pointer as constant.
Exposed the FindReservation
function of the KronosReservationHost
to blueprints.
Optimized unique id IsValid
calls throughout the plugin's code base.
Fixed an issue where reservation timeouts were not cleared properly resulting in pointless timeout attempts.
Fixed an issue where the reservation's owner unique id wouldn't be cleared when the owner left.
Fixed a potential issue where the PreReservationOwnerRemoved
event of KronosReservationHost
would be called multiple times while removing a reservation.
Fixed misleading code documentation for the LeaveKronosMatch
node regarding its completion delegate.
Fixed missing code documentation for the KronosIdentitySubsystem
class.
Blueprint nodes with unique return value names now use the ReturnDisplayName
function metadata as they should.
Added an overridable StartSearchPass
function to KronosMatchmakingPolicy
.
Added an overridable GetEloSearchRangeFor
function to KronosMatchmakingPolicy
.
Added PreReservationOwnerRemoved
event to KronosReservationHost
. This can be used to notify reservation members that the owner is leaving (e.g. leave and reconnect to the party), or to assign a new owner to the reservation.
Added GetPlayerStateFromUniqueId
utility function to KronosStatics
.
Added ToString
support for the FUniqueNetIdRepl
type in blueprints.
Added IsValid
utility function for the FUniqueNetIdRepl
type in blueprints.
Added IsValid
utility function for several Kronos types in blueprints such as FKronosMatchmakingParams
, FKronosHostParams
, FKronosReservation
, and more.
The plugin's C++ code is now more tightly integrated with blueprints. Advanced features such as native make/break functions, script methods, and blueprint autocasts have been implemented where needed.
Fixed an issue where matchmaking would use an incorrect EloRange
for subsequent matchmaking passes.
Fixed an issue where the PreRegisterReservation
function's base C++ implementation wasn't getting called when overriding it in blueprints. If you have overridden this function in blueprints, then please delete the function and re-override it.
Added GetPlayerElo
and GetPlayerData
functions to KronosPartyClient
.
Added IsLocalPlayer
function to KronosPartyClient
and KronosPartyPlayerState
.
Added an option for KronosLobbyGameMode
to only start lobby countdown when all players are ready.
Added comparison operator support (equal, not equal) for the FUniqueNetIdRepl
type in blueprints.
Fixed an issue where matchmaking would continue after an unsuccessful matchmaking pass even though it was not supposed to in the given matchmaking mode (e.g. in JoinOnly
mode).
Added an overridable PreRegisterReservation
function to KronosReservationHost
.
Added OnReservationRegistered
and OnReservationRemoved
events to KronosReservationHost
.
Added OnInitialized
event to KronosReservationHost
and KronosPartyHost
.
Exposed the following functions to blueprints in KronosReservationHost
: GetMaxNumReservations
, GetNumReservations
, GetNumConsumedReservations
, and DumpReservations
.
Added CompleteReservationById
function to KronosStatics
.
Added GetPlayerUniqueId
function to KronosStatics
. This is a helper function that gets the player's unique id from their player state.
Added GetReservationHost
function to KronosStatics
.
Added GetPlayerElo
function to KronosPartyPlayerWidget
.
Exposed properties of KronosReservation
and KronosReservationMember
to blueprints.
The UKronosReservationSubsystem::PlayerHasReservation
function has been turned into a constant function.
Added support for Unreal Engine 5.1!
Added a new component called KronosNameplateComponent
which can be used to render widgets above players heads.
Added a new ServerTravelToLevel
function to KronosStatics
. Blueprint projects can use this instead of relying on the ExecuteConsoleCommand
node to initiate server travels.
Added OnPartyPlayerEloChanged
event to KronosPartyPlayerWidget
.
Removed bAutoRemoveWidget
from KronosLobbyPlayerWidget
as it is no longer needed.
Please note: Unreal Engine 4.26 version of the plugin is no longer getting updates due to Epic only allowing updates for the three latest engine versions on the Marketplace. If you need an up-to-date version for this engine release, please contact me privately.
Improved reservation registering. Now pending duplicate reservations are cleaned up instead of returning a DuplicateReservation
error.
Fixed a potential issue with the session cleanup process, where if the session was being destroyed already the cleanup would just complete immediately.
Added three new blueprint nodes to the KronosLobbyGameMode
class: GetLobbyState
, GetLobbyTimer
, GetNumPlayersRequired
.
Removed the SkipReservation param from the JoinKronosParty
node as it was irrelevant. Party sessions don't make use of reservations.
Changed the default server name to "<PlayerName>'s Session". This can be overridden via the UKronosMatchmakingPolicy::GetDefaultServerName
function.
FNames
in function arguments are no longer sent by reference.
The AKronosReservationHost::DumpReservations
function has been turned into a constant function.
Initial release.
Please note: Unreal Engine 4.27 version of the plugin can no longer be updated through the Marketplace due to Epic only allowing updates for the three latest engine versions. An up-to-date version for this engine release is available through the Kronos LTS program. For more information please visit the page of the website.
Additional note: The project has also been updated to include new features of the plugin. If you already have it downloaded, then please make sure to update it before opening the project.