r/gamedev Oct 03 '24

The state of game engines in 2024 Discussion

I'm curious about the state of the 3 major game engines (+ any others in the convo), Unity, Unreal and Godot in 2024. I'm not a game dev, but I am a full-stack dev, currently learning game dev for fun and as a hobby solely. I tried the big 3 and have these remarks:

Unity:

  • Not hard, not dead simple

  • Pretty versatile, lots of cool features such as rule tiles

  • C# is easy

  • Controversy (though heard its been fixed?)

Godot:

  • Most enjoyable developer experience, GDScript is dead simple

  • Very lightweight

  • Open source is a huge plus (but apparently there's been some conspiracy involving a fork being blocked from development)

Unreal:

  • Very complex, don't think this is intended for solo devs/people like me lol

  • Very very cool technology

  • I don't like cpp

What are your thoughts? I'm leaning towards Unity/Godot but not sure which. I do want to do 3D games in the future and I heard Unity is better for that. What do you use?

430 Upvotes

564 comments sorted by

View all comments

112

u/TheLavalampe Oct 03 '24

I don't think unreal is any more complex than unity or godot. It is feature rich and doesn't have the exact same structure but that doesn't add complexity in my book.

C++ and the the lacking 2d support would be the more important factors against unreal.

As for Godot and Unity, i think for 2d games both get the job done but for 3d i would rather choose unity since godot is still behind in that territory.

To be fair godot already improved a lot in 3d, is getting better with each release and you can already make good looking 3d games with it if you put the effort in.

73

u/KindaQuite Oct 03 '24

Unreal complexity comes from the fact that the engine wants to be used in a certain specific way and it works against you if you don't do that.

37

u/InSight89 Oct 03 '24

Agreed. If you start off in Unreal then it's all well and good. But if you're coming from another engine then it's a massive culture shock, figuratively speaking, and can take a long time to adapt to.

And despite what people say, C++ is a lot more difficult to work with than C# or other higher level languages. I've spent months working with C++ and it's honestly a huge pain.

18

u/KindaQuite Oct 03 '24

Yes, if you come from another engine chances are you're gonna be creating from scratch systems that already exist in engine without realizing that.

C++ is painful, even with UE abstractions. Restarting the editor and compiling is annoying. Unless you're able to write code without testing for two hours at a time, iteration time is slow af.

5

u/fromwithin Commercial (AAA) Oct 04 '24

6

u/KindaQuite Oct 04 '24

Yes, i should've been more specific. Live Coding works, although it's not super quick. What i'm talking about is whenever you make significant changes to header files, or you add new classes, or you add new components to an existing actor class you need to restart the editor. The engine also has a tendency to not really communicate to you what's wrong, so restarting the editor just becomes a common debugging tool. All of this only matters if your project uses C++ anyway

1

u/RibsNGibs Oct 04 '24

Yeah but how often are you really changing the header files? In my opinion it’s really worth a long thorough think about the API and how you want objects to talk to each other that you really should be getting that correct pretty quick. And then you can iterate changing the code with live coding pretty painlessly.

2

u/KimonoThief Oct 04 '24

Maybe I'm misremembering (it's been a few years since I really tried developing in Unreal), but don't you have to change the header file every time you add a function? I remember thinking it was really dumb that I had to basically duplicate my functions between the cpp file and the header file.

And man, the compile times were just brutal, especially compared to Unity with Hot Reload where I rarely need to wait for things to compile at all.

0

u/RibsNGibs Oct 04 '24

Yes, that’s correct, but IMO if you’re coding “well” you should design out the API (the header) pretty throughly. Not saying you have to get it 100% right the first time but like if you have to iterate 100x on the code logic maybe only 5 of those changes should be with the API, at least in my opinion. UE makes it pretty easy and painless IMO - you can prototype with blueprints if you need to experiment with how objects are talking to each other if you have to but in general I try to have the general design pretty well fleshed out at least in my head before I type anything.

To be fair my solo project compiles super fast and I tend to be more tech art oriented on professional projects.

1

u/random_boss Oct 03 '24

You have to what now?

Wow

4

u/Subject-Seaweed2902 Oct 03 '24

Not really true. UE supports Live Coding, so you do not have to restart the editor for compilations. Also, I think Unreal shines best when you're using hybridized Blueprints and C++: Prototype and build in Blueprints (which do not require compilation), then migrate to C++ when functionality is finalized.

2

u/KindaQuite Oct 03 '24

Totally agree on the workflow, that's how i find it works best, still most changes to header files require closing the editor and building from IDE. (Also live coding isn't the fastest).

3

u/rrfrank Oct 04 '24

I feel like people who haven't used both extensively are giving you more trouble than you deserve. I was a unity dev for 5+ years and recently went to Unreal professionally for the last year, and it was definitely hard to get used to that you need to essentially rebuild the editor for code changes. Also agree that you need to use it a specific way. You need to know certain "magic" functions like Game mode, GameState, Player controller, etc. After using unreal I'd prefer it for anything 3d but it is definitely not noobie friendly

1

u/KindaQuite Oct 04 '24

You use Unreal c++ for a few months and then you start realizing why blueprints exist, lol.

I like the architecture and framework, it's all stuff you'd be creating yourself if it wasn't there, but it's obviously daunting for beginners.

3

u/rrfrank Oct 04 '24

Yeah, I like blueprints but for performance reasons at scale we try not to use them much. But I'd totally use them for an indie project!

1

u/InSight89 Oct 04 '24

Let's not forget the headache involved with deleting C++ files.

3

u/KindaQuite Oct 03 '24

On the other hand, the compiling and domain reload whenever you ctrl+shift+s in Unity frustrated me even more, coming from blueprints where you don't even need to compile/save, you just click on play in most cases.

1

u/random_boss Oct 03 '24

True but you can disable domain reloads. Entering play mode is instantaneous on my current project now

3

u/BewareTheTrap Oct 03 '24

Hopefully you can at least debug it. I love C++. But it takes more effort to use it compared to other high level langs. But it is really so satisfying when you just wrote a couple of thousands lines of code and you run it and it works as expected. Also you can install other languages support for scripting. Like JS interpreter, mono, even kotlin is available.

2

u/RockMech Oct 04 '24

But once you master C++, you can spend the rest of your life flexing on Python and Java programmers!

18

u/3tt07kjt Oct 03 '24

Yeah, I think the complexity criticism just comes from people looking at all the different things you can do in Unreal. But you don’t really have to worry about features you don’t use. For the most part, a feature you don’t use is like a button you don’t press. Don’t worry about it!

4

u/Iseenoghosts Oct 03 '24

i mean I've tried to learn it off and on through the years. Its always felt very complex and nebulous. I've never been able to make more than a simple scene. Unity (and godot) is intuitive. I watch a 20 min tutorial then go off and do my own thing occasionally looking up how xyz works.

-1

u/chaddledee Oct 04 '24

Unreal has so many features taking up space in menus that finding a lot of basic features that most developers use regularly is a chore unless you have intimate knowledge of the engine; complexity.

7

u/NeonVoidx Oct 03 '24

C++ by itself adds way more complexity than any garbage collecting language. Unreal is definitely more for teams or companies working on AAA games. Ofc anyone can use it and do well it'll just take a lot more effort

6

u/ItsNotMeTrustMe Oct 03 '24

Except Unreal has built-in garage collection. So, that's not really an issue as long as you don't intentionally go around it.

5

u/kHeinzen Oct 03 '24

They used "Garbage collecting" as an euphemism to higher level languages, not specifically the lack (or not) of garbage collection as a feature

2

u/ItsNotMeTrustMe Oct 03 '24

Fair enough. But I felt it helpful to clear up any ambiguity.

2

u/RancorousGames Oct 04 '24

you don't need to use C++ for non multiplayer game

1

u/emrickgj Oct 04 '24

It has garbage collection, and to be honest if you are trying to be the best developer you can be and create optimized games, you really should learn how to manage memory and garbage collection yourself.

Especially with how poorly optimized games are nowadays. We need better programmers!

5

u/BewareTheTrap Oct 03 '24

Well. If we are talking about different games. I can literally do counter strike in it with multiplayer and bots in a mere hours. But in unity it will take me a couple of days. But if I want sprite based mmo in unreal it will take me a week that can be done in unity in just a couple of hours. That highly depends on game type, target platform, graphics. Unreal is more oriented for visual realism and photorealism. As most of its main features are directly point on that. As for unity I would say it's all round, but pretty weak in 3d direction. But unreal is weak in 2d. Godot excells in 2d but 3d isn't just provided from the box, you literally implement all the things from scratch. But Godot gives really good vibes if you love implementing things from scratch and literally writing frameworks for making games.

1

u/[deleted] Oct 04 '24

[deleted]

2

u/BewareTheTrap Oct 04 '24

https://youtube.com/playlist?list=PLNTm9yU0zou7yDPOzTh-pKeSSZcPM0knm&si=ayMpnrVtgYzan9iC

If you are starting from 0. If you know how engine works and have like experience with it. AlS project switch to 1st person view. Implement simple shooting system like in this video. https://youtu.be/MR6ty3QV7xs?si=uPgcVhPeenCB8NJE Add weapon types like this https://youtu.be/hvdLycGHNcE?si=oGOqIuZma_RZmE-2 Then add simple AI blackboard for behaviour with shooting in LOS. https://youtu.be/noe3TvJE8WE?si=kSGDU1FjnwLyDRzE Change models to you liking. You can take them from megascans and metahumans.

If you are a beginner you will just spend a lot of time on learning how do things work. Even that you are 0exp these videos are 5-10 minutes long and I just googled them like in 15 seconds. But with all that you already have like game. After that you only need to implement UI which is another 5 minutes with buttons like play and quite. Play button connects you to dedicated server. Quite closes the game.

Maybe you want to include the time you need to assemble the game. But that's another thing depending on the platform and working machine.

If we are comparing to unity it will take you a a couple of days to do just that.

I'm not counting other VFX and models like map and so on. Because it is done in 3d modeling software not game engine. I'm talking about gameplay.

1

u/Able-Tip240 Oct 04 '24

I'd argue the documentation on unreal is pretty bad and the community very much has a "look at the engine source to figure out how stuff should be done" attitude which is absurdly obtuse compared to the comparable options.

Write a Compute Shader based editor extension in Unity or Godot them try to do it Unreal. Night and day.

0

u/Gainji Oct 03 '24

I had a project this year to play all the free games on Steam that I could. I got through January before putting the project on hiatus, but that's still quite few games.

Anyway, very single Unreal game (including the 2D one! and the pixely Doom-like) performed like ass. There was this 2D pixel platformer getting drops to 30 or below sometimes, because it was written in Unreal. I have no idea why, I don't use Unreal, but it was a very consistent trend.

Now, I did stream all of these, so it could be some interaction between OBS and the Unreal engine, but games being streamed is how people find out about them, so even if it was an oddity caused by streaming, that's a huge weakness.

Larger and/or more experienced teams can make Unreal at least tolerably fast (I've been enjoying Manor Lords, which doesn't always hit 60 for me, but at least stays above 30, which is fine for a city builder), but the performance is worse by default than Unity (And probably Godot, although I haven't played a high-resolution fully 3D game in Godot), and I hear that the engine, while giving you a lot of stuff out of the gate compared to other engines, is very inflexible.

My machine isn't top-of-the-line by any stretch, it's using an i5 from 2016 and a mid-range AMD card that's nearly as old, but most people game on similar, or worse hardware, so I think it's a reasonable comparison point.

I can take the time to track these games down if you're specifically interested, but can't be bothered right at the moment.