- Enabled use of NetTokens/NetTokenStore and NetTokenDataStores outside of Iris to facilitate exporting data from shared serialization paths
- NetTokenStore and NetTokenDataStores are now owned by NetDriver.
- Added support for CustomExport bunches to carry data assoiciated with NetTokenExports
GameplayTags
- GameplayTagNetSerializer now respects settings from GameplayTags.ini
- Implemented placeholder GameplayTagNetTokenDataStore.
GameplayTags are now using NetTokens to export data if running in the new dynamic mode.
#rb jodon.karlik, Ryan.Gerleve
[CL 36380672 by mattias hornlund in 5.5 branch]
As part of this change we also promote dynamic resolution and IO/PackageQueueDepth stats to Minimal since they're important for high level performance reporting.
Also fix up a few places that were redundantly using #if CSV_PROFILER around CSV macros.
#rb mickael.gilabert
[CL 34386798 by ben woodhouse in ue5-main branch]
This helps make sure reliable client RPCs sent right before the server gracefully disconnects a client by destroying their PlayerController are received, especially under packet loss.
Can be disabled by setting the cvar net.GracefulCloseEnabled.
#rb LouisPhilippe.Seguin, Peter.Engstrom
[CL 34379986 by ryan gerleve in ue5-main branch]
Log (warn) when an actor is removed from networking when it is already marked garbage.
Report actors that are not removed from ReplicationGraph when the world is cleaned up.
#tests Lego Fortnite flying around for several minutes, entering & exiting caves, with PktEmulation average.
#rb Ryan.Gerleve
[CL 34023091 by ted percival in ue5-main branch]
Avoid callbacks reinserting a removed actor into the global list by looking it up (via FGlobalActorReplicationInfoMap::Get()).
[FYI] ryan.gerleve
[CL 33844398 by ted percival in ue5-main branch]
Reduce the number of times weak pointers are resolved to objects within a single function; look up the raw pointer once and reuse it.
#rb Ryan.Gerleve
#rnx
[CL 33579307 by ted percival in ue5-main branch]
Adds resilience to RepGraph if there are actor lifetime bugs.
Off by default. Enabled by cvar `Net.RepGraph.UseWeakPointers true`. Can be changed at runtime.
#rb Ryan.Gerleve
[CL 33313595 by ted percival in ue5-main branch]
-Net.RepGraph.HandleDynamicActorRename is enabled, and
-A replicated actor is added before it's initialized and is routed as a dormant, spatialized actor (which is put on the ReplicationGraphNode_GridSpatialization2D::PendingStaticSpatializedActors list), and
-That actor is then destroyed.
Added automation test "Net.RenameReplicatedActor.EarlyRenameAndDestroy" to EngineTest to test this case and some supporting changes:
-Enable ReplicationGraph plugin for the EngineTest project
-Reset the timer for replication graph logging invalid actor info when a graph is initialized. This ensures the logs appear if multiple tests are run in quick succession.
#rb bradley.heath
[CL 32707299 by ryan gerleve in ue5-main branch]
Also, put more of the invalid actor logging behind the Net.RepGraph.LogDebugInfoPeriod to prevent log spam every frame an invalid actor is detected in the graph.
#jira UE-211081
#rb bradley.heath
[CL 32672002 by ryan gerleve in ue5-main branch]
-Only supports dynamically spawned actors, not placed actors
-UNetDriver::NotifyActorRenamed now has a PreviousOuter parameter
-Net driver notifies any ReplicationDriver (replication graph) of actor renames
-ReplicationGraph APIs added to update internal actor level tracking (this can be toggled with the cvar Net.RepGraph.HandleDynamicActorRename)
-Added cvar net.CleanUpRenamedDynamicActors that will tell clients to destroy an actor if the server moves it to a level that's not currently visible on the client (disabled by default to preserve current behavior)
#jira UE-201875
#rb LouisPhilippe.Seguin
[FYI] Todd.Eckert, Jon.Sourbeer
[CL 31915797 by ryan gerleve in ue5-main branch]
- Attempting to avoid a rare crash and log more info about the circumstances.
#rb Matt.Harris, Ryan.Gerleve
[CL 31600892 by arciel rekman in ue5-main branch]
[REVIEW] [at]louisphilippe.seguin
#rb LouisPhilippe.Seguin, Mattias.Hornlund
#tests Bug repro with chests, and general gameplay
[CL 30256705 by ryan gerleve in ue5-main branch]
* Added tracking stats to NetConnection that track number of rpcs delayed by unmapped guids and how many frames they were delayed by.
* Added tracking stats to NetDriver that track number of reliable bunches.
* Added console cheats to force only unreliable RPCs to be dropped. This can be used to better simulate a scenario where specific unreliable RPCs get dropped and not resent but not the adjacent property data sampled the same frame. Useful to test gameplay code using unreliable RPCs.
* NetEmulation.DropAnyUnreliable : drops a % of all unreliables sent
* NetEmulation.DropUnreliableOfActorClass: drops a % of all unreliables sent by a specific class
* NetEmulation.DropUnreliableOfSubObjectClass: drops a % of all unreliables sent by a specific class
* NetEmulation.DropUnreliableRPC: drops a % of all unreliables of the passed function name.
* NetEmulation.DropNothing: stops dropping unreliable rpcs
#rb Peter.Engstrom, Ryan.Gerleve
[CL 29721788 by louisphilippe seguin in ue5-main branch]