Network Multiplayer Overview. GAS versus OWS, and other abstract questions

So I am coding my game to be a 3 v 3 multiplayer, and ideally I want it to run with a client server logic for more competitive gaming.

When I run the game as a listen server most of the code replicates fine. But as a client to server the games is not replicating properly. Specifically around character abilities and their animations. Even with custom events calling to the server to replicate.

In order to fix this, I’m looking into implementing the official GAS workflow, but I am also considering SabreDart’s OWS: Announcements

My question is, does anyone have any experience with using both of these systems and pros and cons? From what I can tell the OWS system maybe a bit more friendly to blue printers, versus the C++ folks, but any advice would be helpful.

Also-- Could I just make a new BP class, that stores the character abilities on the server side?

I guess from an abstract point of view-- where should I write server side code? Does that go into the “game mode”, or the “level BP”?

For example, currently I have a double jump animation that flips on the double jump, and the logic is in the Character BP. However the flip is not replicating from the client to the server, so the controlling player can see the flip animation, but on the other clients they do not see the flip. Even with a custom event set to multicast.

Would moving the flip animation code from the CharacterBP to the game mode or level BP make it execute off the server?

Where should I write my code that needs to originate from the server?