I was working on my game in my free time and decided to create a much simpler and easy to use system alternative to GAS and I ended up creating the Attributes component, one single component can be attached to any actor to do all the jobs for you. I think I’m going to port it to Godot Engine later Pros :
- Simple, Straight forward, very easy to create, to use and to integrate
- Attributes can be stackable
- Attributes can modify values, or act as an Ability
- Attributes can be saved for a player on local or server
- Attributes contains Levels, Period and Duration, can be modified anytime at runtime to change how it behave
- An attribute can run, stop or modify another attribute at runtime
- If Attached to a controlled pawn it will calculate the Kills, Deaths, Assists, Suicides and Scores, and you can disable or add any based on your needs !
- Less bandwidth, replicates only the outcome to clients (Like health uint8 variable) and no need to reinvent the wheel (Relay on Character movements component and my Inventory component to achieve client side prediction and maintaining server authority)
- Attributes volume to run any attribute with a specific level
Cons :
- It supports the late client joiners for Attributes volume, but not for player’s applied attributes (I disabled this because I don’t need it in my case)