Hello everyone!
I’m coming here today kind of desperate :p. I am attempting to create an Overwatch demake in the style of a 2D platformer. I’ve implemented many of the gameplay systems (like weapons, health, etc.), but I’ve been stuck on abilities for quite some time.
For the last month or so, I’ve been researching the various ways in which people implement ability systems into their Unity games. For example, I came across these 2 great forum posts ( here , and here ), this video from the official Unity YouTube channel, and several more resources; however, while trying to implement many of these methods, I’m finding, or at least feeling like, they don’t fit my needs.
I sat down and tried to make a list of the characters I want to add, their abilities, and then tried to categorize each ability in a way so I could see what logic some of them may share, etc. It seems to me that MOST of the abilities in the game are just different enough from each other that I can’t categorize them together. So, in my mind, that eliminated ScriptableObjects from being used.
What I need help with/what I’m asking:
I’ve read way too much into this, and I’m absolutely feeling stuck on this problem. I’m not sure how I should even begin to think about adding abilities in this style to the game. Overall, I’m asking how you would implement an ability system in this style:
- All characters have 2 abilities, some have 3, some have a passive ability.
- Some of the abilities are Toggleable (Soldier: 76’s sprint ability, Bastion’s transform ability), some are Timed (Tracer’s blink, Reaper’s invincibility form), some fire once (Winston’s leap), and so on. Is a big inheritance tree inevitable with this?
- Some abilities have multiple charges (for example, Tracer’s blink has 3 charges, each with a 3 second cooldown, 9 seconds total)
ANY tips on how to implement such an ability system would be beyond appreciated and I would be happy to clarify anything if needed (my brain is very fried).