Able Ability System Info and Support Thread

Try removing the “must be recently pressed”. Likely one of your inputs was already held down in the past 0.1 seconds (which is what that value applies to). You can mark the Branch task as Verbose and it’ll tell you why it’s failing.

I uncheck the “must be recently pressed” from both input conditions and check verbose…You can see below the verbose log.

Like image above, this ability have 2 conditions to reach the next ability. The “Must Pass All Conditions” are already checked. The plugin is testing only the first condition.

The branch are testing the first condition and if TRUE, the result of the next conditions are TRUE too also if I don’t press the key condition.

So you’re branching when you don’t expect to? I’ll check things tonight. There was some recent work in those files so maybe things broke.

Hi, i just bought your plugin and i really like the idea of having a data driven ability system. However i’m not sure how i could use this system to make my game more “moddable”. I’m not sure if you can recommend me a workflow for that using your plugin. Like, maybe there’s a way to load abilities assets from text files or something like that?

I’ve thought about how to do modding with UE4 quite a bit and I don’t have a great answer. Looking at other games that do it (ARK, Conan Exiles, etc), it looks like they just ship the entire editor and tools. So, in theory, you could just give your users the Able Editor tool as part of a mod package, but I’m not sure the actual logistics of how to package that and such.

Other Crash report about Able Ability Editor. Just crash while I’m using…

How I can interrupt or cancel running ability?
I wanna to use a single animation with 3 or more attaks…if the player press the action input key on time…keep playing the ability, else interrupt the ability.
How to do this?

Thanks, I’ll look into this. Looks like you have either a null Ability or Task. Where you using a Custom Task by chance?

Just call CancelAbility on the Actor’s AblAbilityComponent and pass it the Ability you want to cancel (you can mark it as an interrupt, or a normal stop).

Who to check branch status in blueprints?
I like to cancel ability if don’t press the action key…how to do this?

You can’t really check branch status. Simply put the branch of your Ability at the end of your current Ability and let it end naturally if you want it to fail if they don’t branch properly. Not quite following you on this one.

Hey **, **any chance you could do some more tutorials?

  1. Such as an AOE (click to confirm)
    AOE attack (initiate an ability(if have requirements), and have red circle or some indicator on mouse, and then ‘click’ to confirm ability
    or could be to build a building or spawning a golem somewhere, or whatever. But I am confused on how to handle the indicator on cursor and confirm/commit ability.

I think what I want here is an ability that just keeps looping (sorta like channeling) that will branch if I commit (left click)(create the actual ability) or (right click?)(cancel ability) or perhaps doing the “finish all tasks” or something. I am not 100% sure what would be the best way to do this.

  1. I am trying to do a passive, but the example project only has 2 examples in it (machine gun and rocket) and your 4-5 youtube videos.
    I am struggling with how I should set up with a healing DoT. or Damage DoT For example, I want to modify a stat once every 10 seconds for 100 seconds.
    Initially I thought I would have it do a 10 second loop. With a custom event at start (modify stat). But then I run into issues about determining a ‘time remaining’ for UI purposes. I could try and cache AbilityLength*MaxIterations, and figure it out, and if ability is refreshed, just recalculate it? Then I get confused if I consider I want like a ‘boost’ in that perhaps character is hyped up and I want the loop to be faster (healing once every 5 seconds instead of 10 for the full length). A lot of things have bindings, but plenty of things don’t. I am coming from GAS which had a distinct “Duration” but also a “Period” for effects.
    As you can tell, I am just getting confused here.

edit: I realized the main store page only had link to 1 example, but I can download some more examples from https://extralifestudios.atlassian.n…2419/Tutorials
Also note a lot of the sample projects contains several hundred mb of unneeded files (textures, hdri) that could make downloading projects much faster/smaller.

edit:
Bug report: Is there a way to not make the icons be 2x as big? It is a little weird that it’s not consistent with the rest of the UI and same size.

  1. This is actually a difficult thing to do. You would want to ONLY invoke Able once you have the location, so you’d need to handle the indicator or whatever yourself. Basically, wrap your Abilities so when the user tries to execute it it goes, “Is this a ground target Ability? If so, ask the User to pick a location (once the location is picked, pass it to Able), otherwise just call Able.”

  2. There’s a couple ways to do this. You could either do 10 stacks of the 10 second ability (so time remaining would be Number of Stacks * Ability Length), or you could do a 100 second ability that drops another passive (that does the actual healing,etc) every 10 seconds. That would simplify the UI calculation, but either would work.

That bug has been around forever, for whatever reason, UE isn’t obeying the size I tell it. I’ll take a look at it as I do this 4.24 support update.

  1. you spawn an empty “Target” actor that is replicated at desired location / cursor. then you activate ability from normal character component targeting the “target actor” as context target. than you do a sphere query around the “target actor” from the context as normal.
  2. both are solid designs. depending if you can “Dispel” the ability partially, or entirely only? same goes for stacking and overwriting. as if its 10x10 abilities it can stack up :slight_smile: if its 1 ability with 10 ticks, it can “reset” once applied again. though not prolonged. if applied before tick - it would not trigger.

Able v3.22 has been submitted. Notes below:

Hey, awesome plugin so far, but I got 2 Questions:

  1. How do I make my own SpawnActor Task? I’m not able to call a simple SpawnActor, neither in Abl_Custom_Task BP or anywhere in Abl_Ability. Only SpawnActor for Gameplay Task is available which restricts to spawning on Server only. My goal is to simply Spawn a Projectile for visuals on owning client to make up for lag (basic clientside prediction).

  2. What would be the intended way of spawning e.g. a Projectile and initializing it with a velocity depending on a client variable?

  1. There is a Spawn Actor Task which calls spawn actor.

  2. There is a callback on the Ability called “OnActorSpawned” I believe, which will pass you the actor after it’s been spawned so you can set whatever you want on it.

Stumbled upon this the other day after spending months creating a custom combo system for the project I’m working on and to say the least I am mind blown. The thought that went into this plugin is nothing short of amazing. To give some background on the project I’m working on:

It’s essentially a melee/ranged/magic third person fighting game. Think an action adventure style movement and attacking system that incorporates some fighting game principles such as distance management and efficiently timed button combinations that allow a player to chain attacks together uninterrupted. Now onto my questions:

  1. For melee weapon attacks I’m currently utilizing a system that does line traces from sockets assigned to the melee weapon. If these line traces cross the mesh of another player then a hit is registered. The sockets are placed very precisely in order to have it appear as if the weapon mesh itself is checking the collision, which to the human eye appears very precise. This also makes it so only the bladed/pointy parts of the weapon mesh appear to do damage, as handles do not have these sockets. Is there any way to do something similar with this ability system? I don’t want any hits to register unless the weapon itself at least appears to be doing the collision checking against player mesh. [HR][/HR]
  2. For ranged attacks like bow and arrow, does the system allow for holding a bow in the pulled back position for a minimum or indefinite time? Basically, the flow would go: Grab arrow -> Nock arrow and pull string back -> Can hold this position infinitely -> Fire arrow on input release. The longer you pull the string back, the more damage increases until it hits a max damage cap. Additionally, something like this might be used in my game to have certain spells allow to charge up, increasing their effectiveness the longer the spell is held. [HR][/HR]
  3. Using the above example, is it possible to use the project itself for hit detection as well as controlling the velocity at which it travels? For instance, holding the bow string back longer would shoot arrow further/faster. [HR][/HR]
  4. Is it possible to fire off a custom event within the system that includes variables? One of the key features in my current system is variable hitstun. Being able to combo quick dagger swings requires far less hitstun to lock an enemy into the combo than say slow axe swings, which require a longer hitstun to achieve the same effect. If this isn’t possible, is there something within the ability system that can mimic the same effect? [HR][/HR]
  5. Another example related to #4 is a parry system. If a character properly executes a parry at the time of being hit by an attack it would play an effect/sound as well as nullify damage. How would I go about implementing something like this with your ability system? The system I’ve created has a two-pronged parry system. Parries that are initiated within a very short time window of being hit also interrupt the attackers combo, while more loosely timed parries simply nullify damage. Is this also possible? [HR][/HR]
  6. Finally, one of the other features I have implemented is allowing the player to rotate their character in the very beginning portions of attacks. Normally players would be locked onto a target and rotate depending on where the target is. However, to allow players to fight multiple opponents it’s possible to not lock on and the character can manually rotate in the very beginning (before hit detection becomes active) of animations so they can forexample target a player to their left for the first attack of their combo, then rotate to target a player that was behind them afterwards. Using gamepad as an example, the left stick position would be used for rotating the player. I currently use a component and Anim Notifies to handle this. How would I go about implementing it with this ability system?

Once again this system is great. I’m hoping it contains some of the features I’m querying about, or at the very least allows to hook in such features. Thank you in advance.

Oof, this is a lot but I’ll try and answer it.

1.) You can attach a query volume to your weapon socket if you wish. If you want to do traces, you’ll need to write your own Task and set that up.
2.) You could do this through a looping passive, where you query the number of “Stacks” the passive has when the user releases it and use that to determine velocity and such.
3.) See #2.
4.) Yes but not in the way you describe. You can fire off custom events but they don’t contain parameters. You would have to store those on the Actor somewhere and just “know” that they are there when you get that event.
5.) You can do interrupts for Abilities.
6.) Able makes no assumptions about locking movement. There is a Task that does that, but it’s entirely optional.

Hope that helps. The system you want is very specific, Able is written very generic. You can get it to do what you want, but you’ll have to be a bit creative (or just make custom tasks for the very specific behaviors you want).

Great. The versatility of this system is downright amazing. I’ve already pulled the trigger and purchased the ability system. I have one more question, and this one is short and simple to make up for last time lolz.

  • Will animation notifies that are in an anim montage still fire off when the able ability system plays the animation within an ability?

If that is possible then I’ve found quite a few ways to recreate my system much more easily than originally anticipated. That combined with all of the great features within the ability system should allow me to not only drastically improve the quality of what I’ve already done but make it much more manageable as well.