[C++] Using Gameplay Ability System in a straightforward FPS Is It Overkill?

Hi everyone,

I’m working on a realistic first person shooter in Unreal Engine 5, and I’m considering using the Gameplay Ability System (GAS). From what I’ve seen, GAS is mainly used for RPGs and hero shooters since those genres have complex ability systems. My game is more straightforward, with the main inputs being shooting and zooming. Also, I’m developing the game in C++, not Blueprints.

Does anyone have experience using GAS in a minimalistic, non ability focused game with C++? Is it overkill for a simple FPS, or can it still be beneficial for managing actions like shooting, zooming, and other potential mechanics down the line?

Thanks in advance for any advice!

I’m also interested in using GAS for a third person shooter. If someone has any resources, examples / tutorials it’d be a great help.

For a bare bones FPS, without reloading or animated actions that need to be synchronised between clients, yes.

For anything beyond that, no.
GAS will take care of montage replication for you, even compensating for latency as best it can.
It’ll also handle actions blocking or cancelling others, such as sprinting being cancelled by a reload.

And way more.
The gameplay tags alone are extremely useful.

The GASShooter repo on github is a good resource for FPS/TPS using GAS:

1 Like

Are we able to set this up explicitly in BluePrint or do I need to go back and forth between C++ and the editor. All tutorials are old and I don’t know if that still applies or if there were updates exposing GAS to BP’s?

GASShooter is a mix of C++ and Blueprints.

I am not fully up to date with UE5’s version of GAS, but if UE4’s is anything to go by, you will need at least some work done on the C++ side to be able to work with it.

In Unreal Engine 5, I am just referring to the Gameplay Ability System in General.