I wrote down my knowledge of working with the GameplayAbilitySystem plugin for the past year on my Paragon Demo into a sort of unofficial personal documentation and included a simple multiplayer-ready third person shooter sample project.
Maybe it’ll help someone learn how to use this powerful system.
Abilities implemented in the sample project: [TABLE=“align: left, border: 1, cellpadding: 1”]
Ability
Input Bind
Predicted
Blueprint or C++
Description
Jump
Space Bar
Yes
C++
Makes the character jump.
Gun
Left Mouse Button
No
C++
Shoots the gun. Shooting animation is predicted but the projectiles are not.
Aim Down Sights
Right Mouse Button
Yes
Blueprint
Character walks slower and aims down ironsights.
Sprint
Left Shift
Yes
Blueprint
Character runs faster while draining stamina.
Forward Dash
Q
Yes
Blueprint
Character dashes forward at the cost of stamina.
Passive Armor Stacks
Passive Ability
No
Blueprint
Character passively gains armor stacks up to 4. Each instance of damage reduces an armor stack.
Meteor
R
No
Blueprint
Player expends mana to target an area and drops a meteor on enemies doing AOE damage and stunning them.
It looks like a fix for the root motion source ability tasks is in master on GitHub, mostly likely we’ll see it in 4.25 or you can cherry pick it into your custom engine now.
In the GAS history I see what happens. How is the process of shipping these with an UE4 Version? Any chance to guess when all of these will be reviewed and get into the release?
On Pull request I see state of changes and whats in 4.24, but the view is global and not for GAS. It is possible to see such a Pull Request Overview for GAS, to see whats in review and whats inside the last UE4 releases?
I’m not really a git ninja so I can’t answer that, but starting with 4.24 I’m compiling a high level list of changes to GAS for each engine version from the official engine update changelog and from undocumented changes that we find.
Is GASShooter written in such a way that I could build off it for a dedicated server type game with good server side validation? For example with the hitscan stuff, is there support for server side validating there isn’t anything in between the shooter and the target, ie: no shooting through walls cause client said it could? Or would I be better off starting with my own initial project and building off of the concepts in the documentation?
GASShooter is not a production-ready template. It’s only a demonstration of some advanced GAS techniques. Server validation is left as an exercise to the developer as everyone’s needs are different.