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
    Able v2.1 Submitted.

    - Added "Play Rate" to Abilities. This is a modifier applied to time passed to the Ability during it's update so a value of 0.5 plays the Ability at half speed, 2.0 is double, and 1.2 is 20% faster. You can set it directly, or override the "GetPlayRate" method to dynamically change the play rate based on whatever gameplay mechanics you have (you can use GetBasePlayRate to get the value you've defined on the Ability). This value isn't cached so if you modify it during an Ability's execution - it will immediately take effect.
    - Fixed an issue with Socket Rotation being incorrect (let me know if you run into any issues).
    - Fixed an issue where Cooldowns weren't being properly applied on Abilities you had created during an Editor session. If you still see this behavior, simply modify any field on the Ability and the system will fix itself.

    A note about Play Rate. I plan to update PlayAnimation Task to automatically scale itself along with the Ability Play Rate (so Animation Play Rate * Ability Play Rate ) but that will have to go in the 2.11 update as I completely forgot about it till just now and cancelling product updates is nasty business. I'll likely make it an option so if you want your animation to play at normal rate no matter what the Ability rate is - you can keep that behavior.
    Fantastic update, thanks for keeping the plugin going in terms of constant updates.
    Lead Developer of Blades of Orterra | Facebook | Twitter | Official Website

    Comment


      Thanks for update, I can get v2.1 now, the update is awosome! Here, I report PlayAnimation bug again. Because we are ACT Game, so, I really need montage, but Able's PlayAnimation can't switch smoothly from one montage to another montage (Your <simple combo ability> tutorial also not smoothly). I try to fix it in souce code, but i failed. Now, I use custom event like below picture, it will play smoothly.
      Click image for larger version

Name:	0000.png
Views:	26
Size:	112.3 KB
ID:	1398716

      Comment


        Originally posted by George.Xiao View Post
        Thanks for update, I can get v2.1 now, the update is awosome! Here, I report PlayAnimation bug again. Because we are ACT Game, so, I really need montage, but Able's PlayAnimation can't switch smoothly from one montage to another montage (Your <simple combo ability> tutorial also not smoothly). I try to fix it in souce code, but i failed. Now, I use custom event like below picture, it will play smoothly.
        Click image for larger version

Name:	0000.png
Views:	26
Size:	112.3 KB
ID:	1398716
        Hmmm... I don't see you specifying a blend time in there, I assume Play Montage is just defaulting to some blend. I'll investigate.
        Able Ability System - A high performance, robust ability system for UE4. Now Available!

        Comment


          Any chance to make EAblAbilityStartResult CanAbilityExecute(UAblAbilityContext& Context) const; virtual?
          I have my custom Ability and would like to override basic functionality.
          How to create first person shooter game from scratch. Lots of tutorials: http://www.shootertutorial.com - celebrating 50th Tutorial!

          My Marketplace Assets

          Comment


            Originally posted by intoxicat3 View Post
            Any chance to make EAblAbilityStartResult CanAbilityExecute(UAblAbilityContext& Context) const; virtual?
            I have my custom Ability and would like to override basic functionality.
            Since that method (on the AbilityComponent) is exposed to Blueprints, I'll have to check if virtual causes any issues. However, each Ability has a CustomCanAbillityExecute that can be overridden in Blueprints to add any special logic.
            Able Ability System - A high performance, robust ability system for UE4. Now Available!

            Comment


              Yes I know but I would like to override it in C++ not Blueprints. The same goes for AbilityStarted/Ended/Interupted etc I have changed it to virtual by my self and it doesn't causing any issues for now but I don't like to make this change with every update.

              Please be aware that some of users are using C++ instead of Blueprints to have necessary references in C++. Basically with UAblAbility there aren't any virtual C++ functions that can be override and you can imagine that OnStart/End are the most important and I needed to create this functionality by my own in AbilityInstance (just call my virtual functions before Blueprint event)
              Last edited by intoxicat3; 12-13-2017, 12:30 PM.
              How to create first person shooter game from scratch. Lots of tutorials: http://www.shootertutorial.com - celebrating 50th Tutorial!

              My Marketplace Assets

              Comment


                Originally posted by intoxicat3 View Post
                Yes I know but I would like to override it in C++ not Blueprints. The same goes for AbilityStarted/Ended/Interupted etc I have changed it to virtual by my self and it doesn't causing any issues for now but I don't like to make this change with every update.

                Please be aware that some of users are using C++ instead of Blueprints to have necessary references in C++. Basically with UAblAbility there aren't any virtual C++ functions that can be override and you can imagine that OnStart/End are the most important and I needed to create this functionality by my own in AbilityInstance (just call my virtual functions before Blueprint event)
                The systems was designed to be friendly towards BP users, so yea, if you're going pure C++ then I'm not shocked you're hitting some obstacles. But I'm glad you're not seeing any issues making things virtual.

                I'll make a pass to toss virtual on everything that makes sense this weekend for the next update.
                Able Ability System - A high performance, robust ability system for UE4. Now Available!

                Comment


                  Thanks - basically having those virtual functions would be great! Start/End/Interrupt. Shouldn't be hard to do. I'm not doing pure C++ - just don't want to have cross references (BP vs C++) so most of my core stuff is in C++, blueprints are for configuration and adding task only. I'm using UE for years and BP can mess a lot.

                  btw: feature request: https://i.imgur.com/QGoH9dN.png It would be great to put some custom nodes which require world context objects as I can have one. For now I need to create c++ task to create user widget.
                  How to create first person shooter game from scratch. Lots of tutorials: http://www.shootertutorial.com - celebrating 50th Tutorial!

                  My Marketplace Assets

                  Comment


                    Originally posted by intoxicat3 View Post
                    Thanks - basically having those virtual functions would be great! Start/End/Interrupt. Shouldn't be hard to do. I'm not doing pure C++ - just don't want to have cross references (BP vs C++) so most of my core stuff is in C++, blueprints are for configuration and adding task only. I'm using UE for years and BP can mess a lot.

                    btw: feature request: https://i.imgur.com/QGoH9dN.png It would be great to put some custom nodes which require world context objects as I can have one. For now I need to create c++ task to create user widget.
                    I don't understand your feature request as that image has nothing to do with Able (from what I can see - beyond that you're passing in an Ability). Can you elaborate?
                    Able Ability System - A high performance, robust ability system for UE4. Now Available!

                    Comment


                      I will try.

                      I'm not sure 100% but this node hides World Context Objects (which is usually hidden for latent functions for example) which is normally visible when trying put this node in UObject Blueprint (which doesn't have world context objects - only Actor Blueprint have) but not in your Ability Blueprint. (and yours is UObject as well) Maybe something need to be added to UCLASS or there is some hidden GetWorldContextObject() function for Blueprint class which will work with this node. My future request is to be able to put this node into Ability Blueprint there might be other like this which won't work in Abl Blueprints.
                      How to create first person shooter game from scratch. Lots of tutorials: http://www.shootertutorial.com - celebrating 50th Tutorial!

                      My Marketplace Assets

                      Comment


                        Originally posted by intoxicat3 View Post
                        I will try.

                        I'm not sure 100% but this node hides World Context Objects (which is usually hidden for latent functions for example) which is normally visible when trying put this node in UObject Blueprint (which doesn't have world context objects - only Actor Blueprint have) but not in your Ability Blueprint. (and yours is UObject as well) Maybe something need to be added to UCLASS or there is some hidden GetWorldContextObject() function for Blueprint class which will work with this node. My future request is to be able to put this node into Ability Blueprint there might be other like this which won't work in Abl Blueprints.
                        Ah, I see. I'm not sure the implications from that.

                        If you want to try it locally, add this:

                        Code:
                        UFUNCTION(Blah,  meta=(WorldContext="WorldContextObject", CallableWithoutWorldContext))
                        To whatever method you are overriding in the Blueprint. That should expose the WorldContextObject as a parameter, as well as keeping the method callable without specifying the World Context Object,
                        Able Ability System - A high performance, robust ability system for UE4. Now Available!

                        Comment


                          Speaking of C++ I just started looking into using Able in a C++ based project, but I am having trouble setting up Build.cs to properly reference the plugin. I think it ought to be really simple, but I can't find any good docs or information on exactly the include paths to use. Do you mind posting the relevant part of your Build.cs intoxicat3?

                          If you're going to spend a little time working on the C++ interface ExtraLifeMatt, it might be helpful to setup an example project based on one of Epic's C++ templates. It would be a good way to test the interface too.

                          EDIT: OK I figured out that I needed to include the AbleCore module, not Able. Here's what I have in the Build.cs file now in case someone stumbles upon this thread looking for the information:
                          Code:
                          PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "AbleCore" });
                          PublicIncludePaths.AddRange(new string[] { "AbleCore/Classes" });
                          Last edited by ophi42; 12-14-2017, 02:16 AM.

                          Comment


                            Found a bug:
                            https://i.imgur.com/XzstzOf.png

                            If you use such filters in Collision Query it will filter everything by RogalPlayerCharacter not keeping another negate filter: RogalFriendlyAICharacter. It should negate filter both of them not only first one.
                            How to create first person shooter game from scratch. Lots of tutorials: http://www.shootertutorial.com - celebrating 50th Tutorial!

                            My Marketplace Assets

                            Comment


                              So this is an odd thing that happens when I have an ability animation set to "Single Node" play settings.
                              When I go to view in the AnimGraph, I see in the debug filter that there are several instances of the AnimBP, one for each time I used the ability in game:




                              Not sure what the deal is, perhaps this is expected behavior, but this makes debugging other things though if I have to go and select the new instance everytime I execute the ability, this doesn't happen when I choose any other setting.

                              Comment


                                Originally posted by intoxicat3 View Post
                                Found a bug:
                                https://i.imgur.com/XzstzOf.png

                                If you use such filters in Collision Query it will filter everything by RogalPlayerCharacter not keeping another negate filter: RogalFriendlyAICharacter. It should negate filter both of them not only first one.
                                That's not a bug from what you're describing. Filters are executed in order. So, it would exclude everything that isn't a RogalPlayerCharacter, and then takes the results from that and try to filter any RogalFriendlyAICharacter's (which I assume aren't RogalPlayerCharacters and thus don't exist). You can use the Custom Filter option and just provide some Blueprint code to figure out which actors to keep if the base filters are being a bit too strict for your case.


                                Originally posted by Aumaan Anubis View Post
                                So this is an odd thing that happens when I have an ability animation set to "Single Node" play settings.
                                When I go to view in the AnimGraph, I see in the debug filter that there are several instances of the AnimBP, one for each time I used the ability in game:




                                Not sure what the deal is, perhaps this is expected behavior, but this makes debugging other things though if I have to go and select the new instance everytime I execute the ability, this doesn't happen when I choose any other setting.
                                That's normal. When you modify a Blueprint - it just appends a number for the class (So MyBlueprint_C1, C2, C3, etc). They should go away once you restart the editor as only the latest is actually kept on disk - the others are just hanging out in memory or until GC gets them.

                                EDIT: Able v2.11 submitted, this adds an option to scale Animations with Ability Play Rate. Pretty small update, but I deemed the other things (more virtual functions, possibly exposing the World Context object on all BP calls) too risky at the moment. Going to hammer on them some more through the Holidays before I push them out.
                                Last edited by ExtraLifeMatt; 12-17-2017, 05:38 PM.
                                Able Ability System - A high performance, robust ability system for UE4. Now Available!

                                Comment

                                Working...
                                X