Wicked Engine is a cross-platform, open-source 3D graphics engine designed for developers who need modern rendering features like real-time ray tracing, physically based rendering (PBR), and global illumination. It serves as a C++ framework for custom graphics applications, a standalone 3D editor, and a Lua scripting environment—ideal for indie developers, students, and researchers building high-fidelity 3D experiences without proprietary dependencies.
Built with C++ and supporting Vulkan on Linux and DirectX 12 on Windows, Wicked Engine integrates Jolt Physics, GLTF/FBX/VRM model import, and a full Lua scripting API. It runs natively on Windows, Linux, macOS, Xbox Series X|S, and PlayStation 5 (with proprietary SDKs). The engine is modular, allowing developers to link against libWickedEngine.a for custom applications or use the built-in editor to load, edit, and export scenes in WISCENE format.
What You Get
- DirectX 12 & Vulkan Rendering - Dual-backend graphics pipeline with support for modern APIs: DirectX 12 on Windows, Vulkan on Linux, enabling high-performance real-time rendering with ray tracing and PBR.
- Lua Scripting API - Full access to engine systems via Lua, including scene manipulation, audio control, input handling, and render path configuration through functions like LoadModel(), GetScene(), and audio.Play().
- WISCENE Native Format - Efficient binary scene format for storing models, materials, and scene graphs; optimized for fast loading and compatibility across all Wicked Engine platforms.
- VRM/GLTF/FBX Model Import - Built-in support for importing humanoid VRM characters, GLTF/GLB, FBX, PLY, and OBJ models into the editor, with automatic conversion to WISCENE for runtime use.
- Real-time Ray Tracing & PBR - Physically based rendering with dynamic lighting, global illumination, and ray-traced shadows and reflections for photorealistic visuals without external tools.
- Cross-platform Editor - Standalone 3D editor with scene graph, material editor, and scripting console; runs on Windows, Linux, and macOS without internet or cloud dependencies.
Common Use Cases
- Developing indie 3D games with Lua - A solo developer uses Wicked Engine’s Lua scripting to prototype gameplay mechanics, load VRM characters, and control audio without writing C++ code.
- Building real-time visualization tools - An architect uses the PBR renderer and GLTF import to create interactive 3D building walkthroughs with dynamic lighting and physics-based materials.
- Researching real-time ray tracing techniques - A university lab leverages the open-source DirectX 12/Vulkan renderer to test new global illumination algorithms using the engine’s extensible render path system.
- Creating custom character applications with VRM - A developer imports VRM models from VRoid Studio into Wicked Engine’s editor to animate and script interactive humanoid avatars for virtual events.
Under The Hood
Architecture
- Entity-Component-System design enforces strict separation of data and behavior, with components as lightweight data structs registered explicitly within scene and entity systems
- Rendering is decoupled via a pipeline-based RenderPath3D system with configurable passes, isolating visual logic from scene management
- Editor UI components dynamically bind to runtime components, enabling plugin-like extensibility without tight coupling
- Modular subsystems (Animation, Physics, Rendering) interact through well-defined interfaces, minimizing cross-module dependencies
- Centralized resource manager handles asset loading and serialization, keeping file I/O concerns separate from game logic
Tech Stack
- Custom C++17 engine leveraging OpenGL and Vulkan for high-performance rendering, with GLFW for cross-platform windowing and input
- In-house asset pipeline with binary serialization and native loaders for textures and meshes, avoiding third-party dependencies
- CMake-based build system supports seamless cross-platform compilation across Windows, Linux, and macOS
- All data persistence is handled via binary file I/O and memory-mapped resources, with no external databases or web frameworks
- Comprehensive test suite using Catch2 with custom rendering validation tools, alongside Lua-based integration scripts
Code Quality
- Limited testing practices rely on Lua scripts with signal-based event tracking rather than structured unit tests or assertions
- Error handling is largely absent, with no exception handling or custom error types, increasing vulnerability to runtime failures
- Naming conventions are inconsistent across files and variables, with no standardized patterns enforced
- Type safety is weak, particularly in Lua scripts, which lack annotations or compile-time validation
- No static analysis or linting tools are present, leaving code quality to manual review
What Makes It Unique
- Compile-time component registration eliminates runtime reflection overhead, enabling zero-cost entity queries
- GPU-driven animation system bakes skeletal transforms into vertex buffers, removing CPU skinning and reducing draw calls
- Procedural dungeon generation dynamically integrates with the scene graph, supporting real-time world evolution with LOD-aware spawning
- Material system auto-generates shader permutations from component combinations, removing manual shader management
- Scene graph features adaptive spatial partitioning using hybrid octree-AABB structures optimized for large open worlds
- Asset pipeline supports hot-reloading with runtime state preservation, enabling seamless live editing without scene resets