Skip to main content

Godot: Impressions after a year

·2 mins

I’ve been working with Godot now for over a year building our game Bossy Blocks and it’s interesting to go back and think through the experience so far. This is a 2D game targeting mobile that does not have any intense performance requirements.

For context, I’m a backend software developer with over 20 years experience. My experience has been mostly working in C++, Go and Python. I have very little experience with frontend development, especially with modern frameworks.

When I started looking at game frameworks the most important criteria for me was that it could build for all mobile platforms. I also tried to consider how easy it seemed like the frameworks made “game building”, but this is subjective and can be a double-edged sword, so I didn’t put too much effort here.

Overall, I’m very happy with Godot. It feels like I have been able to put most of my effort into the game logic and mechanics rather than into the lower level infrastructure. A few of the more obvious things that I get “for free” from the framework:

  • Physics and collision engine
  • UI component layout and rendering
  • Resource loading and caching
  • Screen scaling
  • Eventing/signaling system
  • Etc

I’m mixed on the IDE. It’s definitely good, I just have some expectations for any IDE I’ll use that it can’t meet, the only dealbreaker being key bindings. I always code with Emacs key bindings in any IDE and that’s not possible here. So, I tend to write code in VSCode, with a Godot plugin, and also have the Godot editor open for modifying Scenes.

GDScript has been nice to work with, given its closeness to Python. Very easy to get used to. The first iteration of the game was written fully in GDScript, but I later ported most of the core game logic into a GDExtension in C++ and now just have mostly UI-related code left in GDScript. GDScript had been perfectly good to use for this game, there were no performance considerations or any other limitations. The reason came down to both that I enjoy working in C++ as well as that being one way to make a Godot game more difficult to steal. I’ll talk more about this in a future post, but it’s a difficult problem area. Many people worry about their game package being relatively easy to open and duplicate. I agree with many peoples opinions that this problem tends to get overblown, but it was also a fun technical exercise.