Why Godot instead of GameMaker?

Why did I switch?
I was a long time user of GameMaker starting with GameMaker 6 or 7, buying all further GameMaker Studio versions with HTML and mobile exports as soon as I could afford them.
I liked the speed and ease which allowed me to create prototypes and turn them into full games in a very short time. I did several Ludum Dares and was happy to complete working games in 48 hours!
The builtin script language GML was pretty close to C and Java, languages I used for many years in my professional career as a software developer so I felt very comfortable coding in GML.
But coding in GML/GameMaker was also very restrictive (at least up to around 2022):
- No OOP (Object oriented programming)
Although GameMaker uses "Objects" with limited inheritance it's still limited (no static members or methods, all scripts are global and not bound to Objects, which are comparable to classes in Java or C#) - GML is an untyped language
You can assign any data type to any variable - there is no typechecking at all. The compiler and runtime don't protect you against assigning a boolean to a variable which should only contain numbers. This is error prone and leads to a lot of crashes at runtime - No good UI support
GameMaker doesn't have builtin UI elements like Godot. You have to code everything on your own, every button, every menu is drawn and coded by the game developers themselves - Scripts were very basic
You could not name the parameters of a script (they were named arg1, arg2, arg3...) and every script started by a few lines of code where I assigned the script arguments to new variables with speaking names
Advantages of Godot
Godot is very much comparable to GameMaker. Both have a concept for screens (Rooms and Scenes), game objects (Objects and Scenes) and have their own builtin scripting language (GML and GDScript).
Where is Godot superior in my opinion?
- Other languages (like C#) are supported! And C# is a first class supported language. So no proprietary language but a full industry level mature programming language like C#! With interfaces, proper inheritance, type safety, tons of utility classes built into the .Net world and a huge repository of example code and complete libraries/packages available on the internet
- Great UI classes
Godot comes with a lot of container classes to arrange your UI elements like buttons, lists, menus, text elements and so on. Godot even knows themes you can design and apply to your game, any scene or any UI element separately! - It's open source!!!
A lot of people are working on the source code, some of the most experienced people are paid by a foundation and many developers give their time for free!
Does Godot have disadvantages?
Yes, in my opinion there are a few disadvantages.
- No paid asset store!
Right now the asset store only contains free to use assets created by volunteers. But my experience, based on the Unity or GameMaker asset store is that the better assets are sold for some money. If you can earn some dollars/Euros by selling a great asset that's a huge motivation for any developer to create one! Come on Godot Foundation, you can do it! - Tricky to get on consoles
Because Godot is open source they cannot offer console bindings cause that would require to opensource the code to integrate the console APIs which is a no-go for the console companies like Nintendo or Sony! So you have to either get a console developer license on your own and integrate their APIs on your own or use the support of some companies who already did that and offer their services to you (but of course not for free).