Over the last decade of grinding away and learning Unity, the communities been very supportive, and regardless of its shortcomings, Unity’s been a decent engine to work with, and the journey from just rendering a few cubes running around on a plane to entire expansive worlds has been a level of fun I can’t describe.
Now looking back, though, after having gotten something on a console, I wish I had just used Unreal Engine or SDL2 with C++.
The reason for this, is that i feel really ‘locked in’ now to the Unity ecosystem, and having now been pretty much trained to use C# day in and day out, now realizing that every console’s SDK is written in C++, all of the AAA and AA studios use C++, because technically making games involves systems programming no matter what you do, as you need to access the file system of the hardware you’re using, the input, audio, etc…
I feel like after what happened, that it’s like I don’t own the very thing I’ve created after all these years. I only create 2.5D JRPG-like games like 90s square soft games like Xenogears, and I wish I had just stuck with C++ and made a toolset that was tailored only for that one thing.
A huge mistake, I wish I had at the very least kept my entire codebase for the tools I’ve spent years developing abstracted from rendering and Unitys animators, and especially ProBuilder, and Unitys GameObject class and made a custom Scene format so I could have just used Unity as a renderer and for its console support only.
In general, I wish I had used Unreal Engine or SDL2 and/or a custom renderer for graphics, because in starting C# I already had used C++, and strayed from it due to ‘ease of use’.
You know, the most valuable thing you end up making are your own personal tools, tools which you hope to use for decades to come. While a game may take anywhere from 3 months to 3 years to create, your tools that you develop could potentially stay with you for 5, 10, even 20 or more years. For a game, using Unity for a project to get in there, finish it with a team in less than a year, then get out is fine…but for a toolset, I don’t think Unity is a good choice.
Again, I don’t feel now I even own what I created, and in the next few years will probably just create it again after my current series of games are finished, in Unreal, or use SDL2 with C++ for my next project. Now I have 7 years of Unity and C# on a resume with 0 Unreal Engine. Oh well, I guess we have to learn the hard way sometimes.
I really really really really wish Unity just natively used C++. In my view there’s no point in having this whole tech in IL2CPP, just so that we’re all trying to avoid what? Complexity? It wouldn’t have been so much more complex to have C++ scripts instead of C# ones, you dont have to use all the extra C++ features. In fact, I’d argue Unity would be more stable and easier to manage for Unity Technologies. C# isnt that much more simple, especially once you get into Events, delegates, interfaces, etc…John Carmack himself said that he’s of the opinion that it’s better to just use a single language.