I setup Gameplay Ability System in my project. (Custom AttributeSet, custom CharacterClass that installs the AbilitySystemComponent and can grant abilities to the character.) Working in Unreal 4.26.2 on MacOSX 10.15.7.
Abilities do work in multiplayer, such as doing a combo attack montage and have it play out on client and server in PIE. Then I made a GA_Sprint. The idea being the ability boosts the player’s speed and jump while active and can be cancelled later. In my case, the ability waits for an event to shut down. So I have the character sprint, speed increases, release the sprint button and it SendGameplayEventToActor(Event.Sprinting.End). Turns out this event only happens on the client. Ok, no big deal. However, big deals that I did find within the ability: IsLocallyControlled returns True for client and server when activated on the client. WaitNetSync task nodes that asked the server to wait would be blown right through. And despite Server Respects Remote Ability Cancel being set to true, it would not respond to EndAbility or CancelAbility being called from the client side of the ability.
I am able to work around it (I can ask IsInstigatorLocallyControlled successfully to branch and only do things on the client.) and then I can have the client explicitly call a server RPC to have it end on the server. But it just seemed odd that I couldn’t get the nodes that are specifically meant to make this task easy do anything at all in PIE Multiplayer testing.