previous arrow
next arrow

This is one of my personal 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 work with. Is very clean in terms of attaching and creating the scripts and accessing entity components from within the scripts. I really like how easy is to extend the Entity functionality by adding different component to it.

I always wanted to know how things works and if I can create something similar. In order 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 layout with many different classes inherit from a parent class. This solution was fine until I tired to create many different Entities like (Player, Enemy, Obstacle) I have realized that in order to extend 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 in to 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 this functions had them available. The other solution was to add it to the specific child class, this was fine until I wanted 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 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 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. Is very simple.

Although the development of this engine is still in progress, I think I have reach 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…


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.  …