⚠️ Development Status: Nodens is currently in active, experimental development with no stable release. It serves primarily as a learning ground and playground for exploring game engine architecture and modern C++20/23 features. APIs are highly subject to change.
Nodens is an experimental C++23 framework designed for rapidly developing interactive desktop applications with an optional immediate mode graphical user interface.
It unifies excellent third-party libraries (e.g. ImGui, ImPlot, ImPlot3D, Tracy) with a custom core that integrates 4 main systems:
- GLFW Windows with both OpenGL and Vulkan backends.
- Layer System that governs the application lifetime and execution flow, visual rendering priority and input event routing (see wiki);
- Event System with InputEvent routing through the LayerStack and a pub/sub thread-safe EventBus for both immediate and queued dispatch of custom event types (see wiki);
- Job System for multithreaded task execution (see wiki).
Nodens follows a module-first architecture where public APIs are module interfaces (.cppm), third-party headers are isolated on the global fragment module, and consumers simply import nodens;.
The framework compiles into a single static library that is linked to your application, ensuring the final product is a single portable executable to streamline distribution.
| Resource | Description |
|---|---|
| Wiki | Tutorials, architecture guides, and how-to articles |
| API Reference | Doxygen-generated class and function documentation - not yet hosted; build locally with cmake --build build --target nodens-docs |
📖 For build, integration, and development-environment instructions, see the Getting Started wiki page.
⚠️ Platform limitation: The supported and validated development environment is based on Arch Linux and currently builds Nodens for Linux only. Native Windows and macOS builds are not currently supported or validated.
For new applications, start from the Nodens Application Template. Nodens can also be consumed from CMake with FetchContent; the wiki covers framework development, local checkouts, and native Linux builds.
Build configurations and their options are documented in the wiki, under Building and Toolchain and Profiling with Tracy.
Nodens includes a Linux Dev Container using
ghcr.io/eldritch-codex/arch-dev:main. Open the repository in Zed or
Visual Studio Code, then reopen it in the Dev Container.
NVIDIA hosts need the host NVIDIA driver and NVIDIA Container Toolkit before
using the default GPU configuration. Intel/AMD hosts should select the
alternative /dev/dri configuration in .devcontainer/devcontainer.json.
See Getting Started for host setup, toolkit installation, GPU configuration, and build instructions.
Nodens includes several examples in the examples/ directory:
| Example | Demonstrates |
|---|---|
circularwave3d |
Immediate mode GUI, real-time 2D/3D plotting with ImPlot and ImPlot3D |
planetaryscan |
Pub/Sub event bus, multi-threaded job system with thread-safe data collection, live scatter plot visualization |
📖 For detailed walkthroughs of each example, see the Examples Guide on the wiki.
example-tracy-profiling-multithread.mp4
Applications I used in my own research on numerical simulations using earlier versions of Nodens.
1D.Simulation.Engine.mp4
2D.Simulation.Engine.mp4
All dependencies are resolved automatically at configure time via CMake FetchContent and are downloaded and built from source (except from glad which is included in the vendor folder).
| Library | Description | Version |
|---|---|---|
| GLAD | OpenGL function loader. | v0.1.35 |
| GLFW | Cross-platform for window, context, and input management. | 3.4 |
| ImGui | Bloat-free Immediate Mode GUI. | v1.92.9b-docking |
| ImPlot | 2D data plotting extension for ImGui. | v1.0 |
| ImPlot3D | 3D data plotting extension for ImGui. | v0.4 |
| spdlog | Fast, header-only/compiled logging library. | v1.17.0 |
| Tracy | Real-time frame and GPU profiler. | v0.14.1 |
A special thanks to TheCherno. The foundational architecture of Nodens was heavily inspired by the early episodes of his excellent Game Engine series on YouTube.
Additionally, Nodens originally began as a personal project for my undergraduate Computer Graphics course at UFMG. Early iterations of this framework powered several of my academic projects, including boids and galaxians.
- Gregory, J. (2019) Game Engine Architecture. Third edition. CRC Press.
- Horton, I. and Van Weert, P. (2023) Beginning C++23: From Beginner to Pro. Berkeley, CA: Apress. Available at: https://doi.org/10.1007/978-1-4842-9343-0.
- The Cherno (no date) Game Engine Series, YouTube. Available at: http://www.youtube.com/playlist?list=PLlrATfBNZ98dC-V-N3m0Go4deliWHPFwT.
Copyright (c) 2026 EldritchCodex. This project and its entire history are licensed under the MIT License.