Announcement

Collapse
No announcement yet.

Able Ability System Info and Support Thread

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • replied
    Originally posted by thelazylion View Post

    I'm getting this same issue, ability does nothing, set as passive, on tick its supposed to print sth on activate, however nothing happens and the output is Internal Systems Error..

    Also using a CPP replicated version of ALSV4...

    I have noticed this plugin also crashes often when using a mesh that isn't the default inherited mesh in a character class.
    Any info on what to do with the internal systems error issue, or whats causing it at least?

    Thanks,

    EDIT:
    Weird, restarted edtior, print now works. and no longer get the internal error..
    Will update if it comes back


    ExtraLifeMatt Just a quick follow up... Whats your recommendation for passives? Where do I call the logic I want to perform on the loop/tick?

    The logic might be a bit heavy, it references the characters mesh physics offset to apply various balance algorithms. The functions are nested in the character class that is calling the passive/check..

    Where do you recommend I call this within the abl system?

    Thanks again in advance for any help
    Internal Systems Error generally means the Context is in a bad state (it was somehow constructed with bad parameters or some such). I have no idea what ALSV4 does under the hood, so I can't really tell you why it and Able wouldn't get along.

    Generally you want to avoid "On Tick" unless it's absolutely necessary, but if you need to do it every frame - do it. General rule of thumb: Do what works, and modify things if it becomes an issue later.
    Originally posted by MichaelLiew View Post

    Hi, I found a bug, I want to play a active able looping, so I using BranchTo task at end of able, branch condition is Attack input is pressed. btw I using dedicated server. Now, I press Attack, my attack action is play again and again, is good, but when I release Attack input and press again, my client not play able but server can play (why I can know server can play? because my action has root motion, I can see my player is moving without animation). You can try it, hoping your response, thanks!
    Turn on the Verbose Logging in the Able Settings and it'll tell you why it failed to play locally (Cooldown maybe).

    Leave a comment:


  • replied
    Originally posted by ExtraLifeMatt View Post
    Alright, Able v3.44 submitted. Notes below:
    Hi, I found a bug, I want to play a active able looping, so I using BranchTo task at end of able, branch condition is Attack input is pressed. btw I using dedicated server. Now, I press Attack, my attack action is play again and again, is good, but when I release Attack input and press again, my client not play able but server can play (why I can know server can play? because my action has root motion, I can see my player is moving without animation). You can try it, hoping your response, thanks!

    Leave a comment:


  • replied
    Originally posted by Duenner_Hering View Post
    ExtraLifeMatt
    ExtraLifeMatt
    Hi. Im trying to integrate this in to ALS V4 for a costumer.
    But im stucking. It just says: Internal Systems Error.
    Any Idea how to solve this?
    I'm getting this same issue, ability does nothing, set as passive, on tick its supposed to print sth on activate, however nothing happens and the output is Internal Systems Error..

    Also using a CPP replicated version of ALSV4...

    I have noticed this plugin also crashes often when using a mesh that isn't the default inherited mesh in a character class.
    Any info on what to do with the internal systems error issue, or whats causing it at least?

    Thanks,

    EDIT:
    Weird, restarted edtior, print now works. and no longer get the internal error..
    Will update if it comes back


    ExtraLifeMatt Just a quick follow up... Whats your recommendation for passives? Where do I call the logic I want to perform on the loop/tick?

    The logic might be a bit heavy, it references the characters mesh physics offset to apply various balance algorithms. The functions are nested in the character class that is calling the passive/check..

    Where do you recommend I call this within the abl system?

    Thanks again in advance for any help
    Last edited by thelazylion; 09-08-2020, 01:18 AM.

    Leave a comment:


  • replied
    Alright, Able v3.44 submitted. Notes below:

    Able v3.44

    - Fix to crash when deleting Tasks that have no possibly dependency replacement.

    - Fix to 3D Cone Targeting not taking rotation into account which prevented it from working in some rotations, 3D Cone Query was not affected by this bug.

    - Made a Data Validation error about using Target Actor but not having anything that populates that actor, a bit more clear.

    - If you have Ability Targeting logic, but you don't set "Require Target", the Data Validation error above won't trigger (as you could have a Target and may be okay with it not being there).

    - Added a new Script/C++ method called "CanClientCancelAbility" which is called in the event that the Client wants to cancel an Ability but the Server hasn't locally cancelled that Ability. Returns false by default, for security reasons. You can use this to force some Abilities to only ever be cancelled by the server and never by the client.

    - If you pass in a Null Context to ActivateAbility somehow, it'll now report it as a bad parameter and not crash.
    Last edited by ExtraLifeMatt; 09-07-2020, 03:16 PM.

    Leave a comment:


  • replied
    Originally posted by AngeIV View Post
    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 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.

    ExtraLifeMatt
    Edit2: https://www.youtube.com/watch?v=uD2KXllKiJ0 <-- 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.

    Leave a comment:


  • replied
    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 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.

    ExtraLifeMatt
    Edit2: https://www.youtube.com/watch?v=uD2KXllKiJ0 <-- 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.
    Attached Files
    Last edited by AngeIV; 09-06-2020, 06:09 PM.

    Leave a comment:


  • replied
    Originally posted by AngeIV View Post
    ExtraLifeMatt
    Yeah - a function to overwrite- like we have "can ability execute" style would be great... "Can Ability Cancel"? 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. If you have any urgent requests for tutorials give me a heads up!

    custom tasks are a **** to work with 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 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 And 3D cone query doesn't register anything 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/zlwu2ixgmp...onTest.7z?dl=0


    Leave a comment:


  • replied
    ExtraLifeMatt
    Yeah - a function to overwrite- like we have "can ability execute" style would be great... "Can Ability Cancel"? 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. If you have any urgent requests for tutorials give me a heads up!

    custom tasks are a **** to work with 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 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 And 3D cone query doesn't register anything In same project as my tutorial.

    Leave a comment:


  • replied
    Originally posted by AngeIV View Post
    ExtraLifeMatt 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?
    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.
    Originally posted by AngeIV View Post
    ExtraLifeMatt 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.


    Edit: Updating functions doesn't update the inherited abilities as well... (
    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.
    Originally posted by AngeIV View Post
    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.
    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/wi....php/Tutorials

    Leave a comment:


  • replied
    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.

    Leave a comment:


  • replied
    ExtraLifeMatt 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.


    Edit: Updating functions doesn't update the inherited abilities as well... (
    Last edited by AngeIV; 09-05-2020, 05:47 AM.

    Leave a comment:


  • replied
    ExtraLifeMatt 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?

    Leave a comment:


  • replied
    Thanks for the update! It did break any execute ability I had... good I have it in macro 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.

    Leave a comment:


  • replied
    Able v3.43 Submitted. Notes below:
    Able v3.43

    - Fixed a bug where Spawn Actor Task would use the same name multiple times for Actors it created if the actor count was > 1.

    - Exposed GetTaskStart / GetTaskEnd / GetTaskLength time values to the Custom Task.

    - The Blueprint library method "GetAbilityObjectForClass" now takes in a TSubClassOf(AblAbility) rather than a raw UClass pointer for better safety and quicker selection of class. This was handled transparently in all my blueprints, but you may need to refresh the node if you get a warning. On the C++ side, you'll need to update any methods that hooked into it.

    - "Disabled" is now a Bindable Property on all Tasks and is checked when doing the initial Task sorting before executing an Ability - so you can arbitrarily decide which Tasks you want to execute each Ability run. Just make sure you don't have a dependency on a disabled task! The system will let you blow your own foot off.

    - Added "Ability Scratchpad". Abilities now allocate their own scratchpad and Tasks are able to read/write to it, allowing Tasks to transmit data to one another. This is a pretty powerful concept as it allows you pass information down the chain. You calculate a Crit in the Apply Damage task, mark a bool on your Ability Scratchpad, and then your particle/sound read that bool and change up the effect to be something else / bigger / etc. You can read more about Ability Scratchpads, and their caveats, here - https://able.extralifestudios.com/wi...ity_Scratchpad

    - Rewrote every. single. comment. that was Blueprint user facing, then used the amazing KantanDocGen ( http://kantandev.com/free/kantan-doc-gen ) and Phyronnaz's ( https://voxelplugin.com ) script to make it wiki formatted. The end result is, up-to-date, Blueprint API documentation: https://able.extralifestudios.com/wi.../Blueprint_API

    - Ran Doxygen on the entire Able code base. The end result is new C++ API Documentation. https://able.extralifestudios.com/wi...annotated.html

    - Slowly converting the existing C++ comments in Able to be Doxygen friendly.
    As you can see in the notes, I'm slowly moving everything over to a new MediaWiki page: https://able.extralifestudios.com/wi....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,
    - Matt

    Leave a comment:


  • replied
    Originally posted by ExtraLifeMatt View Post

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

    Edit: it's out.
    Last edited by AngeIV; 09-02-2020, 06:38 PM.

    Leave a comment:

Working...
X