Posted September 28, 2025 by Graypath
#Launch
I begin the journey to show the Gameplay Ability System for Unity to the general public (or atleast to the ones that find the itch page) and let them test it.
Everything or almost everything that I'm going to say here is already written in the page "What is Unity Gameplay Ability System?" of the documentation but writting it here again helps me reinforce a little the contents.
This project/package/framework/groupofscripts is born from my experience working with the Unreal Engine this last year for my former job. After 6 or 7 years working with Unity, finding the GameplayAbilitySystem in Unreal Engine was more or less a shock. A framework ready to use with all the things necessary to have interactions and mofications of values, mechanics, flags (GameplayTags) without having to think about it was amazing. How many times have I (or any of you) tried to make a prototype or a game and only thinks about the inmediate problems only? How to move, how to attack, etc. But after some time and development you want to have the posibility of changing the jump height or the movement speed and it's back to the drawing board to redesign a little bit the code so you can now access and change those values. And this pattern repeats at least 3 o 4 times more until you decide to make the stats its own class with methods to use and modify. But then how do you know which is the original value? How many buffs and debuffs does the player (or enemy) have? This type problems (and many others) are normal and an everyday thing so finding the GameplayAbilitySystem and seeing how it provided a solution from the get go made me think.
Unity is an engine that doesn't hold your hand to much when you start a project. It doesn't have a Character prefab ready to be controlled with its physics or other ways of movement (CharacterController for example) nor it has a model for you to make yours. It hasn't a Camera set to follow things, it doesn't even have Cinemachine installed from the beginning. The ability to create a Save file for your project is relegated to the PlayerPrefs but there is not a consensus about if it is really the best way to save a game. In a way I appreciate the freedom to make things like I want to but at the same time I've always felt like a explorer finding how to make the aforementioned Save System in the best way possible or the controller for the character. It's true that once you made a couple of them it's easy to replicate but you never know if something will be different this time.
With all this thoughts in my mind I decided to try and make a Gameplay Ability System for Unity so I could have a basic framework agnostic to the type of project that I could make in the future. Yes, I'll need to make my own Save System and PlayerController but I will have a framework ready to let me change the speed of my character from the very beginning. This package/framework/groupofscripts will allow me to focus more in the mechanics of the game instead of the "And now how do I access the Health in the enemy when I hit him with the weapon?". I can simply focus in the "How do I make the combat?" instead and let the Gameplay Ability System for Unity take care of the effects of the hit. In the same way I can let the Gameplay Ability System for Unity take care of changing my stats when I get some kind of buff or character progression. All this will free me to focus on the mechanics of the project.
The project/package/framework/groupofscripts doesn't have networking functionality. I don't know anything about the networking capabilities of Unity so there are no plans in the future to implement the online component. Never say never but I'm not saying maybe either. Let's first see how this thing evolve and once it's developed and tested enough we can think about expanding the scope.
With the origin and motivation for this project/package/framework/groupofscripts out of the way, now I can talk a little more of its current features:
As you can see, the Gameplay Ability System for Unity has the necessary features to start implementing mechanics and game concepts without problems. As a prototype/early release there are still features to implement and some polish to do in the ones already implemented, so let's see what I have in mind for future releases (in no particular order) :
And with that I think I don't have anything more to say. This is the first post of what I hope will be a list of improvements and features that I want to implement and the feedback that I recevied from whoever wants to try and use this package/framework/groupofscripts for their prototypes, projects, hobbies, jams or whatever they want to use.
Graypath