Ahh yes the infamous rockstar code of John Carmack. This kind of code is what bit shifted his bank balance 1 to the left many a time.
Thank you for sharing. Unity Documentation is like always useless with bunch of irrelevant information.
Glad to see this tool is being maintained and updated.
It’s OK to use LINQ for operations that you know with certainty are rare (in terms of frames), such as only when a user presses a button or only during initialization of a scene, etc. and for which the use of LINQ greatly improves the readability of the code for other team members. But for anything that might run frequently, especially anything that might run every frame, it’s best to avoid it in order to avoid putting pressure on the garbage collector. Even for those more rare cases I mentioned, it’s still better on the whole not to put that extra pressure on the GC anyway.
As @rcalt2vt mentioned above, the original developers of Project Auditor (Marco Trivellato and Steve McGreal) have not been at Unity for a year or so now. Other people contributed to the tool as well - Steve covers this and more in his LinkedIn post above.
That said, the Profiling and Optimization Team have picked up the package to release it and officially support it going forwards. We’re not totally sure what we’ll do with the public repository, we haven’t decided that yet. There is some process involved if we want to keep it up-to-date with the internal package repository and we’d need to figure that out.
I think it’s nice if it could keep being open source. It’s a good example for asset developers, gives insights into how stuff is checked, and allows people to expend it and maybe even PR those changes.
Personally I’ve checked the code in the graphics repo many times if that helps
If a small team of devs can create great and valuable tools, and an entire year pass by before you guys decide to push it out. What the heck is going on inside? And why were these people let go if they’re making quality stuff to begin with?
Apologies for the blunt questions, but it’s like, why do we have these forums if there’s so much dysfunction internally that no one can even speak about things any more? Why does Unity exist at all if they can’t even take this cool thing, and just add it to the package list?
I feel like I’m taking crazy pills. Can anyone make any of this make sense?
I don’t know who’s on which side of the dysfunction around here, but geese. It sounds like a nightmare for anyone at this company that just wanted to make a great game engine.
And as an outside observer part of me is sympathetic, because there are clearly hard working and talented people, but it’s infuriating to see the absolute rampant mismanagement and tribal groups that are clearly ravaging this company.
I mean if no one is there to support the package, it doesn’t make a lot of sense to release it.
It makes more sense to have a team taking on and supporting the project before releasing it, which is what’s happened.
It does suck the original people who worked on the package got laid off, but waiting before releasing it was the sensible thing to do here.
A team is on the verge of making a great package, and then they get fired, why? Then it sits in the dark for a a year and it gets pushed out there without even a small nod to the original team and now aanother team is taking it over in such a small timeframe.
There are multiple layers of dysfunction here.
Well no, another team took over the package so that it could be released in the first place, not the other way around. There’s been no mention of the time frame of when the package was taken over before it was released.
I don’t know what we’re arguing about. I just hope the Unity guys can start appreciating hard working and talented people and us users can start enjoying their hard work without all this madness.
answer is always the same: management that has no connection to the product besides numbers
It can certainly take a year to polish an internal tool so it is fit for public consumption. It’s also quite possible that this wasn’t a 100% full time project for an entire year. Developers often have to shift their work to other priorities. And we don’t know what the state of the tool was a year ago, both functionally and UX wise. Perhaps there wasn’t even a UI to begin with?
Point is: we simply don’t know, and the question is: does it matter if we knew? It wouldn’t change the status quo.
Inside any larger company upwards of a few dozen people the decision making is coated with layers of complexities that make it hard if not impossible even for someone from within to fully grasp it all. And then it’s all too easy to blame “management” for decisions that seem blatantly wrong from the outside, while many details can’t be shared publicly either to protect individuals (privacy, career, …) or the company (financials, legal, …).
That then gets the rumor mills spinning.
What I don’t doubt is that decisions being made at the time they are being made are being made with a) best intentions and b) to empower the company. Whether any decision was wise or not, turn out as planned or not, is commonly only found out long after the fact however so we’ll just have to wait and see, as usual.
@codesmile I’d have made your post myself a few years ago. I understand I could be wrong. But in this case we kinda do know because of what was revealed above. At least we know a talented team made a thing of value, they were axed and then that thing was released a year later.
Apologies for being difficult, but at what point do we start demanding this company, or this industry get better? That Unity actually provide things and there be some kind of meritocratic structure that serves not only us, but the company themselves so these tools survive and our projects survive?
I’ll agree Unity gets a lot of crap, but at some point you really gotta wonder, what the heck is going on? Let’s be honest with ourselves, this industry is prone to dysfunction, the same traits that compel us to lock ourselves in a cave and produce amazing things make us prone to see no evil hear no evil office politics. And once you have these internal relationships and dynamics going on, things fall off and that’s what we’ve been seeing for so man years on end. It’s only airing these grievances and making them known that this kinda stuff can improve.
It’s hard to see through the smoke and mirror and he said she said to understand the far reaching issues that can hinder a company like Unity on a global scale.
And I don’t make posts like this to attack hard working and good employees, quite the opposite. Something is wrong in this company and good work is obviously being squandered and there is a great deal of dysfunction.
I don’t think it wrong, or taboo for us the customer to want the tools we use to be usable, and to expect the company that we put our livelihood and trust into to execute with some level of professionalism and care for the main product.
To be honest, it does kinda gut me to think I might be chastising hard working and innocent employees, but there is a larger problem here that has run completely and utterly out of control that has been allowed to get totally out of hand at Unity for many years.
@IllTemperedTunas Count yourself very blessed if you work at a large company that is not dysfunctional ![]()
If you work at a small company, it’s hard to compare unfortunately.
Yeah, i mean, maybe i’m just screaming at clouds in the sky. Maybe all this is just doomed because of the financial pressures and the top heavy staffing that inevitably happens in companies these days.
Too many ulterior motives and influences that manifest at any company that people depend on any more.
Just so tired of it all… like what can we even do?
You have to put into perspective that there was a change in leadership at the highest level. JR (got) left end of 2023 and it wasn’t until half a year later in May 2024 that the interim CEO was replaced with Matt Bromberg. So the staff cuts early in 2024 happened “between CEOs” so to speak. And amid turmoil and uncertainty.
I’ve witnessed a layoff once and that leads me to believe that it’s not uncommon for people to leave amid a layoff round who weren’t actually “on the list”. They don’t necessarily leave out of frustration (some do) but opportunity. This can play out so that you can ask to be put on the list voluntarily, so that you benefit from the severance package while someone else takes your place and won’t get fired.
True, yeah I dunno. Lots of conflicting clues and messaging. Again I’m just frustrated by the past 5 years and advocating for positive change, and if i’m misplacing blame, my bad.
Don’t want to pollute this thread any more, but made a post here asking about what we should even be talking about any longer. I feel like I’m taking crazy pills any more.
Thank you for creating this tool.
I hit Start Analysis and my CPU utilization spiked. A modal dialog iterated through projects. Eventually, it locked the Unity user interface with no modal dialog visible.
After ten minutes I decided it froze and I checked task manager. The Unity editor process shows 0.1% CPU utilization with significant memory allocation.
![]()
Really nice tool, thanks for creating it!
I have a couple of points regarding domain reload and asset issues:
Domain Reload:
The feature for tracking static variables that aren’t properly reinitialized when domain reload is disabled is very useful!
I’ve noticed what might be a false positive related to [RuntimeInitializeOnLoadMethod] attributes. It seems the tool flags variables even when they’re correctly reset within a function called by a [RuntimeInitializeOnLoadMethod]. For example, if a method decorated with [RuntimeInitializeOnLoadMethod] calls another function that handles the variable reset, the tool still flags the variable.
Also, it appears that variables with { get; set; } accessors aren’t being detected by the tool. Is this intentional, or a bug?
Asset Issues:
Most of the asset issues flagged in my project seem to be related to sprites that are dependencies of Resources folders, but they’re actually packed into Sprite Atlases. These Sprite Atlases aren’t included in the build directly because they’re bundled into AssetBundles. So, the flagged issues seem to be false positives, as these sprites are correctly handled within the AssetBundles. Could the tool be updated to recognize this scenario and avoid flagging these dependencies?
Project Settings:
I have a warning related to shader quality:
Unless you support devices with a very wide range of capabilities for a particular platform, consider editing the platform in Graphics Settings to use the same shader quality setting across all Graphics Tiers.
Where can I find the setting to use the same shader quality ?