It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
It is because it makes complex ideas easier, a cost of easier development for the game dev is more complex code underneath. If someone were to code the same game in C++ or C# without Unity the game would be faster because the final game would have less code and be more optimized.
Are they badly optimized though? Because pretty much every Unity engine game I've played (or at least ones with semi-demanding system requirements) makes my GPU sound like it's about to explode. At some point, you have to stop blaming the devs and just realize it's not a great engine.
Games are also rendered in native resolution (1080p+) no matter how pixilized it is, demanding more GPU resources than, say, render at 480p.
But there are some games no matter how low the resolution always stutter in low end devices, I recall trying to run Beat Cop on the Surface 3 (Intel Atom powered) an was not a fun experience.
Right now one of the games I am playing is Space Haven. Early access and is being developed in java, well known for not being the most ideal thing for complex games or the fastest ( minecraft was an achievement taking that in account ) but the game, a detailed isometric pixel art, real time and with a lot of systems running at once ( it is a gestion base builder, after all ) runs smooth like silk.

I am convinced that if that game were ported to Unity it would have less limitations and some advantages but performance wise it would be unnecessarily worse, indeed
avatar
Gudadantza: Right now one of the games I am playing is Space Haven. Early access and is being developed in java, well known for not being the most ideal thing for complex games or the fastest ( minecraft was an achievement taking that in account ) but the game, a detailed isometric pixel art, real time and with a lot of systems running at once ( it is a gestion base builder, after all ) runs smooth like silk.

I am convinced that if that game were ported to Unity it would have less limitations and some advantages but performance wise it would be unnecessarily worse, indeed
Java is not a game engine though...
I commiserate with the Unity pain on both the optimization front and also on the telemetry one, but for all the poorly optimized games that that engine produces, some really good things have also come out of it or as a consequence of it. Hollow Knight is the main one, of course (nobody dare to deny this absolute truth!), but other free game engines becoming increasingly more popular come to mind now as well. And even though I have no idea what I'm talking about, I feel like every engine has its very notorious quirks (which doesn't take away from Unity being what it is). In conclusion, every game development team should have its own Jonathan Blow to write their engine and their programming language since he's at it too.
Hey .Keys!

This problem with Unity Engine games is very common. If the GPU starts to spin like a crazy cat and show that it can burn any second - this means that the developer of this game could not figure out how to optimize the use of video memory for the broad variety of PC configurations. Both consistent memory overload and data mining using telemetry cause your GPU start to screem like a Formula-1 car.

In this case you can only rely on a very good cooling system or set your graphics driver to cap FPS on 2 lower than you max FPS. For instance, set it to 58 in case you have a display with 60Hz screen refresh rate.
avatar
AB2012: (...)
avatar
jonridan: (...)
avatar
Dark_art_: (...)
avatar
EverNightX: (...)
avatar
Dark_art_: (...)
avatar
Gudadantza: (...)
avatar
aCyborg: (...)
avatar
Crosmando: (...)
avatar
Dark_art_: (...)
avatar
Gudadantza: (...)
avatar
maxleod: (...)
avatar
Wirvington: (...)
avatar
AWG43: (...)
I read all the responses (even the larger ones) and I gotta admit that I wasn't expecting so many people agreeing with me that Unity feels unoptimized.

Anyway, thanks everyone for the explanations on how the engine work and what could be the causes of such behaviour.
It all makes sense.

Specially the explanation about Unity being free and that attracts many Indie developers to use it to save time and money also with Free Assets and, because they do not have experience at all on how to code their own engines, many games end up being terribly optimized in the end.

I gotta say Hollow Knight is really well optimized though. - Maybe because it allows you to also change resolution in a way many other Unity games doesn't? Foregone, for example, forces the game to run at a 1260x720 minimum internal rendering, while Hollow Knight you can change the resolution to whichever you like.

Also, studying how Unity games work with resolutions, It seems to me by a research I did that the developer has the choice to force the internal resolution of the game to be what they want, so in this case of minimum / max resolution is indeed a developer choice.

I wonder, can the developer also force disable telemetry during development time...?
Post edited April 15, 2023 by .Keys
avatar
jonridan: I'm not a programmer per se, so I can't give too many details but basically it is like this: an engine is build for a specific OS, which communicates with hardware in a specific way to achieve specific goals. The more specific it is, the better performance (basically why consoles can run games with lower requirements than a PC). Is not like Unity knows different languages to communicate to every single OS making life easier for every developer in the world, but does use Google Translate to communicate with every OS, making life easier for developers but a nightmare for the people that require speed (performance) in the conversation (ie: gamers). So instead of having, for instance, the graphics instructions going to the GPU it actually goes to a conversion layer in the engine which then goes to the GPU (this is for everything, but graphics are obviously the heavier load and therefore the main antagonist of optimization). Basically you have a middle-man on every instruction set in order to achieve the compatibility Unity provides.
So, to speak about the elephant in the room, what makes Unreal, an egine that also works on virtually any platform, so different in this regard? It is the gold standard and does everything very well by almost all accounts.
avatar
jonridan: an engine is build for a specific OS, which communicates with hardware in a specific way to achieve specific goals.
No. I don't know of any mainstream engine written for a specific OS. The OS specific parts are segmented out and written for each platform they want to support and they are trivially small parts of the engine. 99+% of the engine has nothing to do with the OS at all.

You also seem to think that engines communicate directly with the GPU. No they don't. They use a graphics API like Vulkan, OpenGL, or Direct3D and that code is the same for all hardware. Your graphics driver translates that API to instructions the video card can understand, not the game engine.
Post edited April 15, 2023 by EverNightX
avatar
Ancient-Red-Dragon: Because it's a crap engine.

I notice that with most of the Unity games I have, they cause my 2080 GPU's fans to turn on and to spin to the extent that they sound like a vacuum cleaner, which is extremely annoying to listen to,
That's actually a problem with the missing frame limitation. You can correct that in your graphics cards driver.
Yes, it's mostly visible with Unity games, but also Batman Arkham Origins suffers from it (open the map screen and enjoy), ScummVM and a lot of other games. I had ScummVM run in ~5000 fps.

This actually killed some graphics cards. Game consoles have the same problem (HZD: open the inventory), but their hardware is not as powerful as the one in PCs, so it's harder noticable.

The problem: When the games do not need much power from the card, they increase the frame rate up to a point where 'some' (I don't know which part exactly) part of the graphics card becomes really hot.


Best is to set up your graphics driver to limit the frame rate slightly over your monitory maximum refresh frequency.
This way you don't have low framerate in demanding games and keep the card cool in simple games.
avatar
neumi5694: Best is to set up your graphics driver to limit the frame rate slightly over your monitory maximum refresh frequency.
This way you don't have low framerate in demanding games and keep the card cool in simple games.
You could just enable vsync if you are concerned about high frame rates.
avatar
neumi5694: Best is to set up your graphics driver to limit the frame rate slightly over your monitory maximum refresh frequency.
This way you don't have low framerate in demanding games and keep the card cool in simple games.
avatar
EverNightX: You could just enable vsync if you are concerned about high frame rates.
I actually don't remember if I had that active or not. Will test it.
avatar
jonridan: I'm not a programmer per se, so I can't give too many details but basically it is like this: an engine is build for a specific OS, which communicates with hardware in a specific way to achieve specific goals. The more specific it is, the better performance (basically why consoles can run games with lower requirements than a PC). Is not like Unity knows different languages to communicate to every single OS making life easier for every developer in the world, but does use Google Translate to communicate with every OS, making life easier for developers but a nightmare for the people that require speed (performance) in the conversation (ie: gamers). So instead of having, for instance, the graphics instructions going to the GPU it actually goes to a conversion layer in the engine which then goes to the GPU (this is for everything, but graphics are obviously the heavier load and therefore the main antagonist of optimization). Basically you have a middle-man on every instruction set in order to achieve the compatibility Unity provides.
avatar
paladin181: So, to speak about the elephant in the room, what makes Unreal, an egine that also works on virtually any platform, so different in this regard? It is the gold standard and does everything very well by almost all accounts.
I read somewhere UE is not as flexible as Unity
& the simple example given was the number of vgames
both have on all the genres
(Pointing that popularity, licensing costs
& ease of use werent the only factors)
Supposedly there are things UE cant do but Unity can
Now I have to find the source & re-read (my memory is terrible)
because your question is totally relevant
The number of games might be a bit misleading, since Unity is also good for 2D games. For those UE is complete overkill.

But I also heared that while UE is a more powerful 3D engine with a much better lighting model, Unity is easier accessible. And last but not least some devs might not trust Epic very much.