Able Ability System Info and Support Thread

You’re hitting Play and it’s not previewing? Do you have some other variable/cast you are adding in the Animation Blueprint that could be causing it to early out when in the Editor?

There’s no difference code wise between the Editor preview and normal in-game execution, so I’d double check your animation blueprint.

Yeah, it was that. I was using a Skeletal mesh as my preview asset rather than the pawn, and the skeletal mesh doesn’t contain the Ability Component. My bad! Thanks again.

Also, sorry for the double post, but I’ve been having another issue that I can’t seem to figure out. Whenever I branch into another ability, the branched ability plays much faster. I’m not sure if it’s the animation or the ability itself, but I tried disabling “scale with ability play rate” and it didn’t change anything. I have a simple sword slash that branches into itself (I tried other abilities as well), and if I press and hold mouse, the first ability plays fine, then the second one plays nearly twice as fast. Then the third one plays normal again, and then the fourth one fast again, and it keeps repeating in this pattern.

At first I thought it was some issue with the blending, that maybe I was branching too early causing it to look like that, but I placed the branch all the way at the end and the same thing still happens. If I just wait a few frames more for the ability to end and then trigger the ability to end, it plays normally, meaning it’s not a blending issue since the pose is pretty much the same.

Any idea what this could be?

Hmmm, not off the top of my head. Is the Ability before the branch sped up? Do you have logic for the Ability Play Rate somewhere? The whole on/off pattern seems really suspect…

I’ve never touched ability play rate and I also turned off “Scale with ability play rate”. Moreover it works fine with single node. I enabled looping and 95% of the time it works fine, and then randomly one of the iterations is sped up. With looping off it’s every other one. Don’t worry if you can’t answer this question, it’s an unfair one :o

Edit: It also happens in the editor if I hit play with looping enabled (in the same way as in game, with 95% of them being fine and one of the multiples of 2 being sped up)
Edit 2: I made a new animbp with only the ability node and it still happens, so it’s not the animbp.

I managed to recreate the issues on a new project. All I did was add an input “Ability” mapped to the F key, add the ability state machine and the configuration in the animbp, and create an ability that has a branch at the end. If I press and hold F it will speed up every other iteration. Here’s a link to the project:

https://mega.nz/#!Ckg2HZaK!c4r6oq52_…gwqNcHAiBuZIDQ

Edit: It has something to do with the interruption of the animation. If I place the branch *after *the play animation task, the next one will not be sped up. Also, depending on where you put the branch the animation speed is different. I’m guessing it’s a blending thing.

Thanks, I’ll poke at it and see what I get.

Thanks! I also have another issue relating to it when I use looping. I’m trying to implement my bow mechanics using Able, and I have three abilities; one for draw, another one for aim, and another one for fire, in which they branch to each other in succession.

The first issue I had was that the blending wasn’t working correctly, just like with the previous issue. The draw animation ends where the aim animation begins, but instead if I place the branch anywhere other than after the first animation has ended, he will quickly revert to idle and then blend into the aim animation. I ended up placing the branch .2 seconds after the draw animation had finished and even though there’s a really tiny hiccup in between the abilities it’s good enough for me as a workaround right now. If I put it .1 seconds after the draw animation finishes, there’s a chance (~20%) that it’ll revert to idle and then blend into the animation, as it shouldn’t. For all I know there’s still a chance of it happening .2 seconds after and I just haven’t experienced it yet, but it’s just a temporary workaround.

The issue I mentioned came after, in the second ability. If I set the aim ability to loop, and I break the channel condition to escape the loop, it restarts the animation from the beginning to the end instead of just breaking off right away. This one is also really weird, because I put a custom event near the beginning that fires in every loop iteration, but if I break the channel condition midway through the loop and it starts it from the beginning, the custom event does not fire. So then I realized it’s not the ability starting all over, it’s just the animation. I placed an animnotify in the beginning of the animation and it prints a string if I break the channel condition near the end of the ability. I know it’s related to the previous issue, because it works fine in single node; the issues only happen with the ability animation node. Unfortunately I can’t use single node as aimoffsets don’t work and there’s no transition. Ability interrupt is also called when it should be, so it’s purely an animation issue.

In case my explanation isn’t clear enough, here’s the issue laid out plainly:

  • One ability branches to the other (only issue here is the same one as before, weird blending)
  • Second ability loops from start to finish indefinitely; all it contains is a single animation task, using ability node.
  • This ability is channeled, channel condition being mouse press
  • Mouse is pressed and held all the way until the second ability
  • Mouse is released any time during the second ability (can be first loop iteration, tenth loop iteration, it doesn’t matter)
  • Animation replays from the beginning (animnotify fires) instead of being broken out of
  • Only occurs using ability animation node, not single node

Any help is appreciated, it’s driving me crazy!

I had a question regarding usage/workflow - I’m not really making gameplay but various types of cinematics. Would this increase the speed of my workflow, for example, quickly prototyping abilities (for example, triggering lots of explosions/other emitters at the same time and killing a bunch of AI) and then popping the abilities off in sequencer? Is this a good use case for able?

Truthfully I’ve never seen anyone use it in that aspect. Sequencer is setup to handle a lot of that. You could use Able to help you re-use particle/animation timings and such like that. However, I haven’t written any support with Sequencer to call Able Abilities or anything, so there may be some work there. Not sure…

Yeah, my workflow is kind of experimental at this stage. Thanks for the input. Just trying to come up with a toolkit I can take across multiple projects quickly.

So I bought the able ability system this weekend, and it works pretty good, but I found an issue. I can’t see to cancel an abilities animation early, I wired up a custom event, cancel the ability (which does appear to cancel the ability itself) but the animation just continues to play no matter what, UNLESS I make it play another animation via a branch instead of a cancel, that will instantly end the first animation. Any hints as to what I need to do to ensure the animations cancel correctly with the ability itself? (I am using Ability Animation Node, have that all setup in the correct fields and I have ‘stop on interrupt’ turned on which I would have thought would do what I want, but it doesnt). If I try to use ‘interrupt’ for the result to use in the cancel ability method, it seems to just reset the animation.

Edit: I did find a way to sort of make it work, I now check if there is a valid active ability and has ability animation, to set the state of if there is an ability animation playing. This doesnt seem like the right way to do it however because it seems like it would kill any blending.

Read my posts above, I think we’re encountering the same issue. Can you try using single node just to see if it cancels correctly? If it does then it’s the same issue.

Hi, when i create a able ability bp, it ask for a actor, and then a asset. when it ask for the asset what should I do since everything is blank. Also when i try to add in animation nothing runs in the able system so i need help.

Open up the Animation Blueprintof the entity you wish to set this node up on.

Create a variable of type Boolean and name it something descriptive. This will be our flag to the state machine that we have an Ability animation to play. For this example, the variable has been named **IsPlayingAbilityAnimation **and is highlighted in red.

Now that we have our variable, we need to make sure it gets updated each frame. To do this, we simply:

  1. Get our Pawn Owner.
  2. Check if our Pawn Owner is valid (safety first).
  3. Get our Ability Component
  4. Check if our Ability Component is valid (safety first).
  5. Call HasAbilityAnimation from the Ability Component and store the result in our variable.

Now we can hit the Compile button and everything should be fine. If not, check your blueprint against the one in the screenshot and see if you accidentally forgot a connection.

how do i do this with already movement mapped on my bp animation

Yea, I’m still digging into this animations not cancelling, I was going over @fernmerc 's test project this weekend. Unfortunately my local version of Able is a bit of a mess as I get ready for the next update, so I need to wrap that up so I can do a deeper dive into the issue. I’ll definitely get something in for the next update.

The first prompt is to pick a class, the second is to pick an asset from that class. Previously that window would load everything (which you can still get if you simply hit cancel on the class selection prompt).

Just add it before or after your movement animation. Or setup a blend between your movement state machine and the Ability state machine.

Single node does cancel right away it seems, little harder to understand exactly whats going on because it obviously doesnt return the actor back into a locomotion state like it does would state machine nodes, but it does clearly end the animation earlier when the conditions are right.

Glad to hear you are working on it, but I might beat you to it and fix it myself, currently reading source code :stuck_out_tongue:

Edit: I’d also like to suggest an additional task, a cancel task that would work like the branch, but just allow you to end the ability early, its pretty easy to make this as a custom task but it would be even easier if it was just one built in :wink:

I also found a pretty bad crash, if you select the default ‘abl ability’ class to branch into it instantly crashes the editor, you dont even have to hit the play button, just the moment you select it. Which can definitely be an issue with miss clicks.

Why would you want that? Can’t you just decrease the time of the ability? Or do you want to specify conditions to end it in? Also, have you tried using “Cancel Ability” on the ability component? I would just have a custom event that checks for whatever parameters you want and then I’d call cancel ability if they are true. I haven’t tried it though.