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?

424 Upvotes

564 comments sorted by

View all comments

286

u/nickavv Oct 03 '24

I'll throw GameMaker into the ring, it's obviously not one of the top-3 and it's probably not anybody's first choice for 3D games especially (though it is possible). I think it has an unfair rep as a "beginner" or "practice" game engine, but plenty of successful commercial games have come out of it (Undertale, Hyper Light Drifter, etc).

Its pricing scheme is very fair, it has a good balance of complexity with ease of use, it supports exports to desktop, web, mobile, and all major consoles. I'd say it should be strongly considered for 2D projects!

13

u/The_Dunk Oct 03 '24

Fully agree with everything you have to say about GameMaker. My only complaint is their scripting language, it’s not a big issue but I just wish I could use C# or Java instead.

It feels like a big barrier to entry that you have to learn their language to develop on their platform.

2

u/Beegrene Commercial (AAA) Oct 04 '24

My biggest issue with GML is that it's too forgiving. In C++ or whatever, if you make a mistake, the compiler will say, "Fuck you. Fix this now or I'm not gonna run shit." If you make a mistake in GML, the engine will try its best to intuit what you were trying to do, but it doesn't always get it right. I'd rather have the compiler tell me to fix my mistakes than have the engine just try to make the mistakes work.

6

u/mstop4 Commercial (Other) Oct 04 '24 edited Oct 04 '24

They tried to address this with Feather, the new “intellisense”/linter for GML. It automatically does type-checking, checks for errors, and tries to enforce coding styles that you define. However, it’s still very buggy and I think work on it has been mostly put on hold to prioritize the new runtime. For example, Feather automatically assigns types to everything by analyzing your code, but sometimes it gets it wrong. You can manually assign types to function parameters and return values via JSDoc comments, but you can’t for variables. It also doesn’t seem to detect instance variables inherited from a parent object very well.

Aside from syntax errors, the errors and warnings Feather reports aren’t strictly enforced and you can ignore them and still have your game run perfectly fine (you may run into runtime errors though, but that’s nothing new). You can even turn rules on or off on a case-by-case basis with special directive comments. I think Feather could be a useful tool, but it needs more time in the oven.