Developing a game while learning the Godot game engine
The Godot Game Engine is a powerful tool in the game developer’s toolbox. If you haven’t given it a try yet, I will totally recommend you do it. Here’s my thoughts while making my first game on it.
Developing a game while learning a new development framework can be challenging. After releasing my first indie game on Steam, I decided my next game would be coded in the Godot game engine. I made that decision because of the limitations of the engine I was working for the first game.
I’m learning everyday as I go, but at this point, I can already answer a few questions as to why Godot is the right choice for you if you’re wondering.
Why should you choose the Godot Engine for developing your game?
- It’s for hardcore programmers like myself. Sometimes you just have to dive into the code to get things done. In that sense, Godot will provide more flexibility than Unity, for instance.
- It works fine for making 3D and 2D games. The sky is the limit!
- It’s free and it comes with no strings attached no matter the size of your team or how much you’re making per year as an established game development studio. There’s no fee for to pay in the future if your game is successful.
- It comes with a cool node system, as opposed to the GameObjects used in Unity and the Actors used in Unreal Engine. It might take some time to master it, but you do it, you won’t regret it.
- It comes with its own language, GDScript, which is very easy to learn in comparison to other popular programing languages.
- It supports C++, GDScript and C#. That being said, you don’t need to necessarily learn GDScript if you are already comfortable with C++ or C#.
- It’s cross-platform, so you won’t have to worry about changing your favorite OS to start making games.
- It’s open source, which gives you full control of your creations.
- It’s a great alternative to mainstream engines such as Unity and the Unreal Engine.
Starting those six months, I knew nothing of Godot. This meant that I was going to have to learn how to code in GDScript (my language of choice), and how to work with the objects in the framework none of which I was at all familiar with.
This also meant sometimes doing the same job three times because I would discover a new, better way to implement the desired functionality. For example, during the development of the light sources in the game, at first I used many Light2D nodes.
However, as it turns out using many of these nodes severely impacts the game FPS performance. Seasoned veterans in Godot would already have known this, but since this was my first game in this framework it was all new to me. In the end I decided to change the lighting in my game, but not after several attempts to get it right.
Godot is a fantastic game development framework, however learning it can take some time because of the sheer amount of options available. Also, sometimes it is just a matter of knowing which button to press in the IDE. Another example of this is that while I was working on the tilemap of the game, at first I thought it would be perfect to arrange the landscape in a certain way using two tilemap nodes, but eventually, I had to do a complete overhaul of this approach to make it work with the different seasons in the game.
Each season, the tileset would change so that I could, for example, have all the grass turn into snow tiles. Again, more Godot experience would have made me more alert to the possible approaches to tackling the problem. In conclusion I can say that it is not a huge problem having to learn a new framework while developing a game.
However it does result in extra refactoring of previous work, if you want your game to be optimized. Most of Godot’s features are easily available, but some of them are hidden three submenus down and you really have to know where to look. I think this is only a natural consequence of the framework itself which has so much depth. I can imagine it is a challenge to fit all these features into one logical user interface that makes sense.
I think the best way to start coding a game is by already having some experience with the framework you are working with but it is definitely possible to make a good game, polish it, optimize it and then release it while still learning the framework of your choice.