Samugari Dev

My experience with the Godot game engine

Most of my game development experience has been with Unity, except for my foray into Love2D

When Love2D didn't work out, I started looking at some other engines and settled on Godot.

Here I'll note some of my initial opinions on the engine after making a few small games.

What I liked

Open-source

Not much to say here, this is always a plus. Especially with the recent drama about Unity pricing.

The app is lightweight and clean

The file size of the Godot app is only 149MB, and is just a single .exe file. This doesn't really mean anything for the development experience, but I just love portable apps like this.

The UI also doesn't feel bloated.

GDScript

GDScript code example

GDScript is Godot's built-in programming language. The language itself is quite good. But what I really enjoyed was how integrated it is into the engine.

You can edit scripts right from the engine, and the auto-complete knows about objects (called "nodes" in Godot) in the scene.

Combined with the previous point, it means that Godot is the kind of app you can just pull up quickly and add a few things to your game.

I also love signals, which is the Godot implementation of the observer pattern. Having this as a built-in type and integrated in the editor makes it easy to create a loosely coupled code structure.

Scenes are composed of scenes

Unity has prefabs for reusable game objects.

In Godot, you can simply insert a scene into another scene and it serves the same purpose. The workflow ends up being about the same, but it's just one of those simplifications that just make you think "oh yeah, that makes sense".

Game files are just human-readable text.

Godot .project file

This makes it easy to track changes with version control.

I've heard that Unity has a way to change game files into yaml. But last time I looked at version control for Unity, most people recommended a paid service because just using Git did not work well.

What I didn't like

One script per game object

In Unity, you can have multiple scripts on one game object.

This makes it possible to easily create small scripts that can be composed of different objects. For example an enemy could have an HP script, a movement script and a loot-drop script.

To make a destructible chest, you could just add the HP and loot-drop script and you're done.

In Godot, you can only have one script per object. The script is then a sub-class of the type of the object.

This means that if you want reusable functionality, you have to add a new object. Which is more overhead and also means that you have to reference the parent object to make changes to it.

I guess the fact that each object is a single class should be useful somehow, but I did not find that I really used it for much.

No runtime editor

Unity allows you to see the game in the editor while the game in running.

This is an incredibly powerful tool for development and debugging.

Godot simply does not have this feature. I think this would be the deal-breaker for me if I was making a large game.

UI themeing is confusing

In Godot, you can change how the UI looks using themes.

You create a theme, add it to objects and then you can add game objects types to the theme and then you select the type of change and then you can choose defaults to override and then you often have to add a new kind of object that contains the configuration for that specific part like the hover of a button is a StyleBoxFlat that you then have to edit in a new page, oh and these styles can either be a file or just kind of embedded in the object itself and then you can override specific settings on the object and...

There is a chance that I just don't "get it". But I just feel like there must be some simpler way of doing this.

It's a shame, because the UI elements provided are great and it's easy to compose them.

If you could just style them more easily, it would be perfect.

Copyright © 2025.