Why?

After several years working with Unity, both for personal and contract projects, I decided to finally properly test and use Godot.

I had been keeping an eye on it for a few years, but Unity’s controversial policy changes in late 2023 were the final push I needed to start experimenting seriously with an alternative engine, even if I could use my custom engine.

I guess the sort of exploding new wave of devs switching to Godot made me even more tempted, adoption is rapidly expanding.

Godot game jam usage 2023 Godot game jam usage 2024
Godot game jam usage – 2023 Godot game jam usage – 2024

While I’m still using Unity for some projects, Godot has become my engine of choice for prototyping, personal games, and game jam-sized projects.

I’m not an expert but I’ve been using it for some time so I’ll share my first impressions, the things I loved, the things that could be better, and how the overall experience compares to Unity.

Godot Editor Overview
Godot editor with a 3D demo prototype project loaded.


The Good Parts

Node System
Godot’s node system is incredibly flexible. Each scene is built by composing nodes, and nodes themselves can be entire scenes. Coming from Unity’s prefab and component system, I found Godot’s approach simpler, the “prefabs” system feels more robust in Godot, it always felt a bit more fragile in Unity, like things could fall apart quicky, especially nested prefabs.

Create a new Godot Node window

At first, having only one script per node felt restrictive, I remember this was my first “oh no, but why?” moment, but quickly I realized it makes sense and it actually enforces a cleaner project structure and easier readability.

Example of a Godot Node setup

Making shaders inside the editor itself by code is super easy to iterate and see the results, it highlights syntax errors and it’s well rounded and perfect for quick tweaking.

Doing a shader for a duck

UI Themes
Godot’s UI system is a pleasure to work with once you understand how themes work.
Instead of tweaking every button manually, you can design a style once and apply it across your project — similar to using CSS on a website.
Compared to Unity’s sometimes fragile UI system, Godot’s feels more modern and consistent.

Godot UI Theme Example
Styling the UI globally using Godot’s Theme system, almost kind of a “CSS” for games.

Editor Scripting and GDScript
Before starting I knew we could code in GDScript, C# and C++. Honestly I’m growing tired of C#, but going C++, which I already use for my custom engine, felt like I was leaving a learning opportunity on the table. So I decided to go full GDScript and learn it, also there are way more tutorials and examples online using GDScript.

It’s a Python like indentation system, so I’m used to it from my Python scripts, the language is quite easy to understand and has several nice functionalities. We still have classes, enums, inheritance, arrays etc, you’ll feel at home right away.

The signals are surprisingly boilerplate code free, so I’ve embraced them for several things.

The ability to script inside the editor with GDScript makes many workflows very fast. GDScript itself is fun, clean, and powerful enough for full games. It feels like a sandbox-friendly language without giving up robustness.

Mobile Export
I decided to export a mobile build of a prototype, exporting to iOS was surprisingly straightforward. It needs Xcode and setting up the usual certificates, because Godot produced a working Xcode project that we can then use to compile and deploy easily to the phone.
Aside from a small hiccup with orientation settings, everything just worked on first build. Didn’t yet tried Android but I’m assuming a similar process.

Debugging Tools
I’ve been using Rider for several years for C# and C++, so I decided to use it as well here, even if coding and debugging inside Godot is very solid.
But using Rider externally allows me some familiarity, but we can still use the built-in editor debugger, you can set breakpoints, watch variables, and step through code easily. It works as expected so far, no complaints there.

Debugging a Godot project

An awesome bonus: if you hit a C++ level error, Godot shows you the exact file and line number in the engine source — and you can jump straight to GitHub to inspect it.

CPP code jump from Godot Editor

Open Community
Whenever I found documentation gaps or bugs, reporting them was easy, and fixes often came quickly. The Godot community is active, helpful, and genuinely open to feedback. Many times the only way I could get something to work was by seeing someone with same issue because Docs were lacking something.

Debugging a Godot project


The Rougher Edges

Editor UX Inconsistencies
While the editor is powerful, UX polish is still lacking compared to Unity or Unreal. Some buttons don’t look clickable, tabbing between elements can behave inconsistently across tools, and finding certain actions (like creating new animations) isn’t always intuitive.

Godot Animation Editor Confusing Button Godot Animation Editor Confusing Button

*Some buttons in the editor can be hard to spot at first, like adding a new animation. “Animation” doesn’t look like a button at first glance *

Godot size before position in UI
Control Nodes show the Size before position, contrary to the other nodes, which doesn’t make much sense to me, I even opened a PR for this, it’s under consideration.

TileMap Workflow
Working with TileMaps can be a bit frustrating. I found myself often jumping between multiple tabs just to tweak small things. It feels fragmented compared to Unity’s more consolidated tile setup.

Atlas System
Managing sprite Atlases in Godot isn’t as flexible as Unity’s system. We can’t name regions (afaik), and the workflow feels a bit clunky compared to Unity’s Sprite Atlas features. All of this can be improved but at the moment it feels a bit more in the way, and I never felt this friction when using Unity.

Version Mismatches and Learning Curve
Because Godot 4 changed many APIs from version 3, a lot of web tutorials and resources are slightly outdated. The official documentation is good, but sometimes finding clear differences between versions required digging through forums or Reddit posts. The good news really is that if you take the time to make a PR on Github or ask for someone to fix odds are it will be done rather quickly.

GDScript Indentation
While GDScript is fun, I’m personally not a fan of Python-style tab-based indentation.
I would have preferred curly braces {} for clarity, but that’s more a personal preference than a true flaw.


Iteration

Godot is rapidly evolving, last month Godot 4.4 was released with tons of new features, from performance boost, a built-in game window for running the games inside the editor, typed dictionaries, physics improvements, and tons of more things.

This is great, but also means some things might evolve quickly or get deprecated as the engine improves. I think we’re on the stage that Unity was around version 4-5-2017 transitions. Not saying this as a bad thing, just that some new features might mean something else we were relying has to go. One thing I noticed is that they overhauled the tilemap system in favour of a layered one, so the older one is still around but not recommended; and it brought me memories of Unity getting rid of the old Particle System when they got a new one. Again, the right choices, but with some pains along the way.

You can read all the new features on Godot 4.4 here: https://godotengine.org/releases/4.4/

Final Thoughts

Despite the small rough edges, my overall experience with Godot so far has been very positive. It’s an incredibly powerful, lightweight engine that has a nice balance between features and flexibility, encourages a clean structure, and is backed by a great community.

If you’re coming from Unity and considering Godot, expect a bit of a learning curve — especially with editor quirks and differences in workflow. But once you get past the initial bumps, it’s really nice.

I would HIGHLY recommend learning GDScript instead of “oh but I know C# already”.

I’m excited to keep building with Godot, and I’m looking forward to seeing how the engine grows even stronger in the next few years.

Bonus tip I read somewhere, if something isn’t working, and you feel like it should, restart Godot or clean the autogenerated .godot folder, and odds are it will work properly now, especially GDScript stuff tends to be “confused” if you use external tools.

P.S.: If you also recently switched to Godot, I’d love to hear your experience too. Feel free to comment or message me.


See you in the next post!