Motivation
One of the reasons I wanted to create my own engine was that although my passion lays with gameplay programming, I felt the need to understand the basics of other areas of programming as well.
By learning some of the basics of Rendering and Engine programming, it would make it easier for me to help out with the others if they need extra help and makes it easier for me to understand what is going on in other parts of the team / product when I need to bugfix.
Rendering
For the rendering of the engine, I used Vulkan.
The renderer is capable of rendering both in 2 and 3d. (I mainly worked in 2d, hence the 3d version uses random models)
For the UI I use ImGui which makes it so that I can render inside a separate viewport while working on the game.
The Engine also uses a debug camera which you can fly around with and also has debug drawing for the collisions
The Engine
The Engine makes use of an Entity component system with the help of ENTT
Bullet is used to handle collisions and things like movement physics.
The engine uses the Level Design Tool kit to create levels. It supports hot reloading of levels so that you can change certain aspects on the fly.
Statemachine
The engine has a modular state machine, in which you can easily add new states and change out how they interact with each other.
I ended up reusing this state machine for a different Engine project, in which I used this state machine to create multiple enemy types by removing / adding certain states to the state machine.

Steering Behaviors
There was not really much of a game built on top of the Engine, as it is made as a project to toy around with different algorithms and systems.
The thing that I have already worked on was Steering Behaviours (The video shows an early prototype). These behaviours allow AI to group up and move together without continuously bumping into each other.
Alignment
The bottom AI is moving in a direction while the other two are trying to follow that AI
Cohesion
The AI will try and group up while the top one is also trying to move in it's own direction
Separation
The AI will try to move away from each other, with the bottom one also trying to move into its own direction at the same time