This seems to be a result of how the changemask is handled for fast arrays. Because the changemask is a fixed set of bits (defined by IrisFastArrayChangeMaskBits), a single bit can represent multiple entries in an array. The larger the array, the more elements will be represented by a bit.
When the array is serialized by FArrayPropertyNetSerializer::SerializeDelta, all of these elements will be serialized. The elements that didn't change will still write some small amount of data depending on the fast array item's properties (such as 2 bits for the Replication ID), which can add up for large arrays.
Create a replicated actor with a fast array property.
Add a large number of elements to the fast array (>64).
After the array's initial replication, change one element of the array and mark only that item as dirty.
Expected: only that one element will be serialized and sent to the client
Actual: multiple elements will serialize a small number of bits each in addition to the one that was changed
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-268558 in the post.
1 |
Component | UE - Networking - Iris |
---|---|
Target Fix | 5.6 |
Created | Apr 8, 2025 |
---|---|
Resolved | Apr 9, 2025 |
Updated | Apr 9, 2025 |