Announcement

Collapse
No announcement yet.

Able Ability System Info and Support Thread

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

    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
    Able Ability System - A high performance, robust ability system for UE4. Now Available!

    Comment


      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.

      Comment


        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


        Able Ability System - A high performance, robust ability system for UE4. Now Available!

        Comment


          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.

          Comment


            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.
            Able Ability System - A high performance, robust ability system for UE4. Now Available!

            Comment


              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.
              Able Ability System - A high performance, robust ability system for UE4. Now Available!

              Comment


                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.

                Comment


                  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!

                  Comment


                    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).
                    Able Ability System - A high performance, robust ability system for UE4. Now Available!

                    Comment


                      Originally posted by ExtraLifeMatt View Post

                      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.


                      Turn on the Verbose Logging in the Able Settings and it'll tell you why it failed to play locally (Cooldown maybe).
                      I'm calling my logic on a custom event as a passive task on a loop, it works on the server but not on ai.
                      The task is also set to server and client.

                      is there something specific needed to be done to get tasks to run correctly on ai across all clients?

                      So it only works if the game is offline, once clients join, ability no longer works.. It's set to call on server and client.. Not sure what's causing the issue with such a simple call.

                      Going through with breakpoints, everything is being executed correctly. Just nothing is happening on clients, and no longer works on server either once a client joins.
                      Attached Files
                      Last edited by thelazylion; 09-08-2020, 03:07 PM.

                      Comment


                        Originally posted by thelazylion View Post

                        I'm calling my logic on a custom event as a passive task on a loop, it works on the server but not on ai.
                        The task is also set to server and client.

                        is there something specific needed to be done to get tasks to run correctly on ai across all clients?

                        So it only works if the game is offline, once clients join, ability no longer works.. It's set to call on server and client.. Not sure what's causing the issue with such a simple call.

                        Going through with breakpoints, everything is being executed correctly. Just nothing is happening on clients, and no longer works on server either once a client joins.
                        Set the Custom Event Task to Verbose and you should see a client line and a server line. That task is dead stupid (it just calls the blueprint function), so if the method is being called - that's all I can think of. Like I said, I'd turn on Verbose in the Able settings as well and grab those logs. It'll tell you exactly what's happening.

                        You can also try disabling ALSV4 and see if that magically fixes things (wouldn't be the first time ALS and Able didn't play well together for whatever reason).
                        Able Ability System - A high performance, robust ability system for UE4. Now Available!

                        Comment


                          Originally posted by ExtraLifeMatt View Post

                          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.


                          Turn on the Verbose Logging in the Able Settings and it'll tell you why it failed to play locally (Cooldown maybe).
                          I turn on the Verbose and found nothing, maybe your plugin can't use like that, but I really want use like that, so may you support that feature? please, thanks a lot

                          Comment


                            Originally posted by MichaelLiew View Post

                            I turn on the Verbose and found nothing, maybe your plugin can't use like that, but I really want use like that, so may you support that feature? please, thanks a lot
                            You should see the Server's execution of the Ability and then why the Client didn't execute it or if the channel condition failed. Post the client's logs if you have them and I'll take a look.
                            Able Ability System - A high performance, robust ability system for UE4. Now Available!

                            Comment


                              ExtraLifeMatt I'm working on a Paper2D project and it seems like the Play Animation Task only accepts skeletal based animations. I am unable to select any sprites, flipbooks, animation sequences, or instances. Does Able's Play Animation Task support 2D or is this something I should work around?

                              Comment


                                Originally posted by Sykrow. View Post
                                ExtraLifeMatt I'm working on a Paper2D project and it seems like the Play Animation Task only accepts skeletal based animations. I am unable to select any sprites, flipbooks, animation sequences, or instances. Does Able's Play Animation Task support 2D or is this something I should work around?
                                You'll have to work around it. That method is meant specifically for 3D animation. You can make a Custom Task that does the 2D flipbooks though.
                                Able Ability System - A high performance, robust ability system for UE4. Now Available!

                                Comment

                                Working...
                                X