Introduction
During the hiatus, a lot has happened. The latest mention was about the Early Access release on Steam, and now the game is available in Early Access for you to try out. Throughout development, factors ranging from pure enthusiasm during the project’s creation to various other influences played a role. Essentially, you’re doing something you haven’t done before - exploring new territory, perhaps finding people interested in it, and so on.
Soon, several different articles on various topics related to the game will be released here. This article will discuss the game engine and how everything was implemented, which may help other developers.
Engine
There are different types of engines tailored for various graphics styles, genres, optimization levels, and toolkits. Kingso was born as a project while testing graphics using C++ and the SFML library, which is when the idea to create something in the medieval and folk genre emerged. At that time, the engine was expanding and a lot of new things were being learned. Soon, the amount of code grew so much that it had to be divided into modules, allowing the engine to be recompiled in parts, which was still acceptable. However, by the time of the last post here, it was clear that the engine couldn’t handle the load. The problem was that the code grew even larger, it became cumbersome, took too long to compile, didn’t support user modifications, and any error could effectively shut it down. Additionally, significant overhead was observed during rendering with SFML; at that time-and even now-I haven’t seen a game with such a massive number of tiles on the screen layered on top of each other.
That’s when the idea came up to create not a monolithic engine, but one with a GUI, script language support, animation management, custom GUI support for the game, and many other features. The main focus was on 2D and support for any genre. Thus, Lacuna Engine was born. Unlike the engine that was integrated with the game and completely dependent on it, this one offered complete freedom and resolved many issues. The engine supported GLFW and provided optimal tile rendering, resulting in many times more FPS per frame. It also supported Lua, library integration, mods, as well as several editors and a scene system. Today, this engine can be found in an archived state and is publicly available on GitHub, just like the Kingso engine. Within the Lacuna Engine sources, you can also find a version of Kingso where the map and navigation were ported.
Why is it archived now? The reason is that Godot Engine was discovered around that time-it offered the same capabilities but with a much larger development community, and continuing with Lacuna Engine would have led to similar outcomes. Therefore, the decision was made in favor of Godot, which had a far greater ecosystem and was already proven to work. Moreover, C/C++ code is not as safe and tends to be overly verbose. Today, you can use Rust in conjunction with Godot Engine, which is highly effective.
Thus, we arrive at the current state: Kingso is being developed using Godot Engine and optimized with Rust, while also utilizing several different systems to manage the game process. There is no regret over the time spent; on the contrary, it was an excellent experience in engine development. Now is the time to finish many aspects and soon release a major update for Kingso, gradually moving towards the full release and exit from Early Access.


Additionally, it is worth noting that using your own game engine makes sense if you know what you are doing and how to do it. You must also provide solid support for yourself and your team to ensure that it is convenient to use. This allows for the creation of more optimized tools tailored to your needs.
The reason for using Rust in combination with Godot Engine is to prevent memory leaks, optimize performance in critical areas, and maintain strict control over the code execution process. This approach can make the code run at least four times faster (a rough estimate), and likely even more. Furthermore, if the entire engine were built for a specific task, the results could be even better.
That is why understanding the objective is crucial, and for Kingso, this approach is more than acceptable.
Thank you for reading this article!
0 comments