Announcement

Collapse
No announcement yet.

Able Ability System Info and Support Thread

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

    ExtraLifeMatt Mate - honestly the spawn actor task is giving me the worst time ever! The targeting logic doesn't do what I would expect it to do, even when reading the documentation and description tooltip of the nodes and variables directly. the target logic camera doesn't seem to work.. always returns 1,0,0. Custom location is giving me a hard time. And when I finally was able to spawn the actor where I wanted, Now I have no freaking idea how to setup rotation to a custom calculated rotation I want it to be. Especially that the event takes place only on the server, so my camera rotation is not reliable on the server... My controller rotation only the Y-axis is reliable on the server. But target logic is set on the client and replicated? or it runs when the ability triggers and can vary from client to server? It seems I can only use actor not scene component as any target reference... scene component can be literally anything with a transform. and any scene component can have a socket and uses "get socket location/rotation" function. As an actor... well is inconsistent. I didn't think spawning a projectile in the left hand and orienting it toward "calculate rotation" by default would be such a challenge. I would very much appreciate some tips on how to spawn projectile in specific rotation from the specific point!

    I managed to work around it by using custom event task, but it's not how properly it should be set up and not something I would like to feature in a tutorial.
    Last edited by AngeIV; 09-12-2020, 03:07 PM.

    Comment


      Originally posted by AngeIV View Post
      ExtraLifeMatt Mate - honestly the spawn actor task is giving me the worst time ever! The targeting logic doesn't do what I would expect it to do, even when reading the documentation and description tooltip of the nodes and variables directly. the target logic camera doesn't seem to work.. always returns 1,0,0. Custom location is giving me a hard time. And when I finally was able to spawn the actor where I wanted, Now I have no freaking idea how to setup rotation to a custom calculated rotation I want it to be. Especially that the event takes place only on the server, so my camera rotation is not reliable on the server... My controller rotation only the Y-axis is reliable on the server. But target logic is set on the client and replicated? or it runs when the ability triggers and can vary from client to server? It seems I can only use actor not scene component as any target reference... scene component can be literally anything with a transform. and any scene component can have a socket and uses "get socket location/rotation" function. As an actor... well is inconsistent. I didn't think spawning a projectile in the left hand and orienting it toward "calculate rotation" by default would be such a challenge. I would very much appreciate some tips on how to spawn projectile in specific rotation from the specific point!

      I managed to work around it by using custom event task, but it's not how properly it should be set up and not something I would like to feature in a tutorial.
      Both Client and Server each run their own targeting logic, so it's possible they don't match 1:1. I try to trust the Client as little as possible, especially when it comes to Targeting. However, the server should have your camera transform. When I did the Shooter tutorial, I used the camera transform to aim towards the eye point of a character and it worked with the Server.

      Granted that was a while ago, but I doubt that logic has changed. I can verify however. You can kind of skip all that however and just spawn the projectile at one spot (left hand, like you mention). Ignore the socket rotation. Then in OnSpawnedActor, set the Actor rotation there to point towards your target, along with any velocity information or what not.
      Able Ability System - A high performance, robust ability system for UE4. Now Available!

      Comment


        Originally posted by ExtraLifeMatt View Post

        Both Client and Server each run their own targeting logic, so it's possible they don't match 1:1. I try to trust the Client as little as possible, especially when it comes to Targeting. However, the server should have your camera transform. When I did the Shooter tutorial, I used the camera transform to aim towards the eye point of a character and it worked with the Server.

        Granted that was a while ago, but I doubt that logic has changed. I can verify however. You can kind of skip all that however and just spawn the projectile at one spot (left hand, like you mention). Ignore the socket rotation. Then in OnSpawnedActor, set the Actor rotation there to point towards your target, along with any velocity information or what not.
        I cant set rotation of the actor.. but it might be to the nature of projectile movement and how it's rotating the projectile toward the velocity. after spawned it is just impossible to rotate. The camera as a spawn point is pointless in top-down view, where the rotation of the camera is not even aligned with the rotation of both the actor nor its controller. What I would wish to be able to pick separately spawn location origin, and rotation origin.
        The character could have multiple cameras! And one for aiming could not be the one that is active at the moment. nor first inside the actor components list.
        Right now I made a hack. There is a virtual bone that is being set as the proper view to spawn.. and virtual bones can be read like "socket" but adding special points for every weapon type would be annoying. I could as well do an invisible WEAPON actor that has ability component, it could be the "target" and players active ability plays animation etc, and a passive spawn projectile ability on the "target" that is the weapon.
        There are multiple workarounds for that... But best would be a possibility to do a BINDING for the spawn transform altogether (so location rotation and scale) like you can bind multiple other values in tasks. And do a custom spawn point inside the ability itself so it's safe to use. Also, I see you allow to spawn actor only on the server. Many games have this approach of non-replicated projectiles with replicated just the spawn event in exact same location and time, but I think "only server" is for the best forcing any spawns to be replicated actor.

        Comment


          Originally posted by AngeIV View Post

          I cant set rotation of the actor.. but it might be to the nature of projectile movement and how it's rotating the projectile toward the velocity. after spawned it is just impossible to rotate. The camera as a spawn point is pointless in top-down view, where the rotation of the camera is not even aligned with the rotation of both the actor nor its controller. What I would wish to be able to pick separately spawn location origin, and rotation origin.
          The character could have multiple cameras! And one for aiming could not be the one that is active at the moment. nor first inside the actor components list.
          Right now I made a hack. There is a virtual bone that is being set as the proper view to spawn.. and virtual bones can be read like "socket" but adding special points for every weapon type would be annoying. I could as well do an invisible WEAPON actor that has ability component, it could be the "target" and players active ability plays animation etc, and a passive spawn projectile ability on the "target" that is the weapon.
          There are multiple workarounds for that... But best would be a possibility to do a BINDING for the spawn transform altogether (so location rotation and scale) like you can bind multiple other values in tasks. And do a custom spawn point inside the ability itself so it's safe to use. Also, I see you allow to spawn actor only on the server. Many games have this approach of non-replicated projectiles with replicated just the spawn event in exact same location and time, but I think "only server" is for the best forcing any spawns to be replicated actor.
          Bindable Spawn Locations is on my TODO list. It just requires a bit of tricky-ness because the underlying object is a simple struct and not a UObject like most the other things that are bindable. But, feedback noted and I'll try and bump it up the priority list.
          Able Ability System - A high performance, robust ability system for UE4. Now Available!

          Comment


            Ok I will do hack for now and do another one once its updated
            By the way I also had terrible problems using "Target" or "location" as spawn point. as target is an actor I guess? so good for "hack" way to go around precise spawn point and orientation, but the location - whatever I push into it it just spawned at 0,0,0.

            Comment


              Hi, Unreal editor is going to crash very often when i switch from Character BP to Able Components. It freezes and then crashes. I using ALS for Character BP, some mentioned bugs with ALS here also, but i dont know whats causing some editor bugs with ALS. I would not mentioned if it isnt very annoying crashing every 2 or 5 minute. Maybe there is some ASync Problem. Here is a Crash Report i recently got, maybe there is some way to getting the system more robust.

              Code:
              Unhandled Exception: EXCEPTION_ACCESS_VIOLATION writing address 0x000002e0
              
              UE4Editor_ALSV4_CPP_0006!AALSBaseCharacter::SetAcceleration() [G:\UnrealEngine\Projekte\_Prototype01\Prototype_01\Plugins\ALSV4_CPP-main\Source\ALSV4_CPP\Private\Character\ALSBaseCharacter.cpp:697]
              UE4Editor_ALSV4_CPP_0006!AALSBaseCharacter::SetEssentialValues() [G:\UnrealEngine\Projekte\_Prototype01\Prototype_01\Plugins\ALSV4_CPP-main\Source\ALSV4_CPP\Private\Character\ALSBaseCharacter.cpp:956]
              UE4Editor_ALSV4_CPP_0006!AALSBaseCharacter::Tick() [G:\UnrealEngine\Projekte\_Prototype01\Prototype_01\Plugins\ALSV4_CPP-main\Source\ALSV4_CPP\Private\Character\ALSBaseCharacter.cpp:188]
              UE4Editor_ALSV4_CPP_0006!AALSCharacter::Tick() [G:\UnrealEngine\Projekte\_Prototype01\Prototype_01\Plugins\ALSV4_CPP-main\Source\ALSV4_CPP\Private\Character\ALSCharacter.cpp:117]
              UE4Editor_Engine!AActor::TickActor() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\Actor.cpp:1009]
              UE4Editor_Engine!FActorTickFunction::ExecuteTick() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\Actor.cpp:171]
              UE4Editor_Engine!FTickFunctionTask: :DoTask() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\TickTaskManager.cpp:283]
              UE4Editor_Engine!TGraphTask<FTickFunctionTask>::ExecuteTask() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:849]
              UE4Editor_Core!FNamedTaskThread::ProcessTasksNamedThread() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:692]
              UE4Editor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:587]
              UE4Editor_Core!FTaskGraphImplementation::WaitUntilTasksComplete() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:1478]
              UE4Editor_Engine!FTickTaskSequencer::ReleaseTickGroup() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\TickTaskManager.cpp:558]
              UE4Editor_Engine!FTickTaskManager::RunTickGroup() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\TickTaskManager.cpp:1523]
              UE4Editor_Engine!UWorld::RunTickGroup() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\LevelTick.cpp:783]
              UE4Editor_Engine!UWorld::Tick() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\LevelTick.cpp:1558]
              UE4Editor_AbleEditor!FAbilityEditorViewportClient::Tick() [D:\Build\++Portal+Promotion\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\Able\Source\AbleEditor\Private\AbilityEditor\ablAbilityEditorViewportClient.cpp:229]
              UE4Editor_UnrealEd!UEditorEngine::Tick() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Editor\UnrealEd\Private\EditorEngine.cpp:1770]
              UE4Editor_UnrealEd!UUnrealEdEngine::Tick() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Editor\UnrealEd\Private\UnrealEdEngine.cpp:414]
              UE4Editor!FEngineLoop::Tick() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:4850]
              UE4Editor!GuardedMain() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:169]
              UE4Editor!GuardedMainWrapper() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:137]
              UE4Editor!WinMain() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:268]
              UE4Editor!__scrt_common_main_seh() [d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
              kernel32
              ntdll

              Comment


                Hello, can someone please post a tutorial even on text, pictures or video how to do a charge shot like megaman that you can continue holding.

                I have search this post but the explanations are over the surface and not good enough for my knowledge I'm sorry

                Comment


                  Originally posted by Badb3nd3r View Post
                  Hi, Unreal editor is going to crash very often when i switch from Character BP to Able Components. It freezes and then crashes. I using ALS for Character BP, some mentioned bugs with ALS here also, but i dont know whats causing some editor bugs with ALS. I would not mentioned if it isnt very annoying crashing every 2 or 5 minute. Maybe there is some ASync Problem. Here is a Crash Report i recently got, maybe there is some way to getting the system more robust.

                  Code:
                  Unhandled Exception: EXCEPTION_ACCESS_VIOLATION writing address 0x000002e0
                  
                  UE4Editor_ALSV4_CPP_0006!AALSBaseCharacter::SetAcceleration() [G:\UnrealEngine\Projekte\_Prototype01\Prototype_01\Plugins\ALSV4_CPP-main\Source\ALSV4_CPP\Private\Character\ALSBaseCharacter.cpp:697]
                  UE4Editor_ALSV4_CPP_0006!AALSBaseCharacter::SetEssentialValues() [G:\UnrealEngine\Projekte\_Prototype01\Prototype_01\Plugins\ALSV4_CPP-main\Source\ALSV4_CPP\Private\Character\ALSBaseCharacter.cpp:956]
                  UE4Editor_ALSV4_CPP_0006!AALSBaseCharacter::Tick() [G:\UnrealEngine\Projekte\_Prototype01\Prototype_01\Plugins\ALSV4_CPP-main\Source\ALSV4_CPP\Private\Character\ALSBaseCharacter.cpp:188]
                  UE4Editor_ALSV4_CPP_0006!AALSCharacter::Tick() [G:\UnrealEngine\Projekte\_Prototype01\Prototype_01\Plugins\ALSV4_CPP-main\Source\ALSV4_CPP\Private\Character\ALSCharacter.cpp:117]
                  UE4Editor_Engine!AActor::TickActor() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\Actor.cpp:1009]
                  UE4Editor_Engine!FActorTickFunction::ExecuteTick() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\Actor.cpp:171]
                  UE4Editor_Engine!FTickFunctionTask: :DoTask() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\TickTaskManager.cpp:283]
                  UE4Editor_Engine!TGraphTask<FTickFunctionTask>::ExecuteTask() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:849]
                  UE4Editor_Core!FNamedTaskThread::ProcessTasksNamedThread() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:692]
                  UE4Editor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:587]
                  UE4Editor_Core!FTaskGraphImplementation::WaitUntilTasksComplete() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:1478]
                  UE4Editor_Engine!FTickTaskSequencer::ReleaseTickGroup() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\TickTaskManager.cpp:558]
                  UE4Editor_Engine!FTickTaskManager::RunTickGroup() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\TickTaskManager.cpp:1523]
                  UE4Editor_Engine!UWorld::RunTickGroup() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\LevelTick.cpp:783]
                  UE4Editor_Engine!UWorld::Tick() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\LevelTick.cpp:1558]
                  UE4Editor_AbleEditor!FAbilityEditorViewportClient::Tick() [D:\Build\++Portal+Promotion\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\Able\Source\AbleEditor\Private\AbilityEditor\ablAbilityEditorViewportClient.cpp:229]
                  UE4Editor_UnrealEd!UEditorEngine::Tick() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Editor\UnrealEd\Private\EditorEngine.cpp:1770]
                  UE4Editor_UnrealEd!UUnrealEdEngine::Tick() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Editor\UnrealEd\Private\UnrealEdEngine.cpp:414]
                  UE4Editor!FEngineLoop::Tick() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:4850]
                  UE4Editor!GuardedMain() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:169]
                  UE4Editor!GuardedMainWrapper() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:137]
                  UE4Editor!WinMain() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:268]
                  UE4Editor!__scrt_common_main_seh() [d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
                  kernel32
                  ntdll
                  Yea, ALS is crashing inside itself. It doesn't like the Ability Editor. You'll need to set your preview actor to something that doesn't use the ALSCharacter as the base.
                  Able Ability System - A high performance, robust ability system for UE4. Now Available!

                  Comment


                    Originally posted by Jose Gabriel View Post
                    Hello, can someone please post a tutorial even on text, pictures or video how to do a charge shot like megaman that you can continue holding.

                    I have search this post but the explanations are over the surface and not good enough for my knowledge I'm sorry
                    1. Make an Ability, call it something like ChargedShot. Set it to channeling -> Input Channel Condition -> Fire or whatever button you want bound to it. This makes it so you have to hold the button for the Ability to continue playing.
                    2. Set the Ability to looping and set the loop window to some small section at the end of the Ability (If you're ability is 3 seconds, set the loop segment from 2.8 - 3.0, or something similar). This makes it so as long as you hold the button, the Ability will loop over and over at the end without exiting.
                    3. In the Ability Blueprint, OnAbilityEnd -> Call the GetAbilityCurrentTimeRatio -> If the ratio is less than 0.33, activate the small blast, if it's less than 0.66 activate the medium blast, otherwise activate the large blast.
                    So, the general flow is you have 1 Ability that will activate 1 of 3 different Abilitys depending on when it ends.
                    Able Ability System - A high performance, robust ability system for UE4. Now Available!

                    Comment


                      ExtraLifeMatt The "can client cancel" default value "false" makes "on input" channel to stop working, as breaking the input condition is doing on client-side cancel. IT probably need some extra condition, as debuffs are usually not channelled. Or it should change the default value to true if the ability uses input channel condition.

                      Comment


                        Originally posted by AngeIV View Post
                        ExtraLifeMatt The "can client cancel" default value "false" makes "on input" channel to stop working, as breaking the input condition is doing on client-side cancel. IT probably need some extra condition, as debuffs are usually not channelled. Or it should change the default value to true if the ability uses input channel condition.
                        Yea, that's expected currently. I can change the default value to True globally (I don't like making it based on some logic the user isn't aware of), but then you open it up to being "unsafe" (hacking-wise) by default. I err'd on the side of security but it does make it seem like a bug to new users - so I may swap it back.
                        Able Ability System - A high performance, robust ability system for UE4. Now Available!

                        Comment


                          yeah... making it default true is fine... As long as you can change some abilities to false. actually in many games buffs and positive effects are cancelable... so why not. and any responsible game dev won't leave stuff on default but pay attention to values like this By the way, thanks for the updates! I appreciate all the hard work you're putting into this system! I encourage anyone I know that is REALLY working on a game to use this system instead of GAS.

                          Comment


                            Originally posted by ExtraLifeMatt View Post
                            1. Make an Ability, call it something like ChargedShot. Set it to channeling -> Input Channel Condition -> Fire or whatever button you want bound to it. This makes it so you have to hold the button for the Ability to continue playing.
                            2. Set the Ability to looping and set the loop window to some small section at the end of the Ability (If you're ability is 3 seconds, set the loop segment from 2.8 - 3.0, or something similar). This makes it so as long as you hold the button, the Ability will loop over and over at the end without exiting.
                            3. In the Ability Blueprint, OnAbilityEnd -> Call the GetAbilityCurrentTimeRatio -> If the ratio is less than 0.33, activate the small blast, if it's less than 0.66 activate the medium blast, otherwise activate the large blast.
                            So, the general flow is you have 1 Ability that will activate 1 of 3 different Abilitys depending on when it ends.




                            How would i play the next ability i tried doing it i get the print with the percent so that is working. I tried using my characters play ability custom event and it does not work.

                            I wll give a youtube link so you can see what I have.

                            https://www.youtube.com/watch?v=8IbXgQA-wzw



                            Comment


                              Originally posted by Jose Gabriel View Post





                              How would i play the next ability i tried doing it i get the print with the percent so that is working. I tried using my characters play ability custom event and it does not work.

                              I wll give a youtube link so you can see what I have.

                              https://www.youtube.com/watch?v=8IbXgQA-wzw


                              Not sure why calling the Event on your character wouldn't work. But you should be able to grab your Owner Actor -> Grab your Ability Component -> Activate Ability with the one you want to use.
                              Able Ability System - A high performance, robust ability system for UE4. Now Available!

                              Comment


                                hey there

                                i was wondering if there is something i have to note and check when working with particels in able? because some particelsystems seem to break when i use them in the ability
                                -some like in the screenshot seem to break alot and some just have certain effects gone

                                any idea what that may be?

                                Click image for larger version

Name:	explosion.jpg
Views:	47
Size:	200.2 KB
ID:	1812576

                                Comment

                                Working...
                                X