Announcement

Collapse
No announcement yet.

Able Ability System Info and Support Thread

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

  • replied
    haha Matt,
    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

    Cheers matt

    Leave a comment:


  • replied
    well it works now Woop
    You should check it out. Awesome and easy to use to make any AI!!!

    Leave a comment:


  • replied
    Originally posted by jwyuen View Post
    Hey
    I am doing something new now.
    I am gonna try and put this into AI Behaviour Toolkit So instead of play animations it will play ability
    What do you think?

    https://www.unrealengine.com/marketp...havior-toolkit

    Jesse
    Sounds good. I haven't used that plugin myself, but it should be do-able I would imagine.

    Leave a comment:


  • replied
    Hey
    I am doing something new now.
    I am gonna try and put this into AI Behaviour Toolkit So instead of play animations it will play ability
    What do you think?

    https://www.unrealengine.com/marketp...havior-toolkit

    Jesse

    Leave a comment:


  • replied
    Originally posted by Decriment View Post

    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.

    Leave a comment:


  • replied
    Originally posted by ExtraLifeMatt View Post

    Pablo1517 Pretty much nailed it but to elaborate:

    Able was built as my replacement for Gameplay Ability System since that system was heavily built around Paragon at the time and it was really difficult to quickly throw together a simple Ability. That doesn't mean the two systems (Able and GAS) can't work side by side, but it was definitely meant as a way to replace GAS.

    You can create Abilities at runtime, but you would have to do it in C++. However, Able allows for various runtime parameters so if you can create a basic framework of an Ability (I know I need to play some animation and then do a query and apply some amount of damage), then you can use those runtime parameters to fill in the details (play X animation, use this logic for my query, and then here's the damage based on my stats/etc).

    And yes, you can an unlimited amount of Passives active. The whole Active vs Passive separation is entirely a design one that fits with most games, but under the hood the two are treated almost identically.
    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.

    Leave a comment:


  • replied
    Originally posted by Pablo1517 View Post
    FALSE ALARM.
    We confirmed it was one of the other plugins and NOT Able that prevented cooking our game.

    Thank you for your response and sorry for the trouble.
    Awesome. Glad you guys got things working.

    Leave a comment:


  • replied
    FALSE ALARM.
    We confirmed it was one of the other plugins and NOT Able that prevented cooking our game.

    Thank you for your response and sorry for the trouble.

    Leave a comment:


  • replied
    Originally posted by ExtraLifeMatt View Post

    It seems to build fine. Give that a shot and let me know if you have any issues.
    It builds fine by us too. It's the packaging that's problematic. The packaging process starts building for cooking and suddenly starts compiling editor code for no reason.

    EDIT: We're trying to cook now an empty project with just able to confirm if it really is the problem.
    Last edited by Pablo1517; 03-19-2019, 01:04 PM.

    Leave a comment:


  • replied
    Originally posted by Pablo1517 View Post
    I have a problem with cooking the game while using Able. Apparently it makes UE4 build editor stuff when packaging a game (so no editor code there) and we get a bunch of errors.
    In
    Code:
    Able.uplugin
    Somethnig like this exists:
    Code:
    "Plugins": [
    {
    "Name": "GameplayTagsEditor",
    "Enabled": true
    }
    ]
    And we aren't sure if this isn't causing the problem.
    Because for example in
    AbleCore.Build.cs
    you have this if
    Code:
    if (Target.bBuildEditor == true)
    {
    ...
    PrivateDependencyModuleNames.Add("GameplayTagsEditor");
    }
    Here is a log from Unreal Build Tool thrown out from Packaging process:
    https://pastebin.com/b4pLsYBF

    EDIT:
    Additionally I just now went to editor->Settings->Plugins, Found GameplayTagsEditor plugin and clicked "Package" only to get instantly interrupted by an error saying this
    Code:
    UATHelper: Package Plugin Task (Windows): ERROR: Engine module 'Engine\Plugins\Marketing\Able\Source\AbleCore\AbleCore.Build.cs' should not depend on game module 'D:\RogueOvercooked\GameplayTagsEditor\HostProject\Plugins\GameplayTagsEditor\Source\GameplayTagsEditor\GameplayTagsEditor.Build.cs'
    UATHelper: Package Plugin Task (Windows): (see D:\UE4_Projects\RogueEngine\Engine\Programs\AutomationTool\Saved\Logs\UBT-UE4Editor-Win64-Development.txt for full exception trace)
    UATHelper: Package Plugin Task (Windows): Took 2,2769716s to run UnrealBuildTool.exe, ExitCode=5
    You can likely just move GameplayTagsEditor to AbleEditor.build.cs. GameplayTags used to have some weird dependencies even if you were just using the simple data types.

    If I remove this from AbleCore.Build.cs

    Code:
    PrivateDependencyModuleNames.Add("GameplayTagsEditor");
    and just add that reference in AbleEditor.Build.cs
    Code:
                PrivateDependencyModuleNames.AddRange(
                    new string[]
                    {
                        // ...
                        "GameplayTagsEditor",
                    }
                    );
    It seems to build fine. Give that a shot and let me know if you have any issues.

    Leave a comment:


  • replied
    I have a problem with cooking the game while using Able. Apparently it makes UE4 build editor stuff when packaging a game (so no editor code there) and we get a bunch of errors.
    In
    Code:
    Able.uplugin
    Somethnig like this exists:
    Code:
    "Plugins": [
            {
                "Name": "GameplayTagsEditor",
                "Enabled": true
            }
        ]
    And we aren't sure if this isn't causing the problem.
    Because for example in
    AbleCore.Build.cs
    you have this if
    Code:
    if (Target.bBuildEditor == true)
    {
       ...
       PrivateDependencyModuleNames.Add("GameplayTagsEditor");
    }
    Here is a log from Unreal Build Tool thrown out from Packaging process:
    https://pastebin.com/b4pLsYBF

    EDIT:
    Additionally I just now went to editor->Settings->Plugins, Found GameplayTagsEditor plugin and clicked "Package" only to get instantly interrupted by an error saying this
    Code:
    UATHelper: Package Plugin Task (Windows):   ERROR: Engine module 'Engine\Plugins\Marketing\Able\Source\AbleCore\AbleCore.Build.cs' should not depend on game module 'D:\RogueOvercooked\GameplayTagsEditor\HostProject\Plugins\GameplayTagsEditor\Source\GameplayTagsEditor\GameplayTagsEditor.Build.cs'
    UATHelper: Package Plugin Task (Windows):          (see D:\UE4_Projects\RogueEngine\Engine\Programs\AutomationTool\Saved\Logs\UBT-UE4Editor-Win64-Development.txt for full exception trace)
    UATHelper: Package Plugin Task (Windows): Took 2,2769716s to run UnrealBuildTool.exe, ExitCode=5
    Last edited by Pablo1517; 03-19-2019, 11:35 AM.

    Leave a comment:


  • replied
    Originally posted by Decriment View Post
    ExtraLifeMatt Hey, I was just wondering how this plugin differs from the Gamplay Ability System. Does this plugin expand that builtin system's functionality? Does this plugin offer anything notably different? Would this plugin support dynamically creating abilities at runtime and then using them?

    I'm also wondering if it would be possible to allow multiple passive abilities to be activated simultaneously. A simple use case could be like in Morrowind where you have a list of buffs and debuffs on your character.
    Pablo1517 Pretty much nailed it but to elaborate:

    Able was built as my replacement for Gameplay Ability System since that system was heavily built around Paragon at the time and it was really difficult to quickly throw together a simple Ability. That doesn't mean the two systems (Able and GAS) can't work side by side, but it was definitely meant as a way to replace GAS.

    You can create Abilities at runtime, but you would have to do it in C++. However, Able allows for various runtime parameters so if you can create a basic framework of an Ability (I know I need to play some animation and then do a query and apply some amount of damage), then you can use those runtime parameters to fill in the details (play X animation, use this logic for my query, and then here's the damage based on my stats/etc).

    And yes, you can an unlimited amount of Passives active. The whole Active vs Passive separation is entirely a design one that fits with most games, but under the hood the two are treated almost identically.

    Leave a comment:


  • replied
    Originally posted by Decriment View Post
    ExtraLifeMatt Hey, I was just wondering how this plugin differs from the Gamplay Ability System. Does this plugin expand that builtin system's functionality? Does this plugin offer anything notably different? Would this plugin support dynamically creating abilities at runtime and then using them?

    I'm also wondering if it would be possible to allow multiple passive abilities to be activated simultaneously. A simple use case could be like in Morrowind where you have a list of buffs and debuffs on your character.
    As much as I fiddled with it and it's source it looks like this plugin completely ignores Gameplay Ability System that's built-in unreal engine.
    It's a separate system.
    What's different is how abilities are executed and probably most notable difference and a nice addition overall is the ability timeline that you can setup tasks on, deciding over which part of ability (time wise) which tasks do their job.

    You could somewhat create abilities at runtime but you would need c++ knowledge to expand on this plugin's system for that.

    I haven't used passives yet, but I assume 1 AbilityComponent can have multiple passives at once but only 1 active ability at a time

    Leave a comment:


  • replied
    ExtraLifeMatt Hey, I was just wondering how this plugin differs from the Gamplay Ability System. Does this plugin expand that builtin system's functionality? Does this plugin offer anything notably different? Would this plugin support dynamically creating abilities at runtime and then using them?

    I'm also wondering if it would be possible to allow multiple passive abilities to be activated simultaneously. A simple use case could be like in Morrowind where you have a list of buffs and debuffs on your character.

    Leave a comment:


  • replied
    Originally posted by Pablo1517 View Post
    Well I dunno what's under the transforms as I get easily lost in there, but it seems to be working correctly with ConcatenateRotation and with *= it doesnt.
    Anyway the bug can be reproduced with cone or box (anything but sphere ofc) by simply adding some kind of rotation in Targeting>TargetLogic->Query Location->Rotation

    Then enable debug shapes, start walking around and keep activating ability to see the shapes. As you get further from 0.0.0 point of the world, it gets more and more offset from the character
    I'm curious if that's actually a bug with the debug draw... Either way I'll investigate once I wrap up Move To / Jump To (almost done with both).

    Leave a comment:

Working...
X