previous arrow
next arrow
Slider

This is one of my project, which I work on in my free time. Cyber is a Data-Driven Entity-Component Game Engine.

For a long time, I have used different game engines like “Unity 3D, Unreal Engine 4” and have created multiple games using those engines. I really like Unity 3D, which is very nice, designed and easy to use. Is very clean in terms of attaching and creating scripts and accessing entity components from within the scripts. I like how easy it is to extend the Entity functionality by adding a different component to it.

I always wanted to know how things work, and if I can create something similar. To find it out, I started doing my research and created Cyber engine.

I had many different ideas about the layout and basic structure of the engine. Right at the beginning, my engine had a traditional object-oriented design with many different classes inherit from a parent class. This solution was fine until I tried to create many different Entities like (Player, Enemy, Obstacle) I have realized that in order to extend the functionality of a particular class which inherit from a parent class in my case from (IEntity) I have to add new functionality in the specific class or into the parent class. Implementing it in the parent class allows me to use new functionality in all of the child classes, but the classes which should never use these functions had them available. The other solution was to add it to the specific child class, and this was fine until I wanted to implement the same functionality in the next child class. I ended up copying the same code over and over again, and even small change to it required me to go through all of the child classes to make the changes. This was a very error-prone solution.

After researching different engine design approaches, I found some information about Entity-Component design. The idea of this design was exactly what I wanted to do. I started searching for information and figure out how I can apply them to my engine. Now I think this was a good decision as after coming back to my engine to add more functionality I have to, only create new component and attache it to the Entity I want. This is very simple.

Although the development of this engine is still in progress, I think I have reached the point when I can say I have the basics in place. ?

Below you can find my blog posts, where I will explain all of the design decisions and presenting the current stage of the engine.


Sprite Editor

  I have finally implemented sprite editor. The sprite sheet can be edit inside the engine and sliced down. Currently there is only manual slicing available, but I am planning…

Profiler

have been adding more and more functionality to my engine and started to see that is my is my engine slowing down. To render or animate scene with 100 sprites…

New Engine Editor GUI

Finally I have found suitable GUI library. I have decided to use Dear ImGui library you can find it here. I have integrated this library into my engine and I…

Added Engine Editor

I have decided to add Engine Editor. Something similar to the one you can find in Unity 3D. Currently my editor has three parts. 1. Tool Window – this window…

Engine Code Example

Below is the code example of how the new entity can be created. I have snipped Sprite Entity class from my engine. More code examples will be added soon.  …