Hello
We use MassEntity, an optimization we did for our game is to keep agents in the network bubble without removing them (and unspawning the entities). This enable us to pre-replicate every entities and send their networkID/config only once at the start, so during gameplay we never have to replicate it again (we also have entities that don’t move unless moved by something else and replicating its initial position would also improve performance).
This works, however when an entity in the fastarray is dirtied and replicated over the network, we can see a lot of these “disabled” entities (just cached in the fastarray, waiting for a PostReplicatedChange to enable itself again) writing some bits of data in the packets received by the clients.
Looks like it’s not the actual data but bits that correspond to the first property of each member of the replicated struct. We can see using UnrealInsights that it sends 3 bits/entity for a bunch a them (looks like it’s not all entities)
It our case it sends a “Agent” bit and 2 bit for “ReplicationID”, see the screenshots.
3 bits doesn’t look like a lot, but we can have 1000 items in the fastarray, so this adds up.
Are this bits sent required for the actual serialization/replication of the fastarray ? (ReplicationID is the member in FFastArraySerializerItem and is not even replicated)
If none of the item in the array gets dirtied, nothing is sent over the network and this works as expected
Note that we use Iris and the delta compression is enabled for the bubble
Thanks,
Anthony