Able Ability System Info and Support Thread

Hmmm, looks like it’s angry about the name. I’ll fix it.

I am not able to open any created abilities … Able v3.4.2 running on a Source Engine Build of Unreal Engine 4.25.3.

Capture.PNG

Log file attached from the Crash.

Interesting. It’s saying you’re trying to open an invalid object? I’m working on an update right now but I haven’t submitted it yet - so I’ll look at this today.

Is there anything else you would need from me. Crash Dumps, Logs, etc.

Callstack might be nice, but I have a feeling I know where it is. The thing is, that list is supposed to ALWAYS have something in it when you go to open an Editor (it’s literally the list of assets to open with that editor), so I’m not sure how it’s null unless the object itself was destroyed mid way to opening the Editor.

I figured it out, there seems to be a conflict between “Productivity Tools” and “Able”. As soon as I disable the plugin, I am able to edit abilities in Able.

https://www.unrealengine.com/marketp…uctivity-tools

I have removed the Productivity Tools Plugin as Able is more important to me.

PLEASE NOTE: This issue has nothing to do with Able, it seems it is all caused by Productivity Tools.

Nice plugin! However i have a little issue here, with a simple animation. I’m doing a growing plant every x sec, by spawning it first with able,I put an effect at the start of the ableskill to check visually the launch… But i can’t see the spawned actor on client, only the server can see it, the fx is well replicated. What can i do to replicate the spawned actor ?

The first tutorial in the series ready!

Love it! :eek:

second one coming today at midnight. I will try to record 1-2 daily. They are light to work with :slight_smile:

Edit: it’s out.

Able v3.43 Submitted. Notes below:

As you can see in the notes, I’m slowly moving everything over to a new MediaWiki page: https://able.extralifestudios.com/wiki/index.php/Main_Page

As much as I love and put a ton of work into the old Confluence-based Wiki, it is incredibly difficult for me to maintain that all by myself. With that in mind, I’m opt’ing for the community based solution as many of you have reached out to me and asked if you could help improve Able’s documentation. You can tell it’s still very early days on the Wiki, but I’d love for people to start either bringing over parts they enjoyed from the old Wiki - or write whole new articles. The world (wiki) is your oyster. I’m going to keep filling out the new Wiki, but the old Wiki will stay around for the foreseeable future. My hope is this community wiki will become bigger and better than the original over time.

I really want to help grow the Able Community (and have a few thoughts on how to do that), but hopefully this Wiki is a step in the right direction with helping new and old users alike.

Cheers,

Thanks for the update! It did break any execute ability I had… good I have it in macro :smiley: But still had to update every macro use to recompile. Still, the new scratchpad functionality is amazing. I will have to do a tutorial on it soon, with some cool examples!
Contact me via Discord (sent you a request) to help me understand how I could help with wiki. :slight_smile:

@ Question: is there any mechanic stopping a player from “cancel ability” on a Debuff? Only the owner of ability context can cancel? Or how is it resolved, so a hacker can’t just cancel any unwanted abilities on him, and cancel unwanted tags?

@ Big issue I run into today while doing a tutorial. If I make a base Ability class… and I make child classes they inherit all tasks that are inheritable. and all functions and variables (awesome!) BUT if I edit the base class, added variables and functions gets carried over. .but inherited tasks DOESN’T. :frowning:

Edit: Updating functions doesn’t update the inherited abilities as well… :((

In the newest ability tutorial, we have made a melee ability template and 3 child attacks that can be chained up with one another for increased damage.
We have discussed 5 tasks: animation, collision, damage, branch, sound. Also, functions: Calculate damage per actor, on custom event, can ability execute. We are also communicating messages via custom interface as well as base damage interface to multiple actors. both target and owner.

The server should be authoritative over everything, so if the Server doesn’t let him cancel it - it won’t be cancelled. He may locally hack and show himself as not having the tags or whatever, but the server and everyone else will show it. I can add an additional callback on the server to give the server one extra chance to verify things before going through with a cancel.

When you create a child ability, it has to copy everything because BP inheritance is more a pseudo inheritance, that copy logic is only executed when you go to create the Ability. So, if you modify that base/parent object, the changes don’t propagate. A while back I tried to just always pull the Tasks from the parent object, but that ended up making the code exceedingly more complex to work in and expensive to execute (you couldn’t pre-sort the Tasks, trivial return values became no longer trivial, Ability load order suddenly became very important, etc) so I yanked it out a few versions later.

I’ve thought about adding a “Parent Refresh” button to re-run the copy logic, but it’s difficult to detect changes a user may have made to those Tasks/Functions/Variables and not stomp them - which I want to avoid, obviously. If I can find a clean way to refresh the class, I’ll happily add it.

YAYY, this is probably the #1 question I get. I stubbed out a quick tutorial page on the Wiki, you should add theses (I’ll add my own out-dated ones as well). https://able.extralifestudios.com/wiki/index.php/Tutorials

@
Yeah - a function to overwrite- like we have “can ability execute” style would be great… “Can Ability Cancel”? :slight_smile: Also Functions like “set stack count” should be authoritative only. Otherwise, someone could decrease the debuff count on himself. Basically all functions should be authoritative. the actual trigger of the ability should be able to run on client. And “get” functions obviously. but none of the set ones.
Regard “parent refresh” I don’t mind resetting the ability child, as IF I do parent-child abilities - all the logic is in parent and only variables change in the child. That’s a price I would pay!
Like in my melee combo example… I haven’t added anything to the child abilities. just switched values and animations.
Tell me how and where to login into the wiki and i can add all tutorials and link to proper tasks / pages.
Nex most common will be projectiles, and aoe attacks I will cover tomorrow. :slight_smile: If you have any urgent requests for tutorials give me a heads up!

custom tasks are a **** to work with :smiley: So I ended up doing custom login in passive abilities instead of trying to make a task. The reason they are troublesome is if you update the task, it will break the abilities, and crush engine :smiley: so if you make custom task make sure you have a final version before you implement (interesting to do without testing).

Strange bug:
I have a strange bug with 2D collision query… when I jump I still hit EVERYTHING under and on top of the collision query. it has infinite height :smiley: And 3D cone query doesn’t register anything :frowning: In same project as my tutorial.

By default, everything is technically authoritative as the Server version is the version that is sent to other clients, etc. You can screw up your own client version all you want, it just hoses you as you’re seeing inaccurate information. The one caveat to that is the Cancel, which could (in theory) accept some fake packet and it would just execute the cancel. I’m not technically sure how you would go about actually constructing that packet in real time (as the values underneath change rather often), but adding an extra check on the server is pretty painless - so I’ll do that. Just to be proactive.

Custom Tasks shouldn’t crash you anymore. Not in the latest Able (or even a few versions back). Basically if any Custom Task is modified, the entire Task now gets serialized, re-created, and loaded from that serialization. If you are getting a callstack, definitely send it my way.

Yes, 2D query only cares about the X/Y plane. 3D cone should definitely register things. Here’s my Collision Test map (it’s safe to upgrade to 4.25), if you want to see if you can repro the cone issue with it.

https://www.dropbox.com/s/zlwu2ixgmpzclwv/AbleCollisionTest.7z?dl=0

Ooooh… That’s right. Huh… so… yeah… so indeed only Cancel is a real threat of abuse.
Before I report anything back with the query problems I will investigate further and check the project.
3d query works for everything except cones for me.
I thought that 2D query is a masked plane collision check. a flat 0units height line cut :smiley: my bad on assuming things

edit: The collision test example project breaks. Even if I enable ABLE in project file before opening it just to make sure it doesn’t break the created abilities. and anyhow the cone example uses 2d cone. (that works anyway). error logs in the attachments.

@
Edit2: Able collision problem for 3D cone query - YouTube <– did some investigation and found out the 3d cone query works only if you’re facing a specific direction/plane (as they work forward/backward, but not side to side or at angles). check out the video. it is unlisted but should be accessible.

That sounds like an old bug that was a few versions ago. I have a 4.25 version that I’ll check with 3D cone.