Devlog 1: Basics


Hi, today I want to start a series of devlogs and this is my first attempt at this format of posts. So I hope you like it.

As the name suggests, today I will write about the basics of any game development, namely the game engine. I use the Godot game engine (the latest stable versions) and you may have a question, why Godot?

Well, besides the basic reasons that this engine is free and open source, its advantages are its lightness (game file size) and multiplatform. Unlike the same Unity or GameMaker, it is much easier to master and create 2D games. But that's where its advantages end.

Although Godot has everything for development, it has nothing at the same time. There is good documentation for the engine, but when you try to use something without development knowledge, it usually leads to errors. Of course there are tutorials on YouTube but...

I have been in the so-called "tutorial hell" for a long time, which is very painful for any developer who is learning to develop games on their own. And Godot unfortunately has a VERY low number of quality tutorials. I'm not exaggerating, you can find a large number of tutorials on how to make a game, but the quality of the code and the structure of how the scene is built is very poor for completing projects. Of course, through tutorials you can build a simple game, like I did, but if you want to expand the game, make DLC, or add more content ... you will regret doing everything according to the tutorials.

Godot is built in a modular way. And understanding this opens your eyes to how to build a game in this engine.

Here is an example of how the NPC scene was built in Life with the Tribe in the release version:

And here is also the updated look of the character scene :


Before the update, everything looks more compact, but in the updated version it is more expanded. Why did I do it? To add modularity. The fact is that for customization in the old version I used a resource with textures that looked like this:


And this resource with textures was hardcoded, since each customization option was tied to an enum and an Array with boolean values, it looked like this:


It looks scary, right? But that's not all, the problem is that if I don't add the exact number of textures to the array (for example, I had two variations of tails), it will cause a texture search error and everything will break. And what if I want to add another customization? Then I need to do the following steps: update the enum, check if the boolean is added to the default and current array, break the save file (since I didn't do an empty check, and the save file will have a missing value in the used textures array), add a new texture to EVERY resource, and don't forget to check it.

A bit tedious. But all this could have been done much easier as I did for the updated version.
What exactly was done? I added a separate module purely for customizations. It can be used in any game, and controls itself. Want to add a new customization? Just add another node and name it. Want to add a special customization option for only ONE character (this is not possible in the old version)? Just add another node and give it a unique name.

Controlling texture changes is also done in a new and easier way. Instead of loading a texture every time an NPC appears in a scene (this involves checking, loading and changing textures right at the beginning of the scene), now I just load the NPC and change only the visibility value of a particular customization:

Everything is much easier, there is no lot of enum and hardcode. Everything is clean and clear, and everything is also clearly visible in the editor (since before i had to run the game to check if the customization was displayed correctly).

This is the principle of modularity, when some part of your game is separated from everything else. Godot is the engine that promotes this approach to development, and many people in YouTube tutorials forget/don't know about it. I don't want to say that I'm much better than them, no, I still learned a lot from tutorials, but most of such tutorials only give a base and understanding of how the engine works, and none of the tutorials will teach you the full-fledged development.

Thanks to Godot, I was able to master this concept of modularity a little, and I still have a lot to learn to use it as correctly as possible in my projects. And I think, seeing the development of the engine, that I am unlikely to change it in the near future.

I hope this devlog will clarify the backend of my game development a little, although what I described is only a small part of how the development actually happens.

You can ask your questions in the comments, and I also made a small poll about the topic of the next devlog, please vote!


Thank you for your support!