Ability System/Gameplay Effects performance

Hi,

we are testing the Ability System on our project.

It’s working great in terms of behavior, but in a context of 64 players + games, replication of this component is one of the most expensive items on our list.

We’ve started using KeyNeedsToReplicate(ObjID, RepKey) to optimize our objects

Would it make sense for you guys to integrate this to the ability system so that all of its replicated properties would only be processed if they have changed?

We are considering doing this, but are a bit scared of refactoring this system in case it changes in future integrations.

I am looking at 4.16 code, and what I found tips this API is not safe enough to ensure any property marked as dirty, would be correctly replicated to client when network is back to normal.

It seems UE4 used a buffer for net packet info with limited size (64 by default), which record the info about the properties
marked as dirty sending in that packet. Since it’s size is limited, it is possible the info got lost, resulting that , sever thought that property is replicated to client successfully, but actually client haven’t.

I am not sure what is the correct way to use KeyNeedsToReplicate(), maybe Epic developper can give an answer with authority.