Mateusz Salaga

Abaddon

3D Game Engine

What's Abaddon?

Abaddon is my personal 3D Game Engine created using C++ and DirectX11. The engine uses multiple other libraries aswell to support features such as an entity component system, graphical user interface, 3D model loader and texture loader.

3D Models

Abaddon supports loading in 3D models using the widely popular Open Asset Import Library (assimp). The Assimp library supports many formats, which is one of the reasons I chose to use it, but also because it is easy to integrate and has alot of documentation.

Textures

The Abaddon engine supports textured models and texture loading using the DirectXTex texture processing library. Any model can use and switch to any texture, and textures can be loaded from any image of the following format: (BMP, JPEG, PNG, TIFF, and HD Photo).

3D Camera

Abaddon not only supports 3D space, but also has a fully working 3D camera object that can be moved and rotated in real time. I was able to achieve this with a group of mathematical equations and the DirectXMath library which greatly supported and simplified the process.

Entity Component System

Abaddon uses EnTT, which is an entity conponent system library for game programming. EnTT makes it possible to quickly arrange and sort through entities with specific components, creating a flexible and easy way to manage entities and the systems that are affecting them. For example, it is possible to add a Model Component to an entity, instantly giving it a working model and texture. Another example would be attaching a custom script component, making the entity run the code inside the script on initialization.

Graphical User Interface

For graphical user interface, Abaddon uses the widely popular ImGui library. ImGui has many useful features for game and engine development, such as window docking and optimized vertex buffers for rendering. Apart from that, the library is fast, easy to use and comes with alot of documentation and tutorials, which is why I chose to work with it.