Thanks for the elaboration @ExtraLifeMatt. I’m taking my time figuring out how I want to use this plugin, but the end goal is to use C++ and be able to create abilities at runtime. I’m hoping to use Able as an interpreter for a domain specific language. Abilities will be able to be created with that language and then executed using Able (all without recompiling).
I’m still inspecting the Able codebase and trying to figure out how I should go about constructing the DSL still. It looks like I should create some generic UAblAbility classes and then programmatically add tasks to the m_Tasks property based on what is written with the DSL. After creating the ability, it also looks like there is a validator that can be used to check for things like circular dependencies. That doesn’t seem too complicated, but as the author of the plugin do you have any tips/suggestions for my use case?
I’m probably not going to make the DSL too open ended. A single component of an ability may be a group of components that all do something. There may also be a chain of Able abilities that make up the ability that will be expressed with the DSL as well. I’d like to support things similar to the chain lightning tutorial, except the ability will be created at runtime. That’ll take a bit of thought to get figured out, but it’s probably possible.
Nope. You pretty much have it figured out. Just make sure the Hash for the ability name is being calculated properly as that is used as an identifier everywhere. If you are creating a new object and then setting the name, you’ll need to add a method or something to recalculate that hash. That’s the only “gotcha” I can think of off the top of my head.
You a Genius, doing a Lot of research and planning. Game is gonna be just all Gameplay Tags and Data tables!
Since there is so much involved in this game, Like only certain things can kill different things
Vampires can only be decapitated and Ghosts can be attacked by Iron or salt for example, Using Gameplay Tag containers in the datatables in order to get the info on the enemies
Gonna make a couple of Actor components and BPI also and base all characters including enemies and players off base character in it
May be this is a bug?I make a collision task in able,the collison channel set to my custom channle named “enemy”,of course I set all enemy to the this channel.
then I override On Collsion Event function, when the function called,in Hit Entities,it never get enemy.I set collision task channel back to WorldDynamic,and it works fine.
In my enemy blueprint nothing is in WorldDynamic channel,they all in “enemy” channle.
If I set Query source to Target Actor,when Target Actor is null, it will crash editor in
AActor* SourceActor = m_QueryLocation.GetSourceActor(*Context.Get());
I know I’m in a wrong way to use query task,but how ever it should not crash,you can give a message to tell user it’s wrong.
I would double check your collision settings. Sounds like somehow your enemies are getting put on the WorldDynamic layer. Able just passes things along to the underlying collision query call, but I’ll double check to make sure.
So, normally I actually prefer crashing than limping along. The crash is the message, in a way. However, this case may be a bit overzealous. I’ll see if I can make it more forgiving.