Able Ability System Info and Support Thread

All your data will still work, there shouldn’t be any need to restart or such. 3.0 will just plugin like every other Able update.

ahh thats ok :slight_smile: just that you said new features gonna be added :slight_smile: the move to thing will be good.
Are you gonna have an Input in blueprint or am i gonna still have to call datatable in all the able BPs?
made a D&D style system where it random generates rolls on stats if it suceeds to hit or not.
Might do it all in character BP (NPC and Characters share same parent class) So i might call all abilities in parent class then call able when success and pass damage out in parent class too.

Awesome, thanks for the update!

I have another question: Is there a way to get the current phase of a task? Being able to get the current phase of a task from within the task itself (custom tasks) would be nice, as would as being able to read the current phase/start/end times for each task from the Ability itself. Basically I’m looking to drive other logic using the phase from a tag placed in the ability.

I’m still finalizing all that, but there will be a way for you to dynamically pass in a position (or Actor) at runtime.

You can get the current Ability time from the AbilityContext, as well as a list of Tasks that the Ability has - from which you could likely figure out what current tasks are running (or I can add a function to the context to get all running tasks). I’m not sure about adding an explicit “phase” to Tasks. Tasks have a start, an optional tick, and an end - and if the Task is single frame then the start and end run back to back so there’s no real way for any other system to query that.

Telling when a task is running isn’t a problem, but without knowing the range of time the task is slotted in the timeline you can’t calculate a phase. “Start” and “end” are inaccurate names I guess, what I’m really talking about is the “Timeline Start” and “Timeline End” value of a task (the range of time a user set for a task). Barring something like that, what about a pre-fab ‘Phase Driver’ task? A task that tracks a simple phase (minValue->maxValue) over the range it’s set in the timeline, and spits that value out in some usable manner?

You can get the range of a task right now (GetStartTime, GetEndTime) - it’s just not exposed to Blueprints. You can also just grab the current ability time from the Ability Context (which you can grab at anytime from the AblAbilityComponent). Or, use custom task that just returns that value during the OnTaskTick call (which is what I suspect you’re doing already).

Thanks matt will wait until this is done. A lot of trickery on abilities and stuff. Using datatables to contain info on everything basically. J

Thanks for the info it helps a lot :3

How can I stop the Particle Effect when i interrupted the ability?
And there is a bug in possess task,when i checked UnPossess On End,the controller will not possess original character.

Particle Effect currently doesn’t have that option, but it’s an easy add so I’ll fix that.

Unposses is pretty simple, as it just calls “Unposses” on the character controller. If you’re doing multiple possessions, then that isn’t currently supported. But a single possession should be fine. You can turn on the “Verbose” option for that possession task and it’ll tell you exactly which character it’s trying to revert the possession on.

1.How can i play a Particle Effect in random point beside player character.Then make a Capsule Collision Query at this point.
2.In the CanBranchTo function,the BranchAbility argument,if i call Get Display Name,it always return current ability name not the branch to ability name.Is it a bug?
3.Is it possible to call a Collision Query Task in blueprint and write result to the target?

  1. You can’t. If you’re trying to randomly fire off a particle / query, I’d just make an ability that is just those two items and then randomly spawn that Ability at those locations (You can use a hidden actor or something). I do want to look into targeting locations as a Task Target, which would make your scenario easier.

  2. Yup. Good Catch. I’ll put in a fix locally for the 3.0 update. If you want to fix it yourself, on Line 46 of ablBranchTask.cpp just make this change:

    ScratchPad->BranchAbility = <s>Context->GetAbility();</s> m_BranchAbility->GetDefaultObject();

  1. You can use the Custom Target type which basically just passes you an array to fill with Targets (it’ll call “Find Targets” on the Ability Blueprint), so, yes, you could do it that way.

Any plans to add GAS (Gameplay Ability System) integration?

Not really, given that Able is meant to replace GAS. What specifically would you want with integration? The ability to call GAS abilities?

I have a couple problems with particles. When I attach to socket, the preview still shows it appearing at the base of my character. However, in game it works fine. In addition, changing the scale while the particle is attached to a socket does not affect it at all. The particle will still have the default look of a 1.0 scale. These problems only occur when I check the “attach to socket.”

The preview actor is likely not using the correct skeleton as your in-game version. That’s likely the discrepancy there. As for the scale with Attach To Socket, I’ll look into that (not sure why that would affect it - but you never know).

Thank you. The preview actor really was the problem, and now it properly shows the particle attached to the socket. However, I still have the scale problem while attached to a socket.

@ExtraLifeMatt Hi, I just wanted to tell you that I figured out the bad animation blending for montages. Still got issues working with anim graph node, but it doesn’t matter as montages give a lot more flexibility regard looping, reusing same animations etc.
ABLE is an incredible solution. How you can use it is just to your imagination, as you can implement any mana system, any category triggers. and the new rewritten networking and event execution triggers perfectly.

I have only one question I cant find answer on the help website: does “can execute ability” is being triggered and checked on authority or whatever trigger Im checking it must be replicated to actually work properly and be cheat-proof?
Im doing a melee combat system for FP, and Im checking on stamina, that does replenish on tick. I don’t want to replicate a value that is replanishing on tick, however I wish to check the value on server to see if ability should be triggered.
Are there any tips and tricks for multiplayer use?

Can Execute Ability will only be executed on the Server if you’re using a networked game. My background is in MMOs (I worked on both Star Wars Galaxies and Star Wars: The Old Republic, not to mention a few other multiplayer titles) so I’m paranoid about that stuff. :slight_smile:

Able will forward all ability requests to the server for validation before replicating things out. At worst case, if you have someone cheating or altering memory values, they would see themselves do an Ability but the server would throw it away and all remote clients wouldn’t see it - so, only the cheater is getting a bad experience.