From Unity to Godot - Post-mortem from a brand new Godoneers
Hi Everyone, I'm Furano.
I make game jam with my friend @Aune once or twice a year since 2017.
This year, we decided to take the leap and switch to Godot for our game Calves of the braves. I never opened it before and discovered the whole engine less than one week before this jam. :
I'll try to describes my experience below for anybody who is willing to take the leap but afraid of the learning curve required to handle a new engine.
π₯ From scene to node
The switch from Unity prefab and GameObject to Godot Node was surprisingly painless. It felt really natural and similar to what I was used to.
I tried to keep the Component pattern (which unity is strongly pushing toward) that I'm used to. Once I understood that a Gameobject sub-component is simply child node in Godot, everything clicked together and I was quickly able to make different components interacting together. For example, you can see the component architecture of our game fighter below

Switching from Prefab to Scene wasn't the same walk in the park however. I never really managed to grasp when exactly scene are loaded. You can preload scenes to make sure that a given scene is ready to be instantiated whenever you need it. However this preloading require fixed scene name hard written in code, as shown below, which is a big nono for me. β

When scene are provided to a node trough Arrays or Dicts they are supposed to be loaded at the scene time than the node, which isn't always the case for an unknown reason.
This caused some buttons to be unresponsive in out game due to loading big chunks of Sfx and character sprites at an inappropriate moment.
π¨βπ» GDScript, the perfect language for jam?
In Godot 4.1, only GDScript is supported for WebGL export. That was a BIG factor for us. Being used to mostly C#, I thus had to learn this new language as well.
It was... A blast! π₯
This language is really easy to learn, if you know a little bit of Python or other more complicated programming languages.
I also felt like this was a perfect language for game jam, because :
- it's really consistent, easy to use and write.
- it's strict enough to allow building strong foundation the first days of the jam
- it's flexible enough to allow quick and dirty fixes, hacks and modifications the last day of the jam
I conclusion, using GDscript for this jam was a real pleasure. However, I can see its shortcomings for bigger projects.
I would especially love the possibility to strongly type more objects like dictionary for example.
π Editor handling & usage
For the most part, I was really satisfied with how the editor itself is handled. The fact that it is lightweight is a blessing, especially compared to Unity big loading time at project opening.

The despised time-consuming signal connection windows
However, I felt that some feature required way too many clicks than they should have.
For example, filling dictionary with string as keys and scenes are values was a real pain and required at least 8 clicks per object. That quickly became obnoxious during the course of the jam.
Connecting various signal using the editor is suffering from the same click-fest syndrome. π±
βΏ Animation
I felt like Godot Animator was really terrible. Making simple animation, for example for our UI springing up, was a pain. The BΓ©zier editor especially felt horrible to use and I never achieved the wanted effect in a respectable time windows.
This was a big letdown coming from Unity. Hopefully tweens were available to do basic animation directly in code and avoid using that tool.
2D sprite animation was also lackluster, especially for handling bones and 2D deformation.
π€ Collaborating under Godot
For this jam, we were 3 people in the team. We choose to rely on Git for versioning and collaborative work.
Contrary to using it with Unity, it felt very natural in Godot. However, We did have a lot of merge to fix by hand. Most of them were trivial. We were really surprised that thoses were not handled well by Git. Hopefully, Since all Godot file are text they were really easy to resolve. π―
Using Git with Godot was efficient and allows us to have a royalty-free and hassle-free collaboration tool easily.
π Conclusion
In conclusion, the switch from Unity to Godot felt really natural and easy to handle. Even with this last minute Engine switch, I was still able to make one of the most bug-free game I ever made in a jam, which is an accomplishment !
I really felt that Godot was perfectly suited for quick prototyping and game making, which is a perfect characteristic for Game jams !
I wonder however if it is able to handle much bigger project without becoming a big spaghetti mess.... π
I guess there is only one way for me to find it out ! π
---
If you are interested in having a look, the whole source code and assets of our game are available here under GPL 3.0 license.
The game itself can be found here.
Source: ldjam.com archive
Next postGetting the Brushes Out For a First Jam - A Post-Mortem about Art and Calves