Loading
Personal Project
Modern Engine: Enigma

Enigma Engine is a C++ game engine designed from the ground up for voxel game development. It features a modular architecture with runtime DLL loading/unloading, a plugin system, and multi-configuration builds. The engine ships with a complete project scaffolding toolchain — from project creation to shipping — all driven by the BuildTool CLI.

Features

  • Modular architecture: engine, game logic, and plugins run as independent DLL modules with dynamic loading and dependency management
  • Plugin system: plugins defined via .eplugin descriptors with loading phase control, auto-discovery, and dependency checking
  • Project scaffolding: one-command creation of projects, modules, and plugins with auto-generated template code and configuration
  • Multi-configuration builds: Debug / DebugGame / Development / Shipping / Test
  • Visual Studio integration: auto-generated .sln and .vcxproj project files
  • Unreal-style API: familiar naming conventions and architectural patterns (ModuleRules, TargetRules, GameInstance)
  • Core math library: FVector, FMatrix, FQuat, FRotator, FTransform and more, right-hand Y-up coordinate system, constexpr-friendly

Planned Features

  • Game Editor with hot-reload support for game module and plugin DLLs
  • ASCII-based 720p renderer
  • Integration of create-module, create-plugin and other build actions into the Game Editor

Building

Prerequisites

  • C++26 compiler (MSVC 17 2022 or later)
  • CMake 3.20+
  • .NET 9.0 SDK (for BuildTool)

BuildTool

BuildTool is a C# .NET 9 CLI that handles project scanning, dependency resolution, CMake generation, compilation, and packaging.

# Build project (defaults to Development configuration)
BuildTool build <project-path>

# Specify build configuration
BuildTool build <project-path> -c DebugGame
BuildTool build <project-path> -c Shipping

# Clean / Rebuild
BuildTool clean <project-path>
BuildTool rebuild <project-path>

# Generate Visual Studio solution
BuildTool generate-project-files <project-path>

# Package for distribution (forces Shipping configuration)
BuildTool package <project-path> -o <output-path>

Project Scaffolding

# Create a new game project
BuildTool create-project --name MyGame --location ./Games

# Create a game module
BuildTool create-module <project-path> --name GameUtils

# Create a plugin
BuildTool create-plugin <project-path> --name MyFeature --category Gameplay

# Remove a module (with dependency checking)
BuildTool remove-module <project-path> --name GameUtils

# Remove a plugin
BuildTool remove-plugin <project-path> --name MyFeature

Build Configurations

ConfigurationDescriptionLink ModeOptimization
DebugFull debug, no optimizationModular (DLL)/Od
DebugGameEngine optimized, game debuggableModular (DLL)/O1
DevelopmentDevelopment build, moderate optimizationModular (DLL)/O1
ShippingRelease build, full optimizationMonolithic (static)/O2
TestAutomated test buildModular (DLL)/O2

Modules

NameDescriptionStatus
Enigma::CoreFoundation module providing the module system, logging, assertions, HAL platform abstraction, and core math types (FVector, FMatrix, FQuat, FRotator, FTransform)stable
Enigma::EngineEngine core providing FEngineLoop, FGameEngine, FGameInstance, and module loading phase managementstable
Enigma::LaunchEntry point module providing GuardedMain and platform-specific launch logic (main / WinMain)stable

Third Party

NameDescriptionLink
nlohmann::jsonJSON for Modern C++Github
Google TestC++ unit testing framework (git submodule)Github

Project Structure

EnigmaEngine/
  Engine/
    Source/Runtime/         Runtime modules (Core, Engine, Launch)
    Source/ThirdParty/      Third-party libraries (nlohmann_json, googletest)
    Templates/              Project / Module / Plugin code templates
  BuildTool/                C# .NET build tool
  Games/
    EnigmaArcade/           Example game project
      Source/               Game module sources
      Plugins/              Game plugins
  Tests/
    CoreMathTests/          Core math unit tests (GoogleTest)

 

Find out more about EnigmaEngine on the SMU Pages

Looking for the custom support? Find it here