Announcement

Collapse
No announcement yet.

Able Ability System Info and Support Thread

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

    Originally posted by ExtraLifeMatt View Post

    <3


    Ah that video helps quite a bit! I'll try and repro that locally.
    Awesome! Glad the video helped. Keep me posted!

    Comment


      Originally posted by Its-Alf View Post

      I've tracked my issues with input-based, client-channeled abilities to this. However, I can't find the value "Can Client Cancel". I see there's a function override for it, but toggling the return does nothing to resolve the issue. Oddly enough, testing with a dedicated server causes the abilities to work as intended. When when testing with a listen server, channeled abilities the client activates that use an input condition immediately cancel. The project is primarily co-op and I intend for players to be able to host rather than using dedicated servers; I'm not worried about cheaters. I've tested in a packaged game and the problem persists.

      Is there a fix I can do on my end or will I need to wait for an update?
      the function return value is the value not everything is a variable. so you found it right.
      The dedicated server works fine as "client cancel" doesn't refer to the server so player cant be the server. for that you have I think a second function "can be cancelled" - and this allows the server to cancel.
      Most multiplayer games ends up with dedicated servers anyway

      Comment


        Originally posted by MichaelLiew View Post

        You should uncheck PlayAnimation task's "ResetAnimationStateOnEnd" property
        I have the same issue on my end though, and that bool is already unchecked.
        It works if I use the montage version, but using the ability animation node the animation gets chopped up. I also made sure this issue is not due to my anim bp.

        Comment


          Originally posted by Herr Edgy View Post
          I have the same issue on my end though, and that bool is already unchecked.
          It works if I use the montage version, but using the ability animation node the animation gets chopped up. I also made sure this issue is not due to my anim bp.
          It might be related to an issue someone reported that has a fix going out with the 4.26 update. See if it still occurs when the next update hits.
          Able Ability System - A high performance, robust ability system for UE4. Now Available!

          Comment


            ExtraLifeMatt, a way to lock/freeze a task's position on the timeline didn't sneak into the update for 4.26, did it? I'd have so much <3 for something like that.
            @thereisnoscotty
            Grand Marshal of the Parade of Madfellows

            Comment


              Originally posted by soctty View Post
              ExtraLifeMatt, a way to lock/freeze a task's position on the timeline didn't sneak into the update for 4.26, did it? I'd have so much <3 for something like that.
              Locking? No, but it shouldn't be hard to add. I'll see what I can do but no promises.
              Able Ability System - A high performance, robust ability system for UE4. Now Available!

              Comment


                Originally posted by ExtraLifeMatt View Post

                Locking? No, but it shouldn't be hard to add. I'll see what I can do but no promises.
                It isn't a pressing issue at all. It'd just be nice to have that extra layer of insulation from errant clicks.

                While I'm here.. I'm fiddling with something outside my typical wheelhouse today, and I'm sure I'm overlooking something obvious, but is a "traditional" first-person setup only possible by playing multiple animations on each mesh using a shared skeleton? "Traditional" here meaning "only-owner-see 1P mesh, owner-no-see 3P mesh" a la ShooterGame.

                Using different skeletons throws up the expected warnings about skeleton/animation mismatches. Using the shared skeleton seems to be overriding whichever animation plays first with the second, regardless of slot setup or even discrete anim BPs, which is obviously going to cause problems in anything more developed than a very limited test scenario. I've seen mention of folks doing FPS with Able, so I'm fairly sure it's just something I've missed in my experiments.
                @thereisnoscotty
                Grand Marshal of the Parade of Madfellows

                Comment


                  ExtraLifeMatt
                  So I got some problems putting in animations.
                  I have a combo and the blending doesn't work.

                  I'm using default blending settings, turned off "reset animation state on end" and my animation bp is using a "Blend by bool" node before the end output, which gets fed a bool using the "has ability animation" function.

                  Between combo attack 1 and combo attack 2, the idle combat pose is assumed, which then blends into the combo attack 2 animation.
                  Animation-wise, attack 2 starts with the same pose that attack 1 ends with, so blending should not be a problem at all.

                  Here is a gif that I recorded using the new animation insights:
                  https://gyazo.com/ab44d66a8ad104e7c2043700c45c22cc

                  The data is not on screen, but basically stated that nothing outside of the ability animation node was running. I also double checked to see if that bool was switching to 'false' for a frame between the two, which was not the case, so the animation BP is not the issue here.

                  Possibly noteworthy information:
                  I'm not using the ability node inside a normal animation state machine: I have a completely separate state machine called "AbilityStateMachine" with a single state called "Ability" with the ability animation node inside. I then cache that pose result to reuse it right at the end of the graph using the aforementioned method. It should not play a role, but since I don't know specifics I felt like I should mention it.

                  EDIT:
                  I now added only the cached pose to the output pose, and also tried out doing it like it is in the tutorial, with the ability state inside the locomotion state machine. Same results.
                  Last edited by Herr Edgy; 11-08-2020, 06:53 PM.

                  Comment


                    Originally posted by Herr Edgy View Post
                    ExtraLifeMatt
                    So I got some problems putting in animations.
                    I have a combo and the blending doesn't work.

                    I'm using default blending settings, turned off "reset animation state on end" and my animation bp is using a "Blend by bool" node before the end output, which gets fed a bool using the "has ability animation" function.

                    Between combo attack 1 and combo attack 2, the idle combat pose is assumed, which then blends into the combo attack 2 animation.
                    Animation-wise, attack 2 starts with the same pose that attack 1 ends with, so blending should not be a problem at all.

                    Here is a gif that I recorded using the new animation insights:
                    https://gyazo.com/ab44d66a8ad104e7c2043700c45c22cc

                    The data is not on screen, but basically stated that nothing outside of the ability animation node was running. I also double checked to see if that bool was switching to 'false' for a frame between the two, which was not the case, so the animation BP is not the issue here.

                    Possibly noteworthy information:
                    I'm not using the ability node inside a normal animation state machine: I have a completely separate state machine called "AbilityStateMachine" with a single state called "Ability" with the ability animation node inside. I then cache that pose result to reuse it right at the end of the graph using the aforementioned method. It should not play a role, but since I don't know specifics I felt like I should mention it.

                    EDIT:
                    I now added only the cached pose to the output pose, and also tried out doing it like it is in the tutorial, with the ability state inside the locomotion state machine. Same results.
                    I'm only using DynamicMontage for my montage, and everything is OK, you can try it.

                    Comment


                      Originally posted by soctty View Post

                      It isn't a pressing issue at all. It'd just be nice to have that extra layer of insulation from errant clicks.

                      While I'm here.. I'm fiddling with something outside my typical wheelhouse today, and I'm sure I'm overlooking something obvious, but is a "traditional" first-person setup only possible by playing multiple animations on each mesh using a shared skeleton? "Traditional" here meaning "only-owner-see 1P mesh, owner-no-see 3P mesh" a la ShooterGame.

                      Using different skeletons throws up the expected warnings about skeleton/animation mismatches. Using the shared skeleton seems to be overriding whichever animation plays first with the second, regardless of slot setup or even discrete anim BPs, which is obviously going to cause problems in anything more developed than a very limited test scenario. I've seen mention of folks doing FPS with Able, so I'm fairly sure it's just something I've missed in my experiments.
                      Able doesn't care about Skeletons, but it doesn't know which skeleton to use if you somehow have multiples - so it tries to play it on all on them. So yes, in that case you would need a shared skeleton. I can look at a way to try and allow logic for both but I fear that might be a bit of a rabbit hole and make the task too complicated for people who don't use multiple skeletons.
                      Originally posted by Herr Edgy View Post
                      The bug I reference would affect blending too. It's a pretty nasty bug, I was shocked I didn't catch it and it wasn't reported sooner. If you want to apply the fix locally, you can edit AnimNode_AbilityAnimPlayer.cpp and paste the following method over the current one:

                      Code:
                      void FAbilityAnimEntry::UpdateEntry(float deltaTime)
                      {
                        TimeAccumulator = FMath::Clamp(TimeAccumulator + deltaTime, 0.0f, AnimationSequence->SequenceLength);
                      }
                      The bug that currently exists is that the "+ deltaTime" was missing, so entries never progressed - which would screw up blending and a few other things.
                      Able Ability System - A high performance, robust ability system for UE4. Now Available!

                      Comment


                        Originally posted by ExtraLifeMatt View Post

                        Able doesn't care about Skeletons, but it doesn't know which skeleton to use if you somehow have multiples - so it tries to play it on all on them. So yes, in that case you would need a shared skeleton. I can look at a way to try and allow logic for both but I fear that might be a bit of a rabbit hole and make the task too complicated for people who don't use multiple skeletons.
                        I actually prefer the shared skeleton approach, I was just trying anything I could think of to get the distinction made, and I definitely wouldn't suggest up-ending the system as is. Could the animation asset binding expose a hook to grab an anim instance override using the dynamic identifier, maybe? I could absolutely be wrong, but I'd guess if you're digging in far enough to be binding the asset, you can probably manage an interface call for which anim instance is gonna play it.

                        Click image for larger version  Name:	UE4Editor_FAiRsldf33.png Views:	0 Size:	75.9 KB ID:	1830808
                        Click image for larger version  Name:	UE4Editor_NlcUhylgZN.png Views:	0 Size:	118.9 KB ID:	1830809
                        Last edited by soctty; 11-09-2020, 09:59 PM. Reason: Here I am implying that I'm savvy in one breath, and breaking quote tags in the next. GG, Scotty.
                        @thereisnoscotty
                        Grand Marshal of the Parade of Madfellows

                        Comment


                          Originally posted by ExtraLifeMatt View Post
                          The bug I reference would affect blending too. It's a pretty nasty bug, I was shocked I didn't catch it and it wasn't reported sooner. If you want to apply the fix locally, you can edit AnimNode_AbilityAnimPlayer.cpp and paste the following method over the current one:

                          Code:
                          void FAbilityAnimEntry::UpdateEntry(float deltaTime)
                          {
                          TimeAccumulator = FMath::Clamp(TimeAccumulator + deltaTime, 0.0f, AnimationSequence->SequenceLength);
                          }
                          The bug that currently exists is that the "+ deltaTime" was missing, so entries never progressed - which would screw up blending and a few other things.
                          I implemented that fix as you suggested, however, that is making my animation play twice as fast. It also didn't fix the blending issue. You probably implemented that missing delta time elsewhere already as it wasn't progressing properly, so now it's added twice. That's my assumption anyways.
                          I'm curious how that has gone under the radar for so long? Aren't people using the ability animation node for combos? Or for anything really?

                          MichaelLiew
                          Just not using an option is not a good.. option. I'd rather help fixing it.

                          Comment


                            Originally posted by Herr Edgy View Post
                            I implemented that fix as you suggested, however, that is making my animation play twice as fast. It also didn't fix the blending issue. You probably implemented that missing delta time elsewhere already as it wasn't progressing properly, so now it's added twice. That's my assumption anyways.
                            I'm curious how that has gone under the radar for so long? Aren't people using the ability animation node for combos? Or for anything really?

                            MichaelLiew
                            Just not using an option is not a good.. option. I'd rather help fixing it.
                            Yea, looks like 4.25 / 4.26 update that value elsewhere - which is why you see it going twice. Interesting. So the original way was correct, I wonder if the guy that reported that bug is using an earlier engine version. I'll double check with him.

                            You may want to put your branch just a bit before your Ability actually ends, so you never leave the Ability Anim state in your Animation Blueprint. If you queue up the next animation, your "Has Ability Animation" bool should never return false until the 2nd animation is done.

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

                            Comment


                              Originally posted by ExtraLifeMatt View Post

                              Yea, looks like 4.25 / 4.26 update that value elsewhere - which is why you see it going twice. Interesting. So the original way was correct, I wonder if the guy that reported that bug is using an earlier engine version. I'll double check with him.

                              You may want to put your branch just a bit before your Ability actually ends, so you never leave the Ability Anim state in your Animation Blueprint. If you queue up the next animation, your "Has Ability Animation" bool should never return false until the 2nd animation is done.
                              My branch is already set up like that, and it never evaluates to false after the first attack has started.
                              Even plugging in _only_ the ability anim node into the anim BP results in it, so the idle animation is not even considered. It appears to be the starting frame(s) of the first attack (which starts from the idle).

                              From my perspective everything is set up correctly, just the blending is simply put..broken.

                              Comment


                                Hello! I've been loving ABLE so far! I saw a reply earlier stating it was easy for ABLE to hook into existing Stat systems, like AttributeSet from Unreals GAS.

                                What is the best way to do this? Should I be including "AttributeSet.h" into "ablAbility.h" or "ablAbilityComponent.h" or something entirely different? When I attempted this II ran into issues with the compiler, where it could not find attributeSet classes or "cannot open source file "attributeSet.generated.h". Am I missing a step here?
                                Example - [ #include "../../../../../Runtime/GameplayAbilities/Source/GameplayAbilities/Public/AttributeSet.h"]


                                My goal is to utilize curve tables for unique abilities and having that attached to my Able ability blueprints seems like a great method. So far it looks like curve tables are heavily interwoven within the GAS/Attribute system and since I've been running into problems exposing that to the able system I am at a loss for how to progress.

                                What would be a better method of extracting data from a curve table into the Able system?

                                Comment

                                Working...
                                X