I love the idea of GAS: clean abstractions, composable gameplay, scalable systems. But the networking semantics around abilities still feel needlessly hard to reason about—especially once you combine:
-
NetExecutionPolicy (where/when the ability runs)
-
NetSecurityPolicy (whether the server accepts remote execute/terminate requests)
-
and the practical difference between Activate vs Cancel vs End under prediction.
In practice, this becomes a 3D truth table. But Unreal doesn’t really give you a canonical truth table—so you end up debugging behavior that changes shape depending on conditions like: listen server vs dedicated, owning client vs none, latency, prediction keys, and whether termination is “respected” remotely.
The most frustrating part is that some policy combinations appear valid but are effectively traps: they can produce “client thinks it stopped” vs “server keeps going” desyncs that only show up under real network conditions. Listen Server testing can be especially misleading.
What I’d love from Epic isn’t “more knobs.” It’s clarity:
-
A single authoritative truth table for (ExecutionPolicy × SecurityPolicy × {Activate, Cancel, End}), including which requests RPC, which are ignored, and what gets predicted vs authoritative.
-
A clearly labeled list of anti-pattern combinations (with warnings/asserts).
-
A small set of recommended templates by scenario: player-input predicted abilities, authoritative reactions (hit-stun/CC), AI abilities, interactions, “can’t be client-canceled” commitment actions.
GAS is powerful. But the networking semantics shouldn’t require tribal knowledge to avoid paying the same debugging tax everyone else already paid.