Commit Graph

106 Commits

Author SHA1 Message Date
peter engstrom
7a0d3fc25f Iris - Added dependent actor test with dynamic filtering
#rb mattias.hornlund

[CL 29916993 by peter engstrom in ue5-main branch]
2023-11-24 04:26:27 -05:00
peter engstrom
86e3e192af Iris - Added Rotator3f and Rotator3d NetSerializers.
#rb Mattias.Hornlund

[CL 29717939 by peter engstrom in ue5-main branch]
2023-11-14 13:01:27 -05:00
peter engstrom
4388392eb3 Iris - Add concept of Ordered RPCs. Unicast RPCs are now ordered with respect to reliable RPCs and other unicast RPCs targeting the same actor. From client to server all reliable and unicast RPCs are ordered with respect to eachother, regardless of target actor.
#rb mattias.hornlund,louisphilippe.seguin

[CL 29515709 by peter engstrom in ue5-main branch]
2023-11-07 04:52:47 -05:00
bradley heath
737729cc7d Enable truncation warnings in ReplicationSystemTestPlugin.
#jira UE-165096
#rb LouisPhilippe.Seguin, Peter.Engstrom

[CL 29487648 by bradley heath in ue5-main branch]
2023-11-06 09:55:13 -05:00
peter engstrom
d0cf0013ea Iris - Don't apply state or call rep notify functions unless we've received the state or resolved object references. The behavior can be controlled via the cvar net.Iris.DispatchUnresolvedPreviouslyReceivedChanges which defaults to false.
#rb mattias.hornlund

[CL 28963486 by peter engstrom in ue5-main branch]
2023-10-20 09:26:49 -04:00
louisphilippe seguin
9731e25cf3 Iris dynamic filters
* Added ability to override the default class setting for individual actors via FActorBeginReplicationParams
* Added Net.Iris.PrintDynamicFilterClassConfig to be able to print the current class mappings

#jira UE-122442
#rb Mattias.Hornlund
#rnx

[CL 28836508 by louisphilippe seguin in ue5-main branch]
2023-10-17 08:23:06 -04:00
peter engstrom
4f67add494 Iris - Filter inclusion groups.
Filter inclusion groups are processed after dynamic filtering, filters implemented via UNetObjectFilter implementations, and their only purpose is to  optionally enable replication of objects that were filtered out. This allows for example an object to be spatially filtered out but then enabled by a team or view target group for example. No such groups are implemented by default, it's up to the user to implement the relevant game logic to create, update and destroy such groups. Only root objects may be added to filter inclusion groups, subobjects will be filtered like the root object.

#jira UE-180996
#rb mattias.hornlund, louisphilippe.seguin

[CL 28747651 by peter engstrom in ue5-main branch]
2023-10-13 07:18:13 -04:00
mattias hornlund
cddb73ede1 Iris
- Implemented optimized path only dequantizing dirty members of received statedata during apply

#rb Peter.Engstrom

[CL 28666208 by mattias hornlund in ue5-main branch]
2023-10-11 11:31:45 -04:00
louisphilippe seguin
9927292699 Iris:
* Added unit test calling RPCs on subobjects

#rb Mattias.Hornlund
#rnx

[CL 28502556 by louisphilippe seguin in ue5-main branch]
2023-10-05 12:04:52 -04:00
peter engstrom
571de1bca1 Iris - Mark properties as dirty when pushing out state.
#jira UE-196996
#rnx
#rb mattias.hornlund

[CL 28450822 by peter engstrom in ue5-main branch]
2023-10-04 08:06:35 -04:00
mattias hornlund
13826fcfd5 Iris
- Fixed assert in ReplicationWriter

#rb Peter.Engstrom

[CL 28342160 by mattias hornlund in ue5-main branch]
2023-09-29 10:31:03 -04:00
mattias hornlund
228791254f Iris
- Added support for sending attachments flagged as SendImmediate from PostDispatchTick

#jira UE-122456
#rb Peter.Engstrom

[CL 28318795 by mattias hornlund in ue5-main branch]
2023-09-28 10:58:24 -04:00
peter engstrom
fe6ca60113 Iris - Multiple huge objects support.
The max number of huge objects in transit is controlled via the cvar net.Iris.ReplicationWriterMaxHugeObjectsInTransit, defaulting to 16, but will be at least one. There's a tradeoff mainly between the connection characteristics to support and normal object replication scheduling when tweaking this value. On one hand you don't want to end up stalling object replication because the top priority objects are huge. So you want to be able to keep replicating huge objects during the maximum latency, including latency variation, and packet loss scenarios you want to provide the best experience possible for. On the other hand object deletion cannot be performed once the object is in the huge object queue. Consider this and how long time it will take to replicate the huge object queue depending on the average payload of a huge object.

#jira UE-123370
#rb mattias.hornlund

[CL 28283681 by peter engstrom in ue5-main branch]
2023-09-27 14:19:10 -04:00
mattias hornlund
02114941b3 Iris
-Added CVar to allow for additonal data packets to be written by ReplicationWriter as long as bandwidth settings are respected

#rb Peter.Engstrom

[CL 28136556 by mattias hornlund in ue5-main branch]
2023-09-22 10:55:20 -04:00
louisphilippe seguin
320f31002c Iris
* Split scope bitarray into GlobalScopeList and ScopeFrameData
* The GlobalScopeList is always up to date and should mostly be used outside the NetTickFlush update
* ScopeFrameData is synced at the start of NetTickFlush and valid until the end of the SendUpdate().
* The lists contained in ScopeFrameData are now protected from illegal access outside of NetTickFlush
* Added ensures that prevents creating new replicated root object during the SendUpdate operations.
* Added ensures that prevent changing filter conditions during the SendUpdate operations.
* Added support for replication of subobjects created inside a PreReplication callback.

#jira UE-195717
#rb Mattias.Hornlund, Peter.Engstrom
#rnx

[CL 28100078 by louisphilippe seguin in ue5-main branch]
2023-09-21 15:36:01 -04:00
peter engstrom
db5e67e89a Iris - Implement support for NetSerializer::Apply which if implemented will be called when pushing received state to the target state. RepMovementNetSerializer makes use of the new functionality to avoid overwriting quantization levels.
#rb louisphilippe.seguin, mattias.hornlund

[CL 28099891 by peter engstrom in ue5-main branch]
2023-09-21 15:33:57 -04:00
louisphilippe seguin
5f5608d185 Iris
* Move PreUpdate into its own loop and call it on all polling objects.
* Properly manage objects that set dirtyness on other objects inside PreUpdate/PreReplication
   * Now objects that get set dirty inside PreReplication but are not set to be polled will still be set dirty on the next frame.
* Deleted code that tested if such dependencies existed

#jira UE-192518, FORT-639953
#rb Peter.Engstrom
#rnx

[CL 27955686 by louisphilippe seguin in ue5-main branch]
2023-09-18 09:25:23 -04:00
steve robb
da9f5a828a Replaced TChooseClass with std::conditional_t.
#rb none
#jira UE-195271

[CL 27816205 by steve robb in ue5-main branch]
2023-09-12 19:55:55 -04:00
louisphilippe seguin
15e7786970 Iris
* Iris creation data will now replicate the true Outer of replicated subobjects.
* Refactored CallWriteNetRefHandleCreationInfo and made CallWriteNetRefHandleDestructionInfo.

#jira UE-127405, FORT-650140, FORT-650133, FORT-650141
#rb Mattias.Hornlund
#rnx

[CL 27798306 by louisphilippe seguin in ue5-main branch]
2023-09-12 13:20:56 -04:00
peter engstrom
ecc9028539 Iris - COND_SkipReplay properties are now treated as having a lifetime condition. Added missing tests for various lifetimeconditions.
#rnx
#rb mattias.hornlund

[CL 27627972 by peter engstrom in ue5-main branch]
2023-09-06 04:19:40 -04:00
peter engstrom
3283d0c1d3 Iris - Allow sending dynamic objects in SoftObjectPtr.
#rb mattias.hornlund

[CL 27408909 by peter engstrom in ue5-main branch]
2023-08-28 08:18:13 -04:00
mattias hornlund
6b55a9269d Iris
- Added friend declaration for inlined subclass to comply with recent compilers.

#rb Peter.Engstrom

[CL 27407575 by mattias hornlund in ue5-main branch]
2023-08-28 05:06:22 -04:00
mattias hornlund
797dde7c6b Iris
- Implemented initial support for being able to skip over data for objects that fail to be instantiated

#rb Peter.Engstrom

[CL 27371360 by mattias hornlund in ue5-main branch]
2023-08-25 05:15:41 -04:00
peter engstrom
827ee7fe12 Iris - Fix EnumNetSerializer issue with enum out of bounds values. Fixed tests to use same config init path as the serializer.
#rb mattias.hornlund

[CL 27371141 by peter engstrom in ue5-main branch]
2023-08-25 04:59:58 -04:00
peter engstrom
9461712637 Iris - Added missing prioritzation calls in test.
#rb trivial
#rnx

[CL 27029437 by peter engstrom in ue5-main branch]
2023-08-11 11:21:20 -04:00