Loki Engine
Introduction
Loki Engine is a 3D game engine focusing on voxel rendering techniques similar to those seen in the popular video game Minecraft and Teardown. The game engine was named of the Norse god Loki.
Rationale
The primary goal for staring this project was to design and develop a feature complete game engine with an editor and sample game. Since during my studies I had only made simple 2D game engines, the idea of creating a feature complete 3D game engine is an ideal challenge. A secondary goal was to learn how games like Minecraft and Teardown handle voxel rendering techniques, e.g. games like Minecraft use voxels to store terrain data and use polygon rendering to render cubes. Another goal for this project was to learn Vulkan, since I had only ever used OpenGL for rendering in previous projects. Therefore learning how to use the Vulkan graphics API to create a voxel renderer for this project was going to be challenge.
Loki Engine Design
Loki Engine is written in the C++, using the C++17 standard making heavy use of the standard library while avoiding some of the more common C style coding techniques commonly seen in other game engines, i.e. the Loki Engine will try to avoid “reinventing the wheel“.
The architecture of the Loki Engine is based on the sample game engine architecture provided in the book “Game Engine Architecture – Third Edition by Jason Gregory“. This book is a must read for any game engine developer.
The Loki Engine will support the following game engine features provided these third party libraries:
- Audio (FMOD)
- ECS (EnTT)
- Physics (PhysX)
- 3D Voxel Rendering (Vulkan)
- Networking (Game Networking Sockets)
- C# Scripting (Mono)
- Sandbox Editor (ImGui)
Loki currently does not render voxels and only renders a simple triangle for now.