I want to love Unity, but as a low-level and backend developer I find it incredibly frustrating to use.<p>I deal mostly with automations, so rarely do things directly anymore. I'm always thinking in terms of: how can I record this and play it back, can I get at the underlying data structures (hopefully standard like JSON or CSV), can I do multi-file search and replace with shell tools like grep using regexes, can I exercise the thing with a different tool like curl instead of a GUI, etc etc etc. So when I have to do something more than once, I often copy the text into something like BBEdit and run text filters on each line or use rectangular select on tabular data or format it as TSV (tab separated values) to copy/paste data into spreadsheets.<p>But in Unity, I have to do everything the bare hands way with cookie cutter tools. I realize that's by design, but please, give experienced developers the means to access the underlying data structures so they can automate their work.<p>For example, I was setting up the controller button mappings for my VR rig. At first it was great, until I tried to copy and paste rows in their GUI and found that it didn't work. I get tripped up constantly by the simplest tasks because Unity evidently doesn't run its GUIs by new users, the way that Apple might when they're designing a new interface.<p>And then there's missing functionality in their standard libraries. For example, the GL_LINES primitive from OpenGL is simply missing, and there's no metaphor that replaces lines within their renderers. This isn't really their fault, since such basic functionality has been stripped from the underlying drivers on most platforms. Instead, they provide an over-engineered line mesh tool, which is fine, but many orders of magnitude slower, and we can't just use it as a shader on an existing model.<p>There's no separate stop button. It doesn't save what I do in play mode automatically, or even ask me whether to make some of the edits I've made permanent. Their version control tool is atrociously bad compared to standard ones like git. The shader graph GUI runs many thousands of times slower than it should (unusable on my daily driver Mac Mini, I have to bust out the gaming PC).<p>Times everything. A beginner mind outside of the Unity ecosystem sees these hindrances immediately. But experienced Unity users become blind to them. My very good programmer friend thinks I'm simply crazy and using it wrong. But see, that's his answer for everything. To criticize me instead of to consider ways that the tools could be improved. Which is the antithesis of computer programming (in fairness, he's much more of an artist or craftsman than an engineer like me).<p>Then I run into problems with their opinionated stances like composition over inheritance. Or various friction in C# that I never hit in languages like PHP that I chose specifically to avoid the manual management of C++-inspired languages. Which is its own can of worms, because developers cling to advantages that suit them rather than seeing the advantages that other paradigms could bring. Again, this is very anti-programming in my book.<p>So my advice to Unity would be to take a year and stop chasing Unreal. Implement the low-hanging fruit. Fix the bugs. Update the documentation. Consider allowing a large list of languages, especially Javascript/Lua/Python. But I think that the odds of any of this happening are so low that I regret taking the time to write this comment.