Iconoclast is a game engine currently being written in C++.
Build support is available for Microsoft Visual Studio 2026. There is also build support for text editors using tools\build.bat to bind to a build command.
Iconoclast is currently only supported on Windows.
Opening the Project Solution (*.slnx) file in Visual Studio will automatically configure the IDE. For use with text editors, follow the instructions below to be able to make use of the build.bat build script.
- Microsoft Visual Studio 2026
- Workloads
- Desktop Development for C++
- Game Development with C++
- Workloads
The project requires the following dependencies for text editors.
- Microsoft Visual Studio BuildTools 2026
- Workloads
- Desktop Development for C++
- Game Development with C++
- Individual components
- MSBuild support for LLVM (clang-cl) toolset
- C++ Clang Compiler for Windows (20.1.8)
- Workloads
Clang acts as the Language Server Protocal (LSP), and MSBuild is required to compile the project source files.
- Add
devenvto the PATH to debug via the command-line interface.C:\Program Files\Microsoft Visual Studio\18\Community\Common7\IDE
- Add
clang++to the PATHC:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\Llvm\x64\bin
Run the command below to open the executable in Visual Studio 2026.
devenv bin\windows\Debug_x86_64\sandbox.exePress F11 to Step Into the program entry point, which shows the code being executed for debugging purposes.
The following serves as a rough outline of the key milestones to indicate the trajectory of the project.
Legend:
✅ public | 🔒 private | 🔄 in progress | ⏳ planned
Current features:
- 🔒 Software renderer
- 🔒 Keyboard and mouse input
- 🔒 XInput gamepad controls
- ✅ Event system
- ✅ Multi-Graphics API abstraction layer
- 🔒 Hot reloading
- 🔒 Memory allocator
Future plans:
- 🔄 DirectX 11 renderer
- 🔄 OpenGL renderer
- ⏳ XAudio2 audio layer
- ⏳ SIMD Mathematics library
- ⏳ Memory management system
- ⏳ Performance profiling
This project changed from C to C++ at SHA 62338d2, and a fork was created at SHA 41f06e7 to continue development in C. There are currently no plans to port locked features from the forked C project to C++ except for input controls.
The forked C project uses DirectSound in place of XAudio2, as XAudio2 has no C implementation.
Resources that have helped me, and have continued to help me work on this project.