What Unity Is Getting Wrong
Developer QOLWhen I added Lua to Garry’s Mod my intention wasn’t primarily to make things moddable. I wanted to make things easier for myself. By wrapping a few functions and coding in Lua I could iterate a million times faster. I didn’t have to close, compile and re-open every time, while also hiding all the bullshit and hard stuff. Unity was about that when we first started with it. They hid all the hard stuff in c++ so we didn’t have to think about it. The more time has gone on, the more bullshit has crept to the forefront. The’ve gone from hiding the hard stuff to moving more and more stuff into C#. So while other engines have been trying to catch Unity up in terms of developer friendliness, Unity has been going the other way by making itself more unfriendly.
Render PipelineSwitch to one of the new render pipelines they’ll tell you. They’re faster, they’ve got more features. The old pipeline won’t be updated any more. So you’ve got two choices URP or HDRP. Both are incompatible with each other. Switching is a one way destructive operation. You can’t press a button and try it and decide you want to change back a month later. You’re converting every material in your project. This is a good example of something that could have been hidden in the backend. Choose one pipeline and make it the default. Don’t have an unsupported render pipeline as your main, default pipeline for 2 years. Sure have low and high pipelines, have low as the default, but come up with a pipeline/shader agnostic material system first so we can switch between them – or even ship both.
UIThere’s nothing fundementally wrong with the Unity UI system. Sure it uses transforms so it uses more memory than it should. But no improvements, no new controls, because they’re planning to replace it with UIElements (in a couple of years). There’s a lot they could have done to improve Unity UI. It has bugs. It has a lot of problems with Layouts performing badly (lots of GetComponents in the layouts). It could be rendering faster. It could have a stylesheet system. It could have been gradually improved. The font system that Unity UI uses could have been improved. But they bought TextMeshPro, packaged it up and you’re advised to use that instead. The nice thing would have been to have improved the font system in the backend so everyone automatically benefitted from it. As it is, if you want to use TMP you need to manually update every UI prefab in your game – which again, is one way and destructive.
MultiplayerI don’t even know what’s happening with multiplayer. UNet has been deprecated for 4 years. Every page in the multiplayer documentation has this warning. They had a HLAPI and LLAPI being developed a couple of years ago – has that been released, should people be using it? My nagging feeling is that they’re working on something else. Something to lock you into paying for their multiplay services. They point to the FPSSample to see an example of how to use the network code. The glaring thing about this is that it uses Unity 2018.3.8f1.. and this:
The first time you open the project you need patience! It takes a while to import all the assets. NOTE: Due to a bug in Unity 2018.3, you have to take the following step right after the initial import: 1 Search for Firstperson_Projection in the Project search field. Select the 4 shaders, right click and reimport them. 2 If you have script compile errors related to entities, you need to remove and re-install the entities package.Which brings us to another point.. Update: These are apparently also deprecated.
the HLAPI and LLAPI are the old, deprecated things. The replacement they’re working on is at least 6 months late, still in alpha, unnecessarily tied to DOTS, and performs badly.