Search Unity

Unity QA should be done by developers, not non developers or interns

Discussion in 'General Discussion' started by imtrobin, Sep 12, 2014.

  1. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,545
    While Unity is improving their patch process, I think the QA part leaves a lot of rooms for improvement.

    On July 12 2014 I submitted a bug report about CrossPlayQueued skipping AnimationEvent, which has been reported since 2009. I even made a nice sample to demonstrate it.

    About 3 weeks later, I get a reply. And the reply is this is not a bug. The solution was to adjust the AnimationEvent forward to time = 0 for it to work. I don't understand the reply, does he know what AnimationEvents are used for? I made a few more replies to request to send this to a developer, and I have not heard from him again, that was a month ago.

    http://fogbugz.unity3d.com/default.asp?619180_vaf2p04eujba7c8o

    Also, other bug reports I submitted are not prioritized because I don't use the latest version. Some of them, being reported years ago and I don't see the latest patches fixing them.

    Unity, you boast you have 160 developers, I'm sure there are spare some developers to look at these issues. It's a trival issue but only developer who understand can solve it QUICKLY and EASILY.
     
    MrEsquire, Nanako and User10101 like this.
  2. Grimwolf

    Grimwolf

    Joined:
    Oct 12, 2013
    Posts:
    296
    I don't think you grasp just how many reports they get at any particular time.
     
  3. melkior

    melkior

    Joined:
    Jul 20, 2013
    Posts:
    195
    Hey I feel your pain .. but honestly -- no QA does not need to be a developer. Some times a developer becomes a QA ; but typically the skills, education, training, and job duties of a QA is different than a developer.

    Often a skilled QA becomes over time one of the most expert and knowledgeable end users of a product and can spot when things are wrong and when not sure knows to check with developers and product owners. In your linked ticket the QA quotes that they did exactly that.

    I can see how you disagree with the assessment. Instead of quoting what you have developed as a defense / argument I would focus on further user stories that show how the behavior is in fact defective , unexpected, or could be better designed to accommodate whatever they were trying to achieve by designing it that way?

    Can you think of a reason why they might have it behave that way? Is there a case for it?

    Or maybe the product owner gave them a list of acceptance criteria and design specs and it fits those and its not a bug because it does what they were told to design.

    Be friendly and get them on your side is my advice - your more likely to get some results instead of shut down.
     
    AndrewGrayGames, Nanako and User10101 like this.
  4. KheltonHeadley

    KheltonHeadley

    Joined:
    Oct 19, 2010
    Posts:
    1,685
    160 developers that have to deal with hundreds of thousands of users.
     
    Deleted User and User10101 like this.
  5. superpig

    superpig

    Quis aedificabit ipsos aedificatores? Unity Technologies

    Joined:
    Jan 16, 2011
    Posts:
    4,186
    A couple of points about the report:

    1. The QA very clearly did pass the report on to a developer, who kicked it back saying 'I don't see the problem here.' You talking to the developer directly wouldn't have helped if this is the report you made.
    2. You're pointing out what you think is a design flaw in a legacy system. What do you think are the odds that they're going to put resources into fixing it even if they do agree that it could behave in better ways? What do you think are the odds that they'll say 'we fixed it in Mecanim; the solution is for you to upgrade to it?'
    3. Sounds a bit like there's been a mixup between CrossFade and CrossFadeQueued.
     
    AndrewGrayGames and User10101 like this.
  6. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,545
    Clearly, the developer did not understand how AnimationEvents are used. I've used AnimationEvents in other AAA engines, and they behave properly when cross blending. Unity version does not cross blend with AnimationEvents, I see this being reported since 2009. And the QA reply is basically not to use cross fade. There's no mix up, the sample clearly shows the bug. Did you run it? My debug have verified that there are multiple AnimationStates running, and there should be equivalent number of AnimationEvents being called.

    Mecanim, it is performance slower, and not usable for mobile. This is a line one fix, which I can do myself easily. I see only Aras in the forum. working on shader performance. What happened to the other developers? And who is the developer who is looking at this? Is he the original designer of AninmationEvents or a lead level who knows what this is.
     
    MrEsquire, Nanako and User10101 like this.
  7. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,545
    I'm fairly sure there are better ways to handle this. Thousands of users reporting the same issues, and the QA who keeps filtering them, and it is never fixed, tends to compound the problem,
     
    User10101 likes this.
  8. superpig

    superpig

    Quis aedificabit ipsos aedificatores? Unity Technologies

    Joined:
    Jan 16, 2011
    Posts:
    4,186
    Your repro isn't available for anyone else to download.
     
    User10101 likes this.
  9. Eric5h5

    Eric5h5

    Volunteer Moderator Moderator

    Joined:
    Jul 19, 2006
    Posts:
    32,139
    There are a bunch of developers on the forums. Click on "members", then click on "staff members".

    --Eric
     
    User10101 likes this.
  10. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,545
    ok, I'm traveling on the road, post it next week when I'm back

    How many are engine developers? I used to see Shawn and Runevision active in the old days, but not much these days.
     
  11. MrBrainMelter

    MrBrainMelter

    Joined:
    Aug 26, 2014
    Posts:
    233
    Aren't developers bad at QA? They just end up being blind to their own bugs.
     
    inafield, Nanako and melkior like this.
  12. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,545
    They are bad at QA but they understand a bug when they see one. Non developers have harder time, as my first post
     
    Nanako likes this.
  13. QA-for-life

    QA-for-life

    Unity Technologies

    Joined:
    Dec 23, 2011
    Posts:
    87
    I can see quite a few people have replied and all of them are, rightly so, pointing at various issues at play.

    Yes, the legacy animation is extremely unlikely to get changes, that are not outright regression bugs, fixed.
    Yes, QA is a totally different skill set and I have turned down lots of developers who wanted "a way in" because they had no clue what real QA is.
    Yes, we handle literally thousands and thousands of cases every month.
    Yes, the issue has been passed to devs and devs gave the response back and Ieva relayed it to you.

    Furthermore, you also have to recognize that the answer Ieva gave you was that of someone who actually understands what you try to accomplish and simply doesn't agree with you. That also happens from time to time.

    So to recap, we have used time to get the bug, download the project, understood the issue, responded, relayed to devs, responded again and finally laid it to rest. That is about as much as we can do with any report we get. Thank you for reporting it, but as it is, we will not do more with it.
     
  14. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,545
    I have saddened to hear that you think it is not a bug. I will put up the test case next week as I'm still traveling, and let the community judge, and perhaps you can bring the developer into the discussion as well. I would much like to hear his view.
     
  15. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,545
    Finally, I managed to get some free time to get this up. The project is here.

    http://cyberversion.com/private/unity/anim/animevent_test.unitypackage

    If you spam the buttons, you will see AnimationEvents being skipped. In my debug window, it shows that they are multiple AnimationStates being played.



    So in my projects where I use AnimationEvents to do certain things, this is a limitation. Example, a FPS shooter, the weapon has a shoot, reload animation. I play reload after shoot animation. I use an AnimationEvent on reload animation to signal that the weapon is ready to shoot, which is before the animation finishes playing. The artist can set the AnimationEvent on different weapons instead of setting timing using coroutines.

    http://cyberversion.com/private/unity/anim/gun.mp4

    Another project example, fighting game with a combo system (God of War, Devil May Cry).

    http://cyberversion.com/private/unity/anim/combo.mp4

    When player presses the button in sequence and within timing, a combo is setup. I use AnimationEvent the same way to let artist signal the animation is ready to blend into the next combo. It's very clean, code wise, and setup but it can't work due to above "bug".

    - Another issue, I reported this bug on 12 July, Unity got back 1 month later being able to reproduce it, 2 months already, I see a few unity releases and many patches, yet bug is not fixed. From the faq

    http://fogbugz.unity3d.com/default.asp?619200_5750prlsruklb5t3

    How can I get my bug fixed? It’s a critical bug for me! It will not be possible for the sustained engineering team to fix every bug. If you have submitted a clear, easily reproducible bug, included a small repro project, and we can match this against similar bugs, or the comments on the issue tracker tell us this bug affects many other people, then it may become a candidate for fixing. If it can be fixed, then we will try to fix it in a timely manner. It’s not possible to give a timeline for a fix, but it should be weeks, and not months, years, or never.

    Lastly, things like this which are annoying, but not critical bugs. Private methods are included in AnimationEvent , it should be just public, or else I have a few hundred in the list. Was this part of design? With the current QA system, will this ever get fixed or needs voting?

     
  16. keithsoulasa

    keithsoulasa

    Joined:
    Feb 15, 2012
    Posts:
    1,984
    You have two realistic options .


    A) Migrate to Mecanim, it works better and isn't really a new thing, if you want fixes you'll migrate .

    B) Work around it .

    This sucks , don't get me wrong , but you're not going to find any other solution.

    As someone who's worked in QA for a long time , I have to agree with superpig. A dev saw it , said this is by design , and sent it back to QA. The reason all QA isn't done by devs is simply these are two different roles.

    Say your average Unity dev makes 120k. He's focused on adding features and fixes stuff QA checks out and makes sure actual bugs are being sent to dev.

    The QA guy might make 80k or whatnot , he knows a bit of programing and believe it or not is pretty familiar with how Unity works. He has to go through thousands of bug reports from users, 90% of are complaints , not bugs , crappy programing on the users end or plain nonsense .


    The last 10% gets sent to dev. They then have to figure out what's worth adding , what can be fixed , etc, and what's by design .
     
  17. hippocoder

    hippocoder

    Digital Ape Moderator

    Joined:
    Apr 11, 2010
    Posts:
    25,476
    You should just move on and create a different solution. Legacy means depreciated for the most part, and that's with good reason ie this problem.
     
  18. JamesLeeNZ

    JamesLeeNZ

    Joined:
    Nov 15, 2011
    Posts:
    5,618
    wrong. as a developer, I know a developer should definitely not do QA. Often results in gaps in testing because a developer knows how its supposed to work, and tends to test this way.

    Developers test their code, QA tests the product
     
  19. JamesLeeNZ

    JamesLeeNZ

    Joined:
    Nov 15, 2011
    Posts:
    5,618
    Its very usable in mobile. I dunno why you think it isnt. As much as I dont love mechanim, its the way forward. Move with it, or dont and deal with legacy problems youll have to solve yourself.
     
    giyomu likes this.
  20. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,545
    Mecanim doesn't have animation events initially until recently. And it has a lot of limitations, I had to buy a kit to get.the functionaliy. I like to see the game you are making, that you didn't face such problems.

    http://forum.unity3d.com/threads/mecanim-control.224315/

    Of course I have to work around it, like many other Unity issues. This sucks, because the it is a reproducible bug, I gave use cases for it, and it's really a 5 min fix. The is the part where I hate most about Unity, broken things that are never fixed, and always on shiny new half baked features. The whole QA process is not effective, my needs as a customer as being ignored. It's like I'm telling the waiter there's a fly in the soup, and he insists it's a feature. This is why I'm hesitant about upgrading to U5 even though I was offered the special deal, because with the current way of progressing (I been through U3 and U4), I don't see things getting better.
     
    0tacun and Nanako like this.
  21. I am da bawss

    I am da bawss

    Joined:
    Jun 2, 2011
    Posts:
    2,574
    You know, you can always move to Unreal Engine 4. Which gives you source code access that you can fix it yourself in "5 minutes" as you said.
     
    Last edited: Oct 23, 2014
  22. Nanako

    Nanako

    Joined:
    Sep 24, 2014
    Posts:
    1,047
    I think this is exactly what he's trying to avoid doing, imnotrobin is clearly passionate about unity and has explored it in depth.

    I'm paying close attention to this issue personally. And i'll be on the lookout for others like it.

    This strikes a chord with me. I've dealt with a company who worked like this before, and it slowly sapped my will to live. When you get heavily invested in a platform, you want to see if succeed. You want all the time you've spent learning and adapting to not be for nothing. You want to poke and cajole the developer into being better.

    ultimately if you eventually do leave, it will be with a heavy heart, a bitter taste in your mouth, and a chip on your shoulder. It will cost you a lot of time and energy to start porting your work and relearning the new system. You'll no doubt talk badly about unity whenever the subject comes up, and have experience and a specific case to back it up. Engine discussions are coming up a lot in some public areas, particularly the User Reviews on steam games, i've based many purchases on those alone.
     
  23. wccrawford

    wccrawford

    Joined:
    Sep 30, 2011
    Posts:
    2,038
    Coding and QA are 2 different skills, yeah. I'm great at coding, but only 'okay' at QA. My wife, on the other hand, is great at QA and not a coder at all.

    Coders, even if they're good at QA, tend to be blind to bugs in their own code because they understand how it's *supposed* to work, and so they tend to use it that way without thinking. Someone who isn't familiar with the code will be a lot better at finding bugs in it.

    There are 2 main reasons I can think of not to use your programmers as QA people:

    1. Cost. Even if they're paid the same as QA people (they usually make more) they are going to be slower.

    2. Stress. Forcing a person to do something outside of what they love about the job is stressful and not nearly as productive. Everyone has their strong points and it's generally best to keep them on it.

    In the end, it simply doesn't work out. It costs more, it finds fewer bugs, and it makes it hard to keep employees.
     
  24. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,545
    I disagree. They don't need to be the QA people but they need to communicate with users (us) to know the issues. Now the QA filters it away, and they think everything is ok in reality it is not. I'm not expecting all 160 programmers to do the QA only, but they should be someone in lead position to look over these issues.

    Of course I'm aware of UE4, and I'm watching it closely, as many are. I hope you are not the PR of Unity, because this is the exact kind of attitude that piss customers off and push them over.
     
  25. wccrawford

    wccrawford

    Joined:
    Sep 30, 2011
    Posts:
    2,038
    You're making huge assumptions.

    As a coder (not at Unity Tech, mind you), I can tell you that yes, sometimes people don't bring bugs to me, but most of the time I (or one of my coworkers) has to rule on whether it's a bug or not. If a bug doesn't get fixed, it isn't because nobody brought it to a coder. It's because it wasn't prioritized high enough by management. Coders generally don't get to make that determination. They will make recommendations, but the final say in what gets fixed is a management decision.

    And in my experience, QA *never* gets to make that decision. They generally only test things and make sure they are reproduceable and are actually happening. Beyond that, they don't get to say, "That's not serious, so a programmer won't work on it." The manager says that.
     
    inafield likes this.
  26. inafield

    inafield

    Joined:
    Feb 26, 2013
    Posts:
    281
    If a company makes you bitter, the problem is likely not with the company, but with you.
    If the majority of knowledgeable people in a thread tell you that you're making massive assumptions and that you're wrong... most likely, you are wrong.

    Years of enterprise dev and QA and I have to say, I agree with the majority comments. @imtrobin learn from this rather than fight it. Smart people have given you good and appropriate feedback.
     
  27. QA-for-life

    QA-for-life

    Unity Technologies

    Joined:
    Dec 23, 2011
    Posts:
    87
    I'm getting fairly annoyed with hearing that the QA process is not effective because of an issue we actually reproduced IN QA, but got rejected by developers, reflects poorly on QA.

    In my own not so humble opinion, Unity has one of the best QA organisations you can find anywhere, be it manual or automated, but our job stops at the bug. From there it is about visibility of the state of the product to decision makers and those decision makers made a decision, which you obviously don't agree with.

    I'm trying to convey to you that we did not filter it out. It was processed, you were in the communication and we had a developer look at it.

    This.
     
    inafield likes this.
  28. GarBenjamin

    GarBenjamin

    Joined:
    Dec 26, 2013
    Posts:
    7,440
    I can only say this right here says there is definitely some kind of problem. If QA reproduced a bug and it was then rejected by developers or whoever... that is insane. Yes things need to be prioritized. Everyone (I hope) understands that. But to know about a bug causing problems for one or more paying customers and reproduced by your own QA department... and still choose to ignore it... well ... I will just say my company certainly does not work that way.
     
    Deleted User, 0tacun and MrEsquire like this.
  29. Eric5h5

    Eric5h5

    Volunteer Moderator Moderator

    Joined:
    Jul 19, 2006
    Posts:
    32,139
    The developers say it's not a bug. I don't use that particular functionality so I have no opinion. But it's not like they're just ignoring it.

    --Eric
     
  30. inafield

    inafield

    Joined:
    Feb 26, 2013
    Posts:
    281
    I don't think you understand large scale development. In a codebase of large enough size, there will be bugs that are simply not worth fixing. Risk assessment, hours estimate, deprecation, priority level... fine enough to say that you don't work that way, but wait until you have a large codebase. Unless it's a mom&pop shop, eventually everyone marks stuff as "not going to be fixed".
     
  31. GarBenjamin

    GarBenjamin

    Joined:
    Dec 26, 2013
    Posts:
    7,440
    That is not the case. I have worked on business products being used by hundreds of thousands of users. Every reported bug is documented, attempted to reproduce. Every bug is stored in a ticket and the tickets are prioritized and assigned. Bugs are fixed first and foremost before anything else. They have a greater priority over adding shiny new stuff. It just depends on what your company's priorities are. Ours, above all else, is to offer extreme always available customer service. Usually the customer service department or general techs can solve the issue before it gets to my department. But once or twice per year I get a call after hours, midnight etc with a crisis that needs a senior software developer to resolve. It is not a matter of company size, project size or customer base it is a matter of what your company's mission statement and driving force is. We also resolve 97% of all tickets within 12 minutes according to the last numbers. We track things like that because it is a way of measuring how good o a job we are doing. Customer service is the #1 priority to us.

    I should say... there is nothing wrong with a company having other driving forces. Other mission statements. But there is never a reason to write off a bug that is a big enough issue one (or more) of your users are in a forum trying to get some customer service.
     
    Last edited: Oct 24, 2014
  32. superpig

    superpig

    Quis aedificabit ipsos aedificatores? Unity Technologies

    Joined:
    Jan 16, 2011
    Posts:
    4,186
    They reproduced a behaviour. Saying they reproduced 'a bug' presupposes that it is a bug, which the development team clearly think it isn't...
     
  33. GarBenjamin

    GarBenjamin

    Joined:
    Dec 26, 2013
    Posts:
    7,440
    If it was not a bug that is different. I was under the impression it was a bug in Unity. Of course, some would say if a behavior is perceived by a customer as a bug that is a matter of expectations. In this case, the customer could be given support & training to understand why the behavior works this way and a work-around offered to get the desired behavior. Others may say if a behavior is perceived by a customer as a bug then it probably is a bug because it is not doing what the customer needs it to do.

    Anywho, I was just going by what the support person said. It sounded like they were kind of frustrated as well because they reproduced the behaviour and I am guessing also thought it was incorrect so they sent it over to the developers who then vetoed it. That is all I was basing my post on. Only they know the real scoop.
     
  34. QA-for-life

    QA-for-life

    Unity Technologies

    Joined:
    Dec 23, 2011
    Posts:
    87
    Superpig has it right.

    That certainly sounds impressive, but it is not how we run it at Unity. I am curious to know what company, product and customers you have?

    In order for you to understand why we are not handling everything, I suggest you read this blogpost: http://blogs.unity3d.com/2013/10/28/bug-reports-incidents-and-some-bashing/. The unfortunate reality is that only 6.34% of reported bugs actually turn out to be real bugs. That means we have a 20x overhead in every one of those if we were to investigate every single reported incident. In my heart I don't believe that is the best use of our time and I don't believe it would serve our customers best, so we have strategies for how we use our QA time to get most bang for the buck. Part of that is to spend most time in the buckets where we have most luck reproducing and getting bugs fixed.
     
    inafield and GarBenjamin like this.
  35. GarBenjamin

    GarBenjamin

    Joined:
    Dec 26, 2013
    Posts:
    7,440
    Well, the only reason I posted about my experience and current company's view was in response to someone thinking I clearly must only be working on small mom & pop business projects (which I have done too). Lol. I only wanted to make it clear that is not the case. I have been doing this stuff for a long time. Currently I work in the Public Safety and Emergency Response sector which means products for PDs, FDs, EMS and 911 Dispatch call centers. Before this my projects were for government agencies and their contractual partners.

    Anyway... that is really irrelevant to what this was about. I just saw a post of a customer very unhappy about a bug and saw a post from QA sounding frustrated because they were caught in the middle (as they often are). At least that is was my "take away" from the post.

    I get that part about only small percent of incidents reported as bugs are in fact actual bugs. It has been the same wherever I worked. Most of the time the bugs are just expectations of different behavior. Sometimes due to a lack of understanding / proper training and sometimes due to the user needing a different behavior.

    I know sometimes there are unreasonable customers with unrealistic expectations. Basically all I was getting at is if a customer is saying "this is not working for me. To me it seems like a bug." There might be some way to help them instead of people just saying this is not a bug. Case closed. It is really about that customer not me. I was just offering some support because if I was that customer and felt blown off I'd be ticked too. But I don't know the details like I have also stated. Only you (unity and customer) know.All I had to go on was the posts on this forum and I could feel a lot of frustration in their posts.

    Anyway have an awesome day.
     
    Last edited: Oct 24, 2014
  36. cannon

    cannon

    Joined:
    Jun 5, 2009
    Posts:
    751
    I used to be pretty familiar with tinkering around with the legacy system (a long time ago), I think the problem here is that at a certain point when crossfading, the previous animation will hit a weight of zero/be disabled at which point none of its events will play.

    This makes sense for events such as footstep sounds and other one-off effects, but it makes animation events unusable for anything that holds state like turning a trail on at one point in an animation and turning it off afterwards.

    If this is the problem, then I can see where it wouldn't be classified as a bug because for some use cases it makes sense that the event doesn't get called when the animation has no effect. I do remember being annoyed when we worked around that though for our game.

    If I'm totally off base with my understanding here, ignore me and carry on.
     
  37. QA-for-life

    QA-for-life

    Unity Technologies

    Joined:
    Dec 23, 2011
    Posts:
    87
    You are totally on base.

    Makes a lot more sense. In case you have a bug, it can potentially cost lives. While bugs in Unity affect many peoples lives, I don't think we are in that category of severity.
     
    GarBenjamin likes this.
  38. keely

    keely

    Joined:
    Sep 9, 2010
    Posts:
    966
    I'm not the developer in question, but close enough.

    Seems like the reported design flaw is for the legacy animation system. For the legacy system our priority is to keep the existing functionality going as long as we can and eventually let it go. Fixing a design flaw or a bug - even a legitimate one - means that the behavior of the system changes and we also risk causing new bugs and regressions. This is something we can't afford anymore this late for the product cycle.

    I'm sorry for you OP and feel your pain, but this is the way it is. QA isn't to blame here.
     
    inafield, NomadKing and GarBenjamin like this.
  39. TylerPerry

    TylerPerry

    Joined:
    May 29, 2011
    Posts:
    5,577
    It seems to me that if your customers are getting confused with what is a bug then perhaps you should consider re working those systems to be more natural for users?
     
  40. superpig

    superpig

    Quis aedificabit ipsos aedificatores? Unity Technologies

    Joined:
    Jan 16, 2011
    Posts:
    4,186
    They did. The reworked system is called Mecanim and has been around for a couple of years...
     
    TylerPerry, inafield, Cogent and 2 others like this.
  41. inafield

    inafield

    Joined:
    Feb 26, 2013
    Posts:
    281
    Good for you, but that's not always realistic. In some industries it is a necessity, others it isn't even remotely an option.
     
  42. GarBenjamin

    GarBenjamin

    Joined:
    Dec 26, 2013
    Posts:
    7,440
    Thanks for putting the focus back on me rather than the issue. lol
     
    Last edited: Oct 26, 2014
  43. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,545
    So first, you agree that 2 animation events but only 1 animation event fired is a bug. I hearing, from "This is not a bug" to "This is a bug but we won't fix because it's an old system which may break existing stuff and management does not approve". I'm not sure which sounds worse. Unity in 4x cycle breaks so many things so I don't see the issue there. I'm not the only person annoyed in this, which means you are probably a lot of bug reports on the same issue, which balloons up your workload.

    On this particular issue, an extra sound / particle being played does not matter, but this prevents us to doing a lot of issues. I have used this feature in my own engine and Gamebryo (AAA engine in past), events are fired when the animation is played.

    What about the other issues, like AnimationEvent list showing private functions. Was this intended design? Or was it since everyone has to make workaround, let's just not fix it? You may claim that you have the best QA process, but is it effective? Issues like that have been around for years and left unfixed. Perhaps with new management, you should reevaluate how to improve. I hope the mission of "demoncratizing game development" also means making your customers happy, in which there's much to learn from GarBenjamin's company, mission critical or not.
     
  44. cannon

    cannon

    Joined:
    Jun 5, 2009
    Posts:
    751
    Imagine an evil wizard, bent on world domination.

    He begins his casting animation. It will last ten seconds, at the end of which is an AnimationEvent that turns everyone into cookies.

    Halfway through his animation, I trout slap him. Unfortunately he is unfazed and merely restarts his casting animation by CrossFading into it.

    I trout slap him throughout the day and all through the night but he tirelessly keeps CrossFading back into his casting animation.

    All of a sudden, I begin to crave cookies, and while thinking about what flavour to get he manages to finish his casting animation.

    He's been CrossFading into his casting animation all day, how many times should cookie armageddon happen in this case?


    Addendum: what he's saying is that the behaviour in your bug report is not a bug, as that would break the more common scenario I just laid out. There is however a missing feature for the cases where you do want the AnimationEvent called even if the animation is suppressed. That would require an additional flag to enable, as the current behaviour is desirable for the more common cases.
     
    Last edited: Oct 28, 2014
  45. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,545
    Your state machine should have handle that properly. When he is hit, and AnimationEvent is fired, you check that he is not in casting state, and no spell fire.
     
    inafield likes this.
  46. cannon

    cannon

    Joined:
    Jun 5, 2009
    Posts:
    751
    He is always in the casting state except for the beginning of day 1 and at the end of day 2. He just hasn't reached the part in the animation where the spell takes effect.

    He will be receiving AnimationEvents for the first cast partway during the animation for the second cast if the behaviour you want was the default.
     
    Last edited: Oct 28, 2014
  47. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,545
    You have to keep track of that in your state machine when you do interrupts like that .. Eg. you play an audio of the wizard chanting that takes 10 secs when he cast speels. When he is interrupted, you need to cancel the audio or you will hear multiple chants when he casts away. In similar fashion, you need to (and can) keep track of cancels.
     
  48. cannon

    cannon

    Joined:
    Jun 5, 2009
    Posts:
    751
    Easy enough. However, now every smoke puff, footstep sound, weapon particle effect will need that same simple workaround. And you now need to know if you need to cancel any particle events from the previous animation whenever you crossfade to a hit animation or whatnot.

    Previously, the code didn't need to be aware of what the previous animation was before crossfading out.

    That's why I'm thinking while the behaviour you want is desirable, it should be a behaviour that can be toggled on and off, with the default being off.
     
  49. zombiegorilla

    zombiegorilla

    Moderator

    Joined:
    May 8, 2012
    Posts:
    7,825
    Exactly.
    The expected behavior is that an AnimationEvent is going to be governed by the rules of the animation. If they keep playing despite being crossfaded or what ever changes the animation, that defeats the purpose. At that point they are just timed functions. The expected behavior is correct, and as repeatedly point out, not a bug or flaw.

    Absolutely. Extended functionality, and more complex behavior controls are a good thing. More option == better. That is the point of mechanim. It allows for more flexibility and control. As superpig pointed out, that is why the legacy animation system was replaced with mechanim. There is no reason or value in adding new or additional functionality to a deprecated system. They have already provided a solution.

    None of the devs here or on the tickets have agreed it was a bug. They stated clearly it was not a bug, and working as expected. Keely simply pointed out that even IF it was a legitimate bug it might not be addressed. And that if something was reported as a design flaw, it wouldn’t be changed. Yes, legacy animation is limited on features, that is why it was replaced.

    The solution is very clear. You want to do something that is outside the scope of a deprecated system, just upgrade. Alternately, write a solution that fits your needs. Put the event on both and let your state machine make the call. You are essentially wanting an AnimationEvent to ignore the actual animation state, so don’t bind it to the animation.

    There are a variety of ways to do what you want, certainly with mechanim, but also with legacy. Proxy anims, multiple or transitional anims, conditional events, synced events, even just a more complex/robust state machine, etc. Those are just off the top of my head, depending on the scope and architecture of the overall project or needs there is reason you can’t knock up solid solution in a couple of hours. They clearly aren’t going change legacy to deal with something out of its scope. Continual complaining and attempting to convince them that your expectations of how you think something should work isn’t going to fix your game. The time you spent filing/arguing bug reports and make long posts and examples would have been better spent just solving the problem and moving on.

    Both examples you provided are incredibly common and basic cases/features in hundreds if not thousands of similar games built in Unity. What you perceive as a limitation, clearly isn’t to most developers. It can easily be done, you just need to find the proper way to do it instead of trying to convince Unity to change features of a system the have already replaced.