Using GAS with external prediction

Hi all.

We have a multiplayer project where an interaction game system has been already implemented with the custom internal prediction. Recently we decided to switch to the GAS. Then we faced an issue with that interaction system as the GAS is designed to replicate and predict most of the gameplay stuff internally.

The main question is: should we move all predictions out of our system to the GAS or should we refactor it and use FPredictionKey supplied from the GAS to operate the predictions inside of our interaction system? What are the best practices for designing systems for multiplayer games to work with the GAS?

Thank you.

P.S. Making replication of “non-related” stuff in the UAbilitySystemComponent looks like a bad design (like it is done with animations replication). If there are a lot of game systems then the ASC would hold a lot of unrelated networking stuff for all of these systems. It would be simply hard to maintain after all.