Game
Kingso
17 days ago

Devlog #7: Game Engine


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.

utbjzo.jpg
hlmxrp.jpg

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

Loading...

Next up

Did you know that today is #InternationalJazzDay? 🎷😎

No? 😯 Well, we couldn't pass up this date!

And what better to celebrate this day than #Pecaminosa #OST? 🎷

Let us know what you think about it and have a great weekend!

Protege el conocimiento, salva la historia. Guardian of Lore es un platformer 2D en el que debes luchar para mantener viva la memoria de la mitología latinoamericana. El juego llegará a Steam el 18 de mayo: https://steam.pm/app/1211740 #ScreenshotSaturday

Heya! I wanted to show some gameplay progress i made so far. I hope you like it ^^

In the quest for accessibility, I'm adding Resurrection Shrines for players on the 'novice' end of the platforming spectrum.

In order to unlock the power of a Shrine, you must collect 3 'Souls' from your dead corpses! (the floating blue orbs)

One of the most critical update for Sunblaze demo. Now you are able to pet a cat! Finally!

Hi everyone! I started to create some environment props for my new video game, here is a cozy house in the forest. I'm planning to switch from Unity to Unreal... Let's see what new challenges I have to face. Made in Blender and Substance Painter.

Let me introduce you to the new Mech line: Gendai Spec. Those are Mech that specializes in surprise attacks, covered operations, and stealth. They are equipped with melee weapons but one of Gendai's frames supports sniper rifles.

I mostly build 3D First Person Shooter game mechanics in Unity, and in this I'm just showing C4 mechanics I made for a little side project I am working on! :)

Out of boredom and curiosity, I coded Sailor Jupiter's Argentine Backbreaker.

I made a small jungle house.