Announcement

Collapse
No announcement yet.

Able Ability System Info and Support Thread

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

  • replied
    Originally posted by ExtraLifeMatt View Post

    It's in there already, under Able Settings just toggle off "Copy Inherited Tasks". However, it won't work if the Ability is already created (and Tasks that are simply inherited through normal means, e.g., without the copy, cannot be modified). Previously Able would go and ask the Parent for the Tasks every time an Ability loaded, which lead to some nasty bookkeeping and overhead (every Ability had two Task arrays and it would have to do a "if X, return this one, else return the other" every time an Ability was asked for its tasks, which happens anytime an Ability is executed) - so I moved to simplify that.

    Like I said, you're in a bit of a rock and a hard place. I could add an option to the editor to forcefully re-copy the Parent tasks, but you will likely get dupes that you have to clean up manually.
    Gotcha. I don't know that the force update route is worth the effort. Seems like some extra care on my part in the planning stages is probably the way forward, and probably the right way in any case.

    Leave a comment:


  • replied
    Originally posted by soctty View Post

    I was afraid that was gonna be the case. Would it be feasible to put the old inheritance functionality on a toggle?
    It's in there already, under Able Settings just toggle off "Copy Inherited Tasks". However, it won't work if the Ability is already created (and Tasks that are simply inherited through normal means, e.g., without the copy, cannot be modified). Previously Able would go and ask the Parent for the Tasks every time an Ability loaded, which lead to some nasty bookkeeping and overhead (every Ability had two Task arrays and it would have to do a "if X, return this one, else return the other" every time an Ability was asked for its tasks, which happens anytime an Ability is executed) - so I moved to simplify that.

    Like I said, you're in a bit of a rock and a hard place. I could add an option to the editor to forcefully re-copy the Parent tasks, but you will likely get dupes that you have to clean up manually.

    Leave a comment:


  • replied
    Originally posted by ExtraLifeMatt View Post

    Not currently. They're copied when the Ability is initially created and there is no great way to determine later if we should recopy the base level Tasks again (you'd end up with dupes for anything you slightly changed). So your options are to re-create the Ability, or just manually add the new Task.

    Being able to Copy / Paste Tasks between Abilities would help this quite a bit, but it's not a trivial thing to add unfortunately and I haven't quite thought of a good way to go about it just yet.
    I was afraid that was gonna be the case. Would it be feasible to put the old inheritance functionality on a toggle?

    Leave a comment:


  • replied
    Originally posted by soctty View Post
    Hey Matt,

    Is there a way to push a refresh down to child classes after adding a new inheritable task to their parent? Only thing that seems to be doing it at present is recreating the child class. Recompile, reload, project reload.. nothing else seems to do it.
    Not currently. They're copied when the Ability is initially created and there is no great way to determine later if we should recopy the base level Tasks again (you'd end up with dupes for anything you slightly changed). So your options are to re-create the Ability, or just manually add the new Task.

    Being able to Copy / Paste Tasks between Abilities would help this quite a bit, but it's not a trivial thing to add unfortunately and I haven't quite thought of a good way to go about it just yet.

    Leave a comment:


  • replied
    Hey Matt,

    Is there a way to push a refresh down to child classes after adding a new inheritable task to their parent? Only thing that seems to be doing it at present is recreating the child class. Recompile, reload, project reload.. nothing else seems to do it.

    Leave a comment:


  • replied
    Originally posted by schmozzzle View Post
    Has anyone found a way to deal with the system playing abilites twice when a player has high ping?

    it starts to happen around Net PktLag=550

    any insight would be geat!
    550ms of lag is pretty brutal. Is your Ability less than .5 seconds long? I could definitely see that causing a double play.

    Leave a comment:


  • replied
    Has anyone found a way to deal with the system playing abilites twice when a player has high ping?

    it starts to happen around Net PktLag=550

    any insight would be geat!

    Leave a comment:


  • replied
    Originally posted by ExtraLifeMatt View Post

    There is a callback when using the Spawn Actor task that lets you set some properties on the spawned actor, so you can do it there. I would likely just have a "Owner" property on my projectiles, set it to the caster, and then when the overlap happens, use an Ability that just does the explosion vfx/sfx, and calls CalculateDamage which then passes in the owner and you can grab all the owner properties in the OnCalculateDamageForActor callback.

    Heal would be the same thing. Just pass along the Caster either as owner or instigator, and then either use a custom event or Damage Task (which should work for negative damage...) and pull the stats there.
    Ah alright! cheers

    Leave a comment:


  • replied
    I've got it working. Thank you for your support. Appears my overlaps were funky. I've thoroughly enjoyed this plugin, thank you so much for your hard work.

    Leave a comment:


  • replied

    Originally posted by Nosh88 View Post
    I've clicked 'reset preview asset', and it does not clean up dupes. Perhaps I need to close my preview assets blueprint first?

    That's the output log when I use the ability. I added a "play particle" task just to test if the ability works and it seems to be working but it's not returning any target actors for some reason. I've spent about an hour playing around with different settings for the task to no avail. Thank you for your reply and support.
    You can just close/re-open the editor and get rid of those dupes. Working on the Preview Asset while Able has it spawned in the editor is a bit iffy.


    Looks like you're calling GetTargetActors and accessing an invalid index as well. You'll want to make sure the array has something in it before you access it. The query not finding something is generally due to the actor not responding to overlaps, or you're checking the wrong collision channel. You can also turn on "Show Collision Queries" in the Ability Editor to see where the query is occurring.

    https://docs.unrealengine.com/en-US/...iew/index.html

    Leave a comment:


  • replied
    I've clicked 'reset preview asset', and it does not clean up dupes. Perhaps I need to close my preview assets blueprint first?

    LogAble: Warning: [TestMap (Client 1)] InternalStartAbility [Melee] Started
    LogScript: Warning: Script Msg: Attempted to access index 0 from array 'CallFunc_GetTargetActors_ReturnValue' of length 0 in '/Game/PrototypeGame/Blueprints/BP_Player.BP_Player_C:ExecuteUbergraph_BP_Player'!
    LogBlueprintUserMessages: [BP_Player_C_0] Client 1:
    LogBlueprintUserMessages: [TestMap] Client 1: (World NULL OWNER) Melee - Query found 0 results.

    That's the output log when I use the ability. I added a "play particle" task just to test if the ability works and it seems to be working but it's not returning any target actors for some reason. I've spent about an hour playing around with different settings for the task to no avail. Thank you for your reply and support.

    Leave a comment:


  • replied
    Originally posted by Nosh88 View Post
    I have three questions for you sir,

    1: Why does my preview asset seem to be duplicating every now and then when I make a change to the ability and then save it.

    2: I am having issues with my collision queries not properly working. I've got a cone shape with its collision channel set to pawn, and is filtering my player character and it is set to Negate (also filtering self actor). Targets are set to target actors. My pawns are setup to the default "pawn" collision channels.

    3: Verbose does not seem to be printing out debug information on ability execute.
    1. Preview Asset duplicating would happen if you have the Preview Asset's blueprint open and then you compile it, which cause the actor to get re-instantiated I believe. If you hit "Reset Preview Actor" it should clear up any dupes.

    2. & 3. Verbose definitely works. You can check your Output log. If you aren't seeing anything, then it likely means the Task itself isn't being executed for some reason (Targeting possibly, some other condition not letting it execute). You should get a "play by play" in the log if you turn Verbose on the Ability and on the Task itself. Also make sure you have an Able Ability Component on your Preview Actor, otherwise Able tries to add one at runtime - but that rarely seems to work for whatever reason. Just add it in the actual blueprint of the Preview Actor and close/re-open the editor.

    Leave a comment:


  • replied
    I have three questions for you sir,

    1: Why does my preview asset seem to be duplicating every now and then when I make a change to the ability and then save it.

    2: I am having issues with my collision queries not properly working. I've got a cone shape with its collision channel set to pawn, and is filtering my player character and it is set to Negate (also filtering self actor). Targets are set to target actors. My pawns are setup to the default "pawn" collision channels.

    3: Verbose does not seem to be printing out debug information on ability execute.

    Leave a comment:


  • replied
    Originally posted by douw3rd View Post
    Ah thanks! No problem at all

    Question regarding using the system itself; I'm trying to wrap my head around how I should integrate some of my logic. Say for example I make a spell that spawns an projectile actor and I want some properties to depend on stats from the owner, like how much damage it's going to do. As far as I know it is not possible when using the spawn actor task to assign any variables right away on creation, should I use one of the custom overrides to set these post creation?

    Other example: simple spell that heals the owner for x amount, how should I apply the custom value that could depend on other things into able? I'm not really sure how to pass values in to able, but that's probably because I'm taking the wrong approach to using it in the first place.

    Hope you can point me in the right direction!
    There is a callback when using the Spawn Actor task that lets you set some properties on the spawned actor, so you can do it there. I would likely just have a "Owner" property on my projectiles, set it to the caster, and then when the overlap happens, use an Ability that just does the explosion vfx/sfx, and calls CalculateDamage which then passes in the owner and you can grab all the owner properties in the OnCalculateDamageForActor callback.

    Heal would be the same thing. Just pass along the Caster either as owner or instigator, and then either use a custom event or Damage Task (which should work for negative damage...) and pull the stats there.

    Leave a comment:


  • replied
    Ah thanks! No problem at all

    Question regarding using the system itself; I'm trying to wrap my head around how I should integrate some of my logic. Say for example I make a spell that spawns an projectile actor and I want some properties to depend on stats from the owner, like how much damage it's going to do. As far as I know it is not possible when using the spawn actor task to assign any variables right away on creation, should I use one of the custom overrides to set these post creation?

    Other example: simple spell that heals the owner for x amount, how should I apply the custom value that could depend on other things into able? I'm not really sure how to pass values in to able, but that's probably because I'm taking the wrong approach to using it in the first place.

    Hope you can point me in the right direction!

    Leave a comment:

Working...
X