Codex seems to loathe Unity but why?
I detest it because it's a broken pile of garbage made by people who either don't know how to program or how to test their shit.
The engine also gobbles up an insane amount of disk space, RAM, and CPU, despite delivering frankly subpar graphics and performance.
Apologists will say, 'B-But Hirato, that's just the developers using it wrong!"
Unfortunately for them, it's not just a few outliers, but every single game using specific versions of the engine.
And sure, newer editions of the engine has fixed a lot of the issues and improved things, but the old games will never be updated to use them, and so those will always remain in their broken state.
Some particular pet peeves:
Bad Resolution #1: First launch, fails to autodetect screen size,
so falls back to 1x1 and stretches this over the screen,
The game is effectively non-functional in this state, and you have to MANUALLY GO FIND THE CONFIG FILE TO SET A REAL RESOLUTION
Bad Resolution #2: Also First launch, detects the screen size, however does not discriminate between single-monitor and multi-monitor setups properly.
e.g. if you have 2 1920x1080 screens, it will use a buffer of 3840x1080.
This results in the game spawning fullscreen on the WRONG desktop, with half of the UI and play area cut off.
In some this can be fixed by navigating the menus as normal (e.g. Cities; Skylines) in others, you're fucked, and have to do the same as the other case (e,g Lord of Xulima)
Bad Resolution #3: Like the second case, it misdetects the actual resolution,
So it picks one it things is closest and stretches that across the first screen.
Fairly minor, aside from some text ending up slightly blurry or aspect ratio,
e.g. it will detect 2560x1600 for a 1920x1080 - StarCrawlers is an example of this bug.
Recursive mouse event generation:
Unity whenever it warps the mouse, may do so in a way that cascades into generating additional events.
This manifests in 2 ways: 1) Your movement makes a YUGE change, or 2) the game becomes frozen
Warping is a technique to calculate relative mouse movement (e.g. Aiming in 1st person shooters), by checking the cursor's position relative to a point and moving it back there (traditionally the center of the screen)
I've found that Alt-Tabbing out can make the game responsive again,
I've also *heard* that throttling your mouse's poll rate can workaround it (e.g. if it's 1000Hz, lock it to 125Hz), but I cannot confirm.
This is fixed in newer editions of the engine, but games like Expeditions: Conquistador will always be plagued by it.
Now, you might think "Why not just use the keyboard commands to rotate the camera?" - The keyboard buttons trigger the same infinite loop...
Default button mappings are wrong for
standard XInput compatible controllers.
I have no idea how this even happened...
I also don't recall how messed up it got or not... I think it was expecting the LT/RT buttons to behave as they do in DirectInput (a combined axis), and not like they do in XInput (2 individual axis)
It's (thankfully) fixed in newer editions.
Spawning crazy amounts of CPU Threads:
Unity3D spawns a fucktonne of CPU threads for tasks that don't need it or are poorly parallelised.
The common side effect is that gobbling up 80-90% of your entire CPU - even if you've got some sort of ThreadRipper beast - and yet is barely capable of delivering framerates measured in FPS as opposed to SPF.
I've run into plenty of games with this issue; it's a weird one that seems to go away and then reappear again.
You can work around this one by disabling most of your CPU cores before running the game; the sweet spot seems to be around 4.
Last one I tried that had this issue was *cough*Monster*cough*Girl*cough*Island*cough*, which used a fairly new version of the engine...
My guess is that it spawns a bunch of render threads (cause that's smart), and they all fight over the same pipeline and tasks, and because of the fighting is barely able to process the game at a playable framerate...
The engine itself has a fucktonne more problems, but these are just particular pet peeves that spring to mind whenever I hear Unity3D...
As for C# as a langauge.
It's got a lot of good points, and a few uncomfortable restrictions.
But I rather like it overall, and IMO, it's a great place to start.