reznok / GMCAbilitySystem

An Unreal Engine plugin that adds an ability system to the General Movement Component plugin
MIT License
27 stars 12 forks source link

Abilities need a way to be referenced/cast to. #67

Closed tKanvas closed 1 month ago

tKanvas commented 1 month ago

Hello, because there is no way to reference or cast to abilities, it makes creating notifies that require separate or custom events inside said ability impossible to make. This is a huge issue because for many games (games with melee combat in particular), not having notifies that control attack logic by frame timings prevents abilities and montage transitions from being modular. Combo systems are the best example. For combos to feel smooth and responsive to the player, there needs to be a window where the player can transition to the next combo attack on input without having to wait the entire animation, and at the end of the window for the combo to reset. This is easily done with perfect precision using a notify and is the standard for most melee combo transition windows. In order to do this all that's required is a custom event inside the ability that has a branch with the condition of "save attack". If true it will set the "save attack" boolean to false and play the next attack montage on input, and if the condition is false then it uses a second custom event to simply reset the combo. You then take these two custom events and make the first one the combo continue notify and make the second one the combo end notify. It is a very simple yet powerful way to make a combo system function responsively to player input, however this is impossible without the ability to reference the custom events. https://youtu.be/9MCY7_n3s-g This video is an example in depth of how it works.

Aherys commented 1 month ago

As i already said in the discord, there is no need for your systeme to reference the current abilitie. The tutorial you point is not using an ability system, and ability system has different constraint, and it can totally be done with animation notify name.

However, it's already possible if you really want to have an ability who is reference itself into another actor. But i wouldn't recommand it, as it sound like a bad design. Ability have a weird lifetime, as they can be replayed.