DevLog #4: Choice of development tools
DevLog #4: Choice of development tools

To develop a video game, we have to decide what development tools we are going to use, both to program it and to generate all kinds of resources necessary to compose the final result.

That is why once we have studied what kind of resources we will need, we have to look for the most suitable tools to generate them. This implies looking for tools that have the necessary characteristics and meet other issues such as ease of use, a manageable learning curve, affordable cost, the amount of available documentation, and if there is a community of users to turn to for possible doubts. The previous experience of the people who will use the tools will also influence this, since it is always easier to use tools that are already known rather than a new tool that needs to be learned from scratch.

As an enthusiast of free software, I always advocate for using open source software tools for any task, although I am aware that it may not always be possible.

The advantages of using open source software in general are obvious but let's enumerate some of them:

  • Freedom: Generally, open source software allows its user to access its source code and use, modify, and distribute it freely. For example, we could add a functionality that the software does not have, and we could distribute that modification if we think it may be useful to other users.
  • Community: Open source software is usually developed in communities of many users around the world who coordinate with each other to implement the software’s functionalities, maintain it, and direct the development jointly. This means that it is very likely that there are many people who can help in case of problems with the software, and we could even contribute to fixing those problems ourselves.
  • Cost savings on licenses: By being able to access the source code, open source software does not usually include licensing costs, as is the case with proprietary software. Although it is not the most important feature for me, it is something to consider, especially if you are part of a newly created studio like us with very limited resources.

That being said, let's get down to business.

One of the first decisions we have to make is whether we are going to use a generic game development engine, a specific engine for visual novels, or if we are going to program everything from scratch.

Specific engines

Initially, we considered using specific engines for the development of visual novels. The most well-known is RenPy: a visual novel engine programmed in Python that uses its own scene description language to program the stories. I used it for some time to do some tests, and it is a very specialized tool that already gives you everything you expect from a visual novel game. You just have to add the graphics, write the story, and you already have a very basic visual novel.

If we want to customize any aspect such as graphic effects, animations, and other things, we can use Python to program small modules or modify RenPy itself to do what we need.

Despite all this, it seemed to us to be a very simple tool, as we wanted to have more control over aspects of the game representation on the screen. RenPy allows customization, but the cost of learning to do it by learning its intricacies is somewhat high.

Generic engines

Although technically it would be possible for us to program our own custom engine, there are very professional options on the market that would greatly facilitate development, avoiding us having to program everything from scratch. The most well-known are Unity and Unreal Engine, but both are proprietary solutions, which, although they do not have high licensing costs (at least initially), have limitations due to their licensing model and because you cannot access their code to modify it or improve it if necessary.

A few years ago, at the FOSDEM conference in 2016, I discovered a gem called Godot Engine. A completely free game development engine, multiplatform, and at that time in its 2.x version was very powerful. Currently, in its 4.x version, this engine is among the most valued by indie game developers, and the number of users in its community grows every day.

Considering that it is a free engine, without license costs, multiplatform, and that I have been using it since I discovered it for small projects and tests (I have already passed the most difficult part of the learning curve), the decision is very simple: Godot is the logical choice to develop our game.

Existing solutions in Godot

Godot is a general engine. That is, it gives us a set of tools to manipulate 2D and 3D graphics, sound, elements on screen, physics, and many more things, but they are still basic tools.

To achieve complex behaviors, we have to program those behaviors, and for that, each tool has its programming system so that we define complex behaviors and functions that will shape our game.

Luckily, sometimes there are pre-designed solutions by other people that can make our lives easier. In Godot, there are what we call "addons" or "plugins". These are modules that can be loaded into the program to expand its functionality.

In the case of Godot, there are two interesting addons for the development of visual novel games. One of them, called "Escoria," is oriented more towards point-and-click adventures (graphic adventures), but could easily be used for visual novels. On the other hand, there is a specific addon for developing visual novels called Dialogic, which gives us many of the tools to manage characters and dialogues.

Both tools are programmed on Godot, and can be highly customized. However, after testing them, reading their documentation, and evaluating them, we found that they were too complex for what we needed.

Furthermore, the way they are developed makes adding custom features and maintaining them over time as the tools were updated and our project progressed would be a time-consuming process. So at this point, we decided that it was worth working a little more at the beginning to create our own visual novel engine based on Godot that had the specific features we needed without adding unnecessary complexity and that would allow us to have full control over our game.

Another advantage of creating our own engine is that during its development, we will identify needs that we can meet ourselves and will also be opportunities to innovate by creating our own custom features.

Next steps

Now that we have selected the tools, it's time to get to work and design our visual novel engine. But that is a story we will tell in the following DevLogs.'

Revil
Revil

Player of gamebooks, role-playing and board games since the age of 10. Videogames and Open source developer since the age of 16. Eternal learner of almost everything that is put in front of him.

Published on Feb. 27, 2024

Share this post

Other interesting posts

Do not miss anything

If you want more information and to stay informed about our progress, we recommend that you subscribe to our newsletter, visit our website, join our discord and follow us on our social media channels.

We use our own and third-party cookies to enable browsing, save preferences, analyze and measure your use of our website to improve it.

To manage cookies, click the "Configure" button. To consent to their use, click the "Accept all" button. More information on our Cookie Policy.