So I recently got the system and I have been trying to figure out the ins and outs of the system ever since.
I got stuck on many simple things and for the most part your tutorials helped me figure out what I was either doing wrong or how to approach a problem. So that was cool and helpful.
But I have still some things that I am trying to figure out how to do at all, and several things that I have figured out how to do, but I am unsure if they would be considered best practice.
Anyway, enough of preamble, I really really like the system and hope it can achieve all I am looking for it to accomplish, so let us get down to the heart of the matter.
#1: I guess is maybe a bug;
If I had an animation to play that I wanted to loop. It would work fine if the animation was shorter than 1.0 seconds, since that is the default length of the loop property. But, something that took me some trial and error to find out was that, if you have animation longer than 1.0 seconds both the loop length and ability length needed to be equal to or greater than the animation length for it to loop. Otherwise it would not loop and I assume because the animation would start, but would never signal that it was complete, thus not allowing it to start again. If the loop length and ability length was exactly the same length as the animation, it would still not loop in some cases. I think this was due to possible rounding error of the animation length. So increasing the loop length and ability length by 0.01 would allow it to loop again. Maybe this is just my lack of understanding, but maybe it is something that needed fixing.
#2: An issue I could not find a solution for;
I would like to have something like an ability going with an animation, and allow it to be cancelled out in the start or in the end of the ability - before committing to the ability and after it had done itâs âthingâ. Sort of an abort window in the start for a certain period, in case you quickly decided to do something else, like a dodge away. Let us say for the sake of example the first 0.5 seconds. Also, in the end of the ability, the animation could also be cancelled, sort of like if the damage had been dealt and now you could, if you wanted, shorten the last bit of the animation by cancelling it out.
In both these cases (the start and end of the ability), I would like to react to something less specific than a bunch of inputs but rather something generic, like âany keyâ, so if the player controller either moved or used an input that would start another ability, regardless of which input that was. So a âcancel on any keyâ.
I tried channeling in the ability settings, but could not get it to work well, and required a lot of specific inputs to look for, and even with this approach I could not figure out how to cancel on moving.
I tried a condition check, but couldnât figure out a good way to check for generic input that would not be confused with that initial input that started the ability in question.
Any help on this issue would be appreciated.
#3: It would be cool to have a tutorial that is a bit more complex;
To understand what is the best practices, flows and ways to communicate with several abilities interacting. For example:
-1 Pawn 1 does ability A, an axe swing. Ability A scans for targets. One of the targets, Pawn 2, is using another ability that interupts swings. Have pawn 1 cancel ability A, transition into ability B, some form of ability showing the pawn being stunned. Have pawn 2 react that it successfully interupted an ability, by playing some particle effect and sound effect in the location where pawn 1 detected a hit on pawn 2 with ability A.
I hope you get what I am getting at, some communcating between pawns and having things be affected and changed based on different bit of information back and forth. A best practice of those scenarios would be really awesome.
#4: Just thought of another thing as well, an issue I ran into,
In one of your tutorials you show how to extend calculating damage based on for example the armor type of the target. That is fine and all, but I tried to put this kind of logic more easily accessable in a blueprint function library, so that this logic would not have to be copy pasted into every ability that was going to determine damage the same way. But it seems function libraries are off limits to be called from inside the ability, atleast in the determine damage methods. I would really like to know why and how to better solve this situation so that I could alter a damage calculation in one place rather than ten different abilities.