A weekend with Godot

A weekend with Godot

This weekend I was totally sidetracked by the Godot game engine. After writing about my game development endeavours in a previous post, I was inspired to give another go to this old itch of mine. But where to start from? I heard great things about Godot in the past, so I decided to give it a chance.

Godot is different than other popular engines because it is geared towards indies, it's open-source, and it's free (like really free, no royalties are demanded at all for using it). There is also an affectionate community around this editor, and honestly the enthusiasm is contagious.

I started by developing a classic v-scroll shooter set in space, a simple blueprint that allows me to experiment with various features of the engine. I am also packaging it to be executed from a browser, so my readers will have a chance to shoot some lasers as well :)

While working in Godot, I couldn't help but comparing it to other engines I used in the past. I'll list some of my observations.

What I liked 💚

  • the Editor was extremely intuitive to me. After coming from other Engines like Unreal or Unity, that maybe have more complex features, Godot's UI felt like it had everything in the right place, reducing my confusion to a minimum;
  • I also appreciated the use of scenes, that in Godot cover what other engines classifies as "scenes" and "prefabs". To me, it makes more sense like this: coming from the Object Oriented world, I can look at my game as a hierarchy of different classes (aka scenes) and feel like I have more creative control over it;
  • Open-source: at a certain point, I was dissatisfied with one of Godot's features. I was tempted to jump in the repo and start contributing. The nice thing is that's definitely doable, and I potentially have the chance to improve my own tool and have a saying over it.

What I disliked 😞

  • Built-in code editor: there is no syntax highlighting and no autoformatting. I solved this partially by switching to VS Code, but the available Godot plugins won't do the trick either. I programmed my game only by using C# APIs, so it's possible that GDScript behaves better;
  • Code generation: some autogenerated functions are created outside classes. Then, the code won't compile, and it's necessary to manually move the code in the appropriate section. No biggie, but it's not ideal;
  • Some plumbing configs: it's possible to connect a Godot signal to a newly generated function, but not to an existing one. Renaming receiver functions is a pain as well.

Overall, using Godot is pretty enjoyable, so I am looking forward to work with it a little more and post other updates about my game!