Advertisement

Been away for many years, finally decided to get back into it. Looking for advice for those who have used Unreal and Unity recently.

Started by July 21, 2023 05:33 AM
7 comments, last by alice wolfraider 1 year, 3 months ago

I've used both Unreal and Unity, many many many years ago. I've been away from game dev a long time.

A lot has changed since then.

Know I know what Unreal and Unity are capable of. That's not what I'm looking for as advice. What I want to know is what is the total pain-in-the-ass issues they have now. The things you only really find out after really delving into a project.

I remember the frustrations and issues both of those engines had that drove me up the wall. What I want to know, are those issues still there? Have they been addressed during those years and what are the showstoppers (if any) that they have right now.

For example, with Unreal, back then it was a resource hog (even on the best of the best of dev PC hardware). Graphically, out of the box, it was just fantastic, but documentation was horrendous. Documentation, examples, references, all were severely lacking and in a lot of cases …. missing. There were minor issues with networking, some major issues with importing assets of various formats (required convoluted work-arounds), total lack of visual scripting coherence and was slow at runtime. Etc.

With Unity, back then it was essentially incomplete (to an extent). It required so many 3rd party external addons to get the most basic of things other engines had built in. Working with the input manager was a nightmare (basically you couldnt make it so players could assign their own controls or keybinds). Graphically, it required so many work arounds to make it look anywhere close to what Unreal just had out of the box. Large scenes would crash in the editor when navigating around. And sometimes when doing the final build it would crash and corrupt the project, making it impossible to ever get a final build.

So those of you who have used Unreal or Unity in the last couple of years, what are the total headaches you've run into?

I want to know what to watch out for.

(Note: I'm not a professional game developer. I've just tried a lot of tools with a fairly open mind but the games I'm trying to make are very technical in nature that fitting that into any game engine is challenging)

Oh boy, where to begin lol. Would be interesting to know when exactly you used these engines but your assessment is sort of spot on from when I last dabbled in these engines.

I used Unity a couple of years ago for a few months. From what I understand 2020 (or was it 2021) is still the preferred version because apparently things got worse in more previous versions so maybe my experience is still relevant there. You said that basic things don't work in Unity. The input system is such a thing. There was a “new input system” introduced. I thought that looked great and wanted to use that since it supported multiple devices out of the box. The problem was that the events stopped firing so I had to call them manually if I remember correctly. For that feature there was an asset on the asset store which was apparently a lot better and stable so people recommended to buy that instead if one wanted hassle free input.

Another thing I've heard a few times which you mention as well is that the engine/editor doesn't handle big games that well. Once things grow beyond a certain size it might take 10+ seconds to compile and even run the game. The compilation should be alleviated with creating separate DLLs for your code so that you only recompile parts of it but from what I heard as well that doesn't remove the problem, maybe makes it slightly better.

On the positive side with Unity the docs are fairly decent and they generally show examples of common use cases.

For Unreal I would say it's a clunky engine that scales very well (again from what I've heard). It's meant for large teams and they have certainly optimized it for that.

A problem I find with UE is that it is very focused on the visual Blueprint scripting system. That system is very easy to work and prototype with but it's also a binary format that's hard to track with source control. You can copy some code from one project to another if you are inside the UE editor but you cannot do that outside of the editor. That's sort of what bugs me the most with UE, you have to be inside the editor to accomplish even writing and maintaining code. That's a hint to me that the engine is primarily for simplifying artists' lives while programmers just have to live with it. On the editor side though, UE5 is a big improvement on the UE4 editor. It's much more “modern” and I feel it runs better and is more well organized.

Another thing that bothers me about UE is that it's very “batteries” included by default. They give you these templates which are almost full fledged demos (very narrow in scope) and it's hard going getting 90% of the implementation handed to you to go that extra 10%. If all you are doing is expanding on what's already there (say an FPS) you will probably be totally fine. But if you want to do something that's a bit outside of the templates it's a bit hard to get started in this engine for some reason.

The worst thing about UE though, which is a solvable problem if you got the cash, is that with C++ it is literally impossible to use Visual Studio which is the official solution I believe. UE has its macro system with UCLASS() and friends. Visual Studio is generally unable to understand those macros and will paint half your project red. The solution to this problem though is to use Jetbrains Rider but you have to pay for it. Rider manages to index all the UE files correctly and it also even tells you if a C++ property is used in a Blueprint which is really cool tech! I bought a 3 year subscription on a sale but unfortunately since then I have barely used UE since I find the iteration process is too long with C++ and with Blueprints I feel I'm getting stuck too much in the “UE way of doing things”.

Currently I'm looking at Godot which has its own quirks. It is probably the most intuitive engine out of these. But I should not that my goals have changed from “make a cool 3D game" to “just make anything small in 2D". If you were frustrated with Unity not being “batteries included” then Godot will certainly be much worse for you since there isn't even a marketplace where you can pay for what you need. It's more of a platform that in a few years might be like Blender where a part of the industry moves to it and there will be lots of assets at that time (probably).

Overall there is not “one-size fits all” in game engines. Depending on what game you are trying to make specifically and in what timeframe, and what team size you can get totally different answers. Also a lot of these game engines live on marketing rather than actual long term usability. UE5 was incredibly hyped, Godot 4 was incredibly hyped, DOTS in Unity was incredibly hyped. Not sure if any of these technologies live up to their hype though.

Advertisement

QFS said:
With Unity, back then it was essentially incomplete (to an extent). It required so many 3rd party external addons to get the most basic of things other engines had built in. Working with the input manager was a nightmare (basically you couldnt make it so players could assign their own controls or keybinds). Graphically, it required so many work arounds to make it look anywhere close to what Unreal just had out of the box. Large scenes would crash in the editor when navigating around. And sometimes when doing the final build it would crash and corrupt the project, making it impossible to ever get a final build. So those of you who have used Unreal or Unity in the last couple of years, what are the total headaches you've run into?

Well, Unity is still Unity. Some bugs/crashes haven been fixed, some more have been added. The current most annoying bug is with the debugger: Any combination of eigther attaching the debugger or setting breakpoints in the wrong order or at the wrong moment might hang or crash eigther the IDE (happens for VS and Rider) or Engine, or simply not execute the breakpoint at all.

New systems added like the new input and GUI are not that good since, as @perry_blueberry mentioned, they have tons of strange bugs and limitations.

In my opionion, if Unity ever annoyed you, it always will. It's flawed to the core, it's basic system of MonoBehaviour doesn't lend itself to crafting solid solutions.

perry_blueberry said:
The worst thing about UE though, which is a solvable problem if you got the cash, is that with C++ it is literally impossible to use Visual Studio which is the official solution I believe. UE has its macro system with UCLASS() and friends. Visual Studio is generally unable to understand those macros and will paint half your project red. The solution to this problem though is to use Jetbrains Rider but you have to pay for it. Rider manages to index all the UE files correctly and it also even tells you if a C++ property is used in a Blueprint which is really cool tech! I bought a 3 year subscription on a sale but unfortunately since then I have barely used UE since I find the iteration process is too long with C++ and with Blueprints I feel I'm getting stuck too much in the “UE way of doing things”.

There is also the possibility of using any of the IntelliSense-replacement plugins like ReSharper, in VisualStudio. Not an idea solution, but it's also not totally Unreals fault, more Visual Studios problem with Intellisense and large codebases. The Unreal custom-preprocessor/compiler doesn't help, but its Intellisense that can't keep up.

QFS said:
For example, with Unreal, back then it was a resource hog (even on the best of the best of dev PC hardware). Graphically, out of the box, it was just fantastic, but documentation was horrendous. Documentation, examples, references, all were severely lacking and in a lot of cases …. missing. There were minor issues with networking, some major issues with importing assets of various formats (required convoluted work-arounds), total lack of visual scripting coherence and was slow at runtime. Etc.

My main issue with Unreal lately has been, trying to get Android builds to work. ITS SUCH A SHITSHOW. You have to install everything manually, and you have to make sure to select very specific versions of everything, otherwise it won't work. Having two different engine-versions on the same PC that needed to both do android-export was impossible. Other than that, crashes here and there, but nothing as majorly annoying as Unity baseline for me.

I dunno. search Unreal Engine has fire simulation in Niagara, but there is no easy way to sample the simulation field.

I haven't used UE much, but my biggest annoyance with Unity is that the editor seems to slow down tremendously once the project becomes non-trivial. Particularly a problem is the time spent importing assets or refreshing the asset database. Recently I had a 30GB project that took overnight to even open for the first time. Subsequent opens take minutes to hours, depending on how many assets changed since last opened. Starting play mode takes 30 seconds or more. Closing the project/Unity takes at least a few minutes. This is simply unacceptable from a developer efficiency standpoint.

Unity also has a potential for performance issues due to the reliance on a garbage-collected language (C#) to implement most things. The GC can execute at random times which slows down runtime performance in unpredictable ways. This is especially a problem for VR where you need to hit consistently high FPS to avoid motion sickness. So, you have to write your code in a certain way to minimize how many allocations you do per frame (not easy in a language where everything except structs/primitive types is a heap allocation).

I'm using Unity professionally to some extent and also for small hobby projects.

ECS/DOTS had some major changes - which causes quite some headaches. Other than that - my personal opinion is that Unity Technologies doesn't really know what they want - introduction of SRP, HDRP, LWRP - while nice on paper, has complicated things. Their specification changes more often than I change oil in my car, and upgrading Unity version with those was time extensive thing (it got better in "recent releases", but is still annoying).

The editor feels slower, the progress bars are a lot more annoying and happen quite often (almost every time you change a script). And that's the case with high performance SSD (having them in M.2) and high end hardware (we're talking Ryzen 5900X, 128GB DDR4 at some crazy freq., Radeon Rx 6800 … yeah, I need an upgrade).

The only more annoying thing is - at the moment they almost got their UI solved to a very good extent, they scrubbed it and created UIElements (basically new api) - with same problems as every single new thing they add (api changes over time).

Other than that - it is a good and useful piece of software, and did not really change that much over time.

Unreal Engine is something I've only touched few times - so I'm probably not the right one to ask - in few occasions I touched it, it did what it was supposed to, but I personally didn't like the interface and it seemed clunky (might have been me). I have a massive problem with their Epic Launcher (and Epic questionable practices - especially after FTC action against Epic).

My current blog on programming, linux and stuff - http://gameprogrammerdiary.blogspot.com

Advertisement

@perry_blueberry

I would add that Godot,until recently, appears to have been designed more for 2D than 3D.

Godot Version 4.x looks as if the team has started to refine their 3D modules.

Steve Naidamast / Sr. Software Engineer

I am ArhiTech

outside of the toolkit that must be written for a specific game by the developer himself on Unity,

the average game will not fly up

inside any engine there will be portability problems and coding problems, and a labyrinth of code and links

the problems described by you and other developers have not disappeared anywhere

and most of them will never disappear anywhere

the same option is offered as before: the use of the Component Entity System also in coding as it is built in the engine,which means also compatibility at the Top Level

the video scrolls through the coding letter about how it all works in the upgrade :

you can immediately understand who has encountered coding, or understand when to read unity manuals

and then figure it out again - here one helps the other - in a ring

phantom entity system next gen

nifelium power of nonentity

Alice Corp Ltd

This topic is closed to new replies.

Advertisement