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]
Removed triviality assertions. TVariant doesn't meet most of them but TArray will treat it as if it does regardless.
#rnx
#rb Ryan.Gerleve
[CL 34348222 by ted percival 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]
Copy/move was round-tripping via the deep-lookup implicit AActor* conversion rather than trivial copying.
Also speeds up comparison by comparing weak pointers without resolving them.
[FYI] ryan.gerleve
[CL 33365539 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]