Thanks, I appreciate it
Whoops, I broke something :
This is what it said in the crash:
I know what NOT to do though, this is what caused it:
I kind of figured that I wasnāt supposed to be able to select āAbl Ability Blueprintā in that field, but I wanted to see what would happenā¦which was crash to desktop xD.
Hopefully Iām not a pest, I seem to be that guy whose accidental finger-slips always manage to find the death button somehow
I donāt even know how you did that, but Iāll add a check to make sure thatās handled properly.
The realm is set to Server on all Play Animation tasks.
Ah, that makes sense. You should only set an animation to be played on Server if you need animation related data on the server (i.e. you have collision that follows an animation or some such). 99.9% of the time, youāll want your animations as client only (or Client/Server). There really shouldnāt be any case where you have Server only animation tasks. Iād swap to Client or Client/Server depending on the logic you are doing and see what that gets you.
Iāve been working on v1.6 which has a few bug fixes and Iām trying to support Blend In on external animations (and not just the ones passed into the node) in the Play Ability Animation Node (youāll have to pass in a pose for it to work), Iām still testing things but so far so good.
That didnt seem to work
I went ahead and unchecked the Play on Server option for the Play Animation Tasks.
On a cooked build I hosted a listen server and had the following results:Server:
Plays own animations correctly, Can see all connected clientās animations play correctly, and branched ability animations play correctly
Client 1 & Client 2:
Plays own animations correctly, Can see all connected clientās animations play correctly, does not see any branched ability animations play.
Let me know if you need any additional info, or a link to the latest build.
Edit: The Realm on the Play Animation Task by default is Client, and if I tick on āPlay on Serverā, the realm changes to Client and Server, however both options result in the other connected client not seeing branched ability Play Animation Tasks play.
And to verify, itās simply the animation not playing? Are other tasks in the Branched Ability executing properly? What are you using as the branch conditional (I assume just an input check)? Are you seeing any output in the Able log on the server? Does this happen in an uncooked build as well?
-
itās simply the animation not playing? / Are other tasks in the Branched Ability executing properly?
-
Correct, I have other tasks that are custom events that are executing correctly on the sever and all connected clients (Those tasks have the Client & Server Realm
-
What are you using as the branch conditional (I assume just an input check)?
-
Correct, Its just an input check
-
Are you seeing any output in the Able log on the server?
-
The only thing I see in the output log is pasted below, however its only logged after the ability completed. I would expect to see something else when the animation failed to play.
[INDENT=2]
LogNet:Warning: UIpNetDriver::ProcesRemoteFunction: No owning connection for actor CombatCharacter_C_2. Function ServerCancelAbility will not be processed.
[/INDENT]
-
Does this happen in an uncooked build as well?
-
I just tested this, and yes, it can be replicated with a Play in Editor session. The problem can be seen on the connected clients only. The listen server will always see all animations play from all clients.
Thanks @Hitsugen, Iāll dig into this and let you know what I find.
So Iāve tried to repro this locally and everything is working properly for me.
Hereās my setup:
- Play Animation Tasks are set to Client Only and are using the Ability Animation Node.
- Branch is set to Input Condition (I have mine bound to LMB).
- My Characterās Skeletal Mesh component is NOT set to replicate, merely the main actor and the Ability component are set to replicate (this could cause the issue youāre seeing if the server was somehow stomping your client value).
I tried it on a fresh project with the setup as you described, and Iām still having the same issue.
Only thing that might differ from yours (That I know of)
- Project is a c++ project using the ThirdPersonTemplate.
If it helps hereās a link to the fresh zipped up test project.
https://www.dropbox.com/s/mup6c2si1u2iw0y/AbleTest.zip?dl=0
Are you testing with the Number of Players set to at least 3?
Iāve been using 2. Not sure why that would make a difference. Iāll check out your test project and let you know (been slammed at work so I didnāt get to mess with it tonight).
EDIT: Was able to repro things using your test project. I believe I see the problem and why I didnāt see it locally (it appears to be related to the name of your Abilities generating the same CRC internally). Iām going to dig into that and see A.) why that is occurring and B.) is there a better identifier to use internally.
Thanks for checking it out
Also, I havent heard that term before, whats a CRC?
A CRC is just a nice way to take any form of data (the name of an Ability for example), and turn it into a unique integer which makes comparisons and such incredibly fast.
I fixed the issue, Iām not sure why your Abilities caused this issue (it appears to be a race condition of some sort), but itās fixed and will be in the 1.6 update (which Iāll submit to Epic tonight/tomorrow and should be released sometime in the week).
Awesome, thanks !
Able v1.6 has been submitted to Epic:
- Fixed a crash that can be caused by selecting a non-Ability blueprint in the Get Ability Object From Class method.
- Fixed an issue where looping would improperly end/reset Tasks outside of the loop range.
- Fixed an issue where Animation Blending could get stomped if the Animation Nodeās Initialization method was called multiple times before a blend finished.
- Fixed an issue where internal CRCs could be incorrectly calculated (leading to issues where various systems like Cooldowns and Branching broke).
[MENTION=33476]Aumaan Anubis[/MENTION], Regarding the Ability Animation Node supporting blending in from the characterās current pose - I actually had some code written for this, but in my testing - the Animation Blend nodes (which are already available) seemed to do exactly what I was doing but without a ton of complexity. I kept running into nasty edge cases since I was trying to manage all of that state internally. Iād have completely given up on adding that feature, but for the moment - I would suggest looking into the Blend Animation Nodes and trying to structure your Animation State machine in a way that you can setup the blend that way.
I also looked into the customizing the Branch Conditions display name and they ARE setup properly internally - so Iām still trying to figure out if this is just a bug in UE, or if I really do need to write customized property viewers.
@
Thanks for looking into it though, at least thereās a workaround. Thanks for posting it, Iāll make the changes to my statemachine.
Iām looking forward to v1.6.
Thanks again
Just a bump to let people know that things are probably a bit busy at Epic due to E3 shenanigans, so hopefully v1.6 will be out soon.
@
Just a quick update, you said you werenāt sure why the internal CRCās were coming up the same, and in case you werenāt handling this already, Iām pretty confident it happens when duplicating abilities. (Even if the nameās are different)
Yea, itās an order of operations thing / race case it seems. Moving the CRC generation to PostLoad instead of in the constructor (which happens before data is actually loaded for a class) fixes it which is in 1.6.