Thanks Yea, itās stupid easy and pretty powerful.
BTW, I didnāt forget about your request do to a charged Ability video. I just need to find the right assets since thatās something you normally have custom animations for. I might do a simple top down shooter example and combine that with something like the data driven systems. Still thinking on it.
Version 1.2 Notes (submitted to Epic, should be released later in the week).
Ability cooldown can be data driven at runtime by overriding the GetCooldown method (which by default just returns the hardcoded BaseCooldown value). The v1.0-1.1 GetCooldown method is now called GetBaseCooldown.
Tasks now have a Verbose option which will print info to the log (and optionally to the screen). This option (and logic) is automatically stripped for Shipping builds.
Various settings have been added to allow adjusting the behavior of the Verbose output (you can find them in your Able Plugin settings).
There is now a āCustomā Targeting option which will call into the Abilityās FindTargets(ā¦) Blueprint method which you can use to populate Targets using your own logic (or copy results from your own targeting system into Able).
Removed a debug warning statement in the Play Montage call.
Fixed an issue with dependencies and non-looping tasks not getting executed properly.
More non-unity build fixes due to missing headers.
Small note. V1.2 now has a custom targeting mode for you to pass your own set of targets into Able. This came as a feature request from someone who wanted to hook their own Targeting system into Able.
Ahh, I havenāt played with Persona too much so I didnāt know you could make animations with it. My programmer art is terrible, so I tend to avoid trying to make assets myself - but Iāll see what I can do.
Woo! Second place on the community interest poll. Thanks for all your votes and support! Iām working on a damage video which I hope to have out soon-ish (probably this weekend).
Howdy, Iām having an issue playing an animation using the Ability Animation Node, on an ability that IsLooping, and Channeled indefinitely.
(The idea is to have an ability perform a block with a corresponding block_loop animation)
I followed the tutorial listed here and that works,
but If I try to do a Layered Blend Per Bone, or play any other animation that isnāt the āPlay Ability Animationā node, I always get a pop/stutter of the final animation.
Iād be curious to see your Animation State Machine as that is likely where the pop is occurring. However, thereās another approach you may want to try that I personally use in situations like the one you described:
When doing Looping animations (blocking, jumping/falling, etc), Iāve found the best way to control those is to break out your animation in 3 separate clips (start, loop, end) and setup a simple flow in your Animation State Machine like this:
Check some state -> Transition to the start animation -> Once that animation is done -> Transition to the looping Animation -> Loop until the State becomes False -> Transition to the end animation.
Which looks like this in the actual Animation State Machine/Blueprint (in this setup, itās for a greeting animation which has a start - lifting the arm, a middle - looping waving animation, and an end - lowering the arm):
Then all you have to do in Able is use a Custom Event Task(or on AbilityStart/End), and simply set the state on/off on your character which is then read by the Animation blueprint and reacts accordingly.
Ideally Iād love to data drive this aspect (probably through a custom Animation State Machine Node like Play Ability Animation Node), but the use cases have been pretty limited/special case which you normally want to customize things anyway. Still, might be something fun to look into adding even if it isnāt necessarily Able specific.
How can i do a sailing system in able? iāve seen many sail boat/ship project, but any with a character moving the helm like many people did with their driving systems/car controller (Assassins creed 4 Black Flag, like. in third person).
PD: i know is quite complex, but just the sailing, without the physics, etc⦠the real question is how can i sail a ship?
Sailing is effectively itās own game in Black Flag. Rather than controlling the player, you are controlling a ship and passing in various data to your animation system so he spins the wheel properly, etc. That requires its own code/systems, something like that is outside of Ableās scope. Although once you have the ship controls all setup, you could use Able to fire Cannons and other things.
Apologies for the lack of thread updates, I was out at a developer conference this week. Looks like v1.3 is now live. Let me know if you run into any issues and, as always, thanks for your support!
I have some questions about using the plugin. I have a Blueprint/C++ project for a game that Iām working on for my studio. Iāve downloaded Able, copied the plugin folder to my projectās plugin folder, and enabled it. Iāve created some DataAsset classes that our designers can use to create data assets for items and what-not. What Iām wanting to do is for our designers to add activated and passive abilities (created with Able :)) to a data assets for an item (or whatever else I add it to), and I canāt quite figure it out. Unfortunately, your C++ docs arenāt up yet. Hereās what Iām getting at:
#include "Engine/DataAsset.h"
#include "ablAbilityBlueprint.h"
#include "ItemData.generated.h"
/**
*
*/
UCLASS(BlueprintAble)
class SAVAGEDAWN_API UItemData : public UDataAsset
{
GENERATED_BODY()
public:
// Property for the name of the item
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "General")
FString Name;
// Property for a description for the item
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "General")
FString Description;
// Property for an icon to represent the item
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "General")
UTexture2D* Icon;
// Property that indicates if the item is consumable
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Usage")
bool IsConsumable;
// Property that indicates if the item is equippable
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Usage")
bool IsEquippable;
// Property that contains a list of activated abilities
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Abilities")
TArray<UAblAbilityBlueprint*> ActivatedAbilities;
};
Currently, this doesnāt work. How can I design my classes so that designers can add Able abilities that theyāve created to them?
Since they are simply classes under the hood. Iām not sure you can use a UDataAsset to point to a runtime UObject, but the class info is serialized and should be fine. Looking at other examples in the engine, that seems to be how they work around this.
Also, Version 1.4 has been submitted:
Fix to various Task fields not being modifiable in 4.15.x (seemed to only affect object references).
Fix to OnAbilityStart not being called properly.
Fix to āRecently Pressedā Branch Condition not working properly (now you can specify a time window for what recently pressed means).
Able now is initialized in the PreDefault phase to avoid race conditions with Actor initialization.
Thank you for your response. What class should I use to refer to an ability asset thatās created with the plugin? In other words, the designer creates an ability in the content browser and wants to add it to a data asset.
Thatās actually how the Play Ability Task works under the hood. Since theyāre all classes under the hood, you can just reference your Ability that way.
Wanted to report a bug with the āMust Be Recently Pressedā flag on a Branch Taskās Conditions.
I setup two abilities that call each other, and bound them to the left mouse button, and when I hold it, it calls each ability repeatedly.