Able Ability System Info and Support Thread

Hi, I found a problem, I play able on my AI character, and able play a dynamic montage, if animation sequence enable root motion engine will warning “FNetGUIDCache::SupportsObject: AnimMontage /Engine/Transient.AnimMontage_148 NOT Supported.”

Hmm, that’s from the animation system - not from Able. It’s saying you can’t transfer that AnimMontage over the wire. Able doesn’t pass that information, but the Character Movement Component does so I wonder if that’s what’s complaining.

Dynamic Montages in general aren’t Net safe because they are dynamic (meaning you can’t just pass an ID and have the Client look up that animation since Dynamic montages are made on the fly), so you’d need to either make that a single animation or remove root motion and replace that with some impulse.

OK, I decide to ignore that warning, hhhh.

Another question, Is it possible to manually sync once? because I want some important able can play on client immidately, I looked your source code, and notice that you using property replication to sync able

Anything that is marked as Client/Server is played immediately on the client that does the action (i.e., the Player).

Quick little update today. Able v3.45 notes below.

ExtraLifeMatt Is it possible to create an ability without a tick cost? A continuous object that just IS… is part of “get abilities” array and generally is on the character, but there is no cost to check for infinite loop? As even infinite looks have a tick cost. It’s slight… like 0.1ms but still. I was wondering if I could do classes and feats as abilities that would be persistent passive, but as ability can be affected by other effects and can be queried and stack can be accessed etc.

Not really. That’s not what they’re meant to do. You’re better using Gameplay Tags for things like Feats or Character Classes, etc. Abilities are meant to be “active” in that they always have a timeline to play.

That’s exactly how I’m doing it now. Or when a “class” has some activation perks per level and some functions to check if the multiplayer cheater is not trying to exploit it - I spawn an OBJECT without tick enabled and just call interface on it. I was just wondering if I can make a custom ability class that is an object that is a bit more stripped down. But to think of… that’s a lot of work to make it happen in comparison to just having replicated objects that are custom and took me maybe 1h to setup.
Oh and cost of ability is 0.1ms inclusive max when it runs all the “can activate” can cancel" etc triggers on the single frame… usually running a ticking passive is 0.01ms :smiley: so having over 700+ starts to be a problem. And I got a slow CPU (3.2GHz max turbo, and 2.5 GHz typical clock speed)

BUG REPORT: When you create a child ability and it copied all the context if you remove a task out of it - the engine crashes. At least 100% when removing “branch” task. The task doesn’t have bindings. just a static reference and input requirement
Also - creating an ability object from already made class often loses some functions and doesn’t copy all context. when errors out - it refers to errors in the original object class that was the parent.
some tests: a COPY of an object seems to work fine.
right-click and create a child - generates the same error, but also all tasks are removed from the graph. (they are marked as inheritable)

Hmm, Thanks. I’ll add it to my bug list and look at it.

Hello, how do i force the ability to play on client (like a reliable or force net update)? sometimes the ability doesnt send on the client but works on server

Hi, Task’s DynamicProperty no task name, so I can’t distinguish at runtime, “OnGetDynamicPropertyDisabled” for example, how can I do?

Btw, I want to change PlayAnimation(DynamicMontage) blendin\blendout at runtime, hope you can add this feature, thanks a lot !

There is a “Dynamic Property Identifier” on every task. Just add something there and it’ll change the method to “OnGetDynamicProperty_Identifier_Disabled”.

Sure, I can look into that.

I apologise if this was asked once before.

I have a question about the Spawn Actor task.
More specifically:
Can I somehow get a reference to the Spawned actor inside the Ability Blueprint?

There is a function to overwrite that is being run right after you spawn the actor and the spawned actor is the entry reference plug. So you can cast / call interface / do stuff with it. (although I don’t remember the name of the function without checking but its easy to find, as names are hard to get wrong in ABLE functions)

As AngelV said, it’s “On Spawned Actor”

Able v3.46 submitted. Notes below.

I have a simple question. I am trying to use behavior trees using the “Play Ability” task, but nothing happens. It just straight up skips it.
I added the AblAbility component to my character already, and the ability works in the ability editor.
Am I doing something wrong?

Nope, that should be all. Check your logs there’s probably some reason it’s being skipped. In the Able Setttings there is a Verbose option that will tell you any time an Ability was submitted and not played.