I've been using Unity for a few months now and what is most frustrating is how lazy and unprofessional the company presents itself.
They basically found that the Asset Store is such a huge source of revenue for them that they now completely over-leverage it and abuse the community for profit. For the few things they do ship, they routinely break things for backwards incompatibility or literally just ship half complete "products". If you want to do anything meaningful in Unity you either have to build it yourself from the ground up or buy plugins.
An example: their AI navigation system is so lacking in features, they haven't updated it in nearly two years, and the last ship they did was literally half broken and buggy for several use cases.[1]
Also their help desk is currently broken, replacing random text with "$$anonymous$$" and deleting replies[2] :)
This comment is definitely a venting comment, but I didn't want it to come across like Unity is pure ass. It has a lot of really great things too. I've especially enjoyed their abstractions around vectors, quaternions, cameras, and local/world space. You can do a lot of really complicated operations that look and feel great, without having what would normally require some pretty advanced math knowledge that is beyond me
I have been using Unity for around 5 years now, and have come across many issues, from lacking documentation, weird APIs, breaking or forever-in-experimental packages, to issues with implementing best-practices for software development.
However, its core is really robust and powers almost all VR experiences and startups, such as Gravity Sketch and Arkio. Which is why I still find myself drawn to Unity.
Apple, Microsoft, Google, Sony, Nintendo apparently live in another world, given how many of their studios or VR/AR endevours rely on Unity, or give it tier 1 support on many of their projects, while everyone on HN complains about it.
I guess they get special builds no one else has access to. /s
Being used often for projects with cheap production budgets and being good are orthogonal concepts especially when talking about the video game industry where cobbled together middlewares for one shot development is the norm. Unity became tier 1 supported because it was widely used by indie projects. Implying the reverse is mistaking cause for effect.
In fact, Unity is actually the example I generally give of a product which is both widely used and terrible. It's better than it used to be. At some point, it was downright terrible. I remember Wasteland 2 running worse than a modern AAA game while looking like a ten years old game at launch.
To be blunt, given the new licencing terms of the Unreal engine, I don't think you should ever use it unless you are already really familiar with it.