Let me start by saying Unity has been a valueable tool for me throughout the years. You may realize this is my first (and perhaps last) forum post and thus decide not to pay too much attention to it. The truth is, I have been using Unity for more than 5 years now, spent probably more than $1000 on the asset store and maintain a small team of developers. I filed the occassional bug report but never posted on here, because for the most part, things were running fine. The fact that I have resorted to finally post my feedback on this forum mostly means one thing: things are no longer running fine.
This post will be an attempt to phrase this criticism in a constructive way. I do not have high hopes for this to change much, but I feel it is at least worth to give it a try. Now where to begin?
As of recent, it feels as if Unity has had the habit of proudly presenting new features that are to be released soon™. The most ironic example for this is the feedback system being transitioned to these forums in 2019, the same post saying that a new solution is on its way. So here am I am, 2022, posting feedback on the forums.
-
I recall waiting several years for the new Sprite 2D system when it was announced.
-
I recall waiting for the Entity Component System to supposedly become the new standard for developing in Unity and never hearing of it again.
-
I recall waiting for the new USS based UI system which, years later, is still in preview.
-
I recall waiting for PlasticSCM to become useable, then getting forced out of Collab and being left with disfunctional version control.
-
I recall waiting for the editor performance issues in Unity 2020+ to get fixed.
-
And I recall waiting for a non-deprecated Multiplayer System - to this day.
This list goes on, filled with features that I have forgotten about, because their announcement dates so far back. Now inherently, this is no major issue. It is an annoyance for sure, but it has never stopped me from developing. There were times when I was thinking to myself “I will just wait for a couple more weeks, then the new feature will be out and I do not need to implement it myself” and I was disappointed, but beyond that, things are fine. Unity, as it stands right now (or stood, more on this below), has all the features that I could wish for.
I, like any other developer, understand that implementing these features takes its time. Whether it is reasonable to announce them years before release is subject to discussion, but in principle, there is no harm in this.
However, and this is the main point of this post. These developments stop being an annoyance and start being a serious problem when with the announcement of a new system, the support for the old system is cancelled. This happened with Multiplayer, with us developers having no solutions without resorting to third party systems for years now. It happened with Version Control, when support for Collab was cancelled and we are now left with PlasticSCM, which still has system breaking bugs and a setup more large, invasive and complicated than Collab ever had. And I think it is fair to assume that eventually, LTS for Unity 2019.x will end, so that we are then forced to use a newer Unity version, probably without their performance issues ever being fixed.
Now there are ways to deal with this:
Instead of using the Unity Multiplayer Servers, I can simply pick one of the alternatives on the asset store, like Photon. I may have bought the server resources from Unity, but if there are alternatives that work, I will gladly pay for them instead.
Instead of using the flawed version control, requiring an additonal 500MB client for each individual and crashing at files of more than 30MB, it is easier to set up a workaround using GitHub. Well sure, I might have considered buying additional seats for the team members on Collaborate, but if both are equally inconvenient to set up, I might as well take the one that is more stable.
And if support for Unity 2019 eventually ends, I will probably grudgingly invest in better hardware to run the new versions, instead of using that money on the asset store.
The point that I am trying to bring across is: these recent developments have forced me to patch up and find workarounds for an initially perfectly running system again and again. It did not benefit me as a developer and neither did it benefit Unity. Everyone involved would have been better off if literally nothing had changed.
Am I suggesting to just stop development on Unity completely and maintain the old systems infinitely? Of course not! If that had been the case, we would not have a lot of the amazing features we know and love today. But what I will suggest is that support for old systems should not simply be dropped before replacements are ready and proven. Do not force users to adopt new systems. If they are decent, they will be adopted by themselves. I understand there will be a point where it is just not worthwhile to support old systems, but in my mind, the idea for this should be that ~90% of the users first transition and then the old system may be shut down. Allow the users to choose which system they want to use. Once they decide the new system is better than the old one, go on.
You, at Unity HQ, are the only ones who know the numbers on this, but from my perspective, the way it currently works is that a grace period is provided, during which users are requested to transition to a new system. The majority does not respond to this. And perhaps I can provide some new insights by saying that, at the very least in my case, this does not happen out of ignorance, convenience or laziness. It is simply because the new systems are often objectively significantly less stable or not ready. At the end of the grace period, the users are then forced to transition anyways, leaving them with a worse or disfunctional setup.
This post is obviously too late to undo what has happened so far. We will not get functional multiplayer for a long time and who knows if there will ever be a lightweight solution for version control again. But for the future, in the interest of everyone, for flip’s sake, please stop cancelling working systems and replacing them with something that does not work. No one benefits from this. And if it continues and the experience with Unity becomes waiting for systems to get fixed or finding workarounds for them, this seriously affects the quality of Unity.
I understand this has become a lengthy post. Thank you for taking the time to read it, and if any questions arise from it, I will be happy to provide my opinions on them.