v0.2.0-milestone2
Pre-releasehelios v0.2.0-milestone2
Release Date: December 16, 2025
Project: helios Game Framework
Milestone: Scene Graph Integration, Game Systems & Developer Tooling
Overview
This marks the second milestone release (milestone_2) of the helios project. Building upon the architectural foundation established in Milestone 1, this release introduces a comprehensive scene graph with camera integration, a game object system, advanced input processing, and an extensive ImGui-based developer tooling layer.
The focus of this milestone is on providing the infrastructure for interactive 3D applications with real-time debugging capabilities.
Major Features
Scene Graph & Camera System
The camera system has been fully integrated into the scene graph hierarchy:
CameraSceneNodeenables cameras to participate in the transform hierarchy- Cameras can follow game objects via scene graph parenting
- Selective transform inheritance (Translation, Rotation, Scale) via
TransformType - View matrix computed from inverse world transform
lookAt()andlookAtLocal()methods for intuitive camera orientation
Game System (helios.engine.game)
A complete game object framework for entity management:
GameObjectbase class with GUID identificationGameWorldcontainer for centralized object managementCommandBufferfor deferred command execution (Command Pattern)InputSnapshotfor frame-consistent input stateInputHandlerinterface for input-to-command translation- Unit-based sizing with
setSize()method
Units System (helios.core.units)
Standardized measurement units across the engine:
- Standard spatial unit: 1 Meter (1 hu = 1 m)
- Standard time unit: Seconds
- Conversion utilities between Meter/Centimeter and Seconds/Milliseconds
- Compile-time constants for unit definitions
Advanced Gamepad Input
Enhanced gamepad support with per-controller configuration:
GamepadSettingsfor deadzone and axis inversion settingsRadialDeadzoneStrategyfor circular deadzone normalization- Per-stick deadzone thresholds (0.0 to 0.9 range)
- Individual axis inversion for all four stick axes
- Runtime configuration access via
InputAdapter
Engine & Tooling
Frame timing and performance measurement utilities:
FramePacerfor configurable frame rate limitingFrameStatsfor detailed frame timing breakdownFpsMetricsfor statistical frame rate analysisStopwatchhigh-resolution timer utility
ImGui Integration Layer
A complete abstraction layer for ImGui integration:
ImGuiBackendabstraction for platform-agnostic backendsImGuiGlfwOpenGLBackendfor GLFW/OpenGL projectsImGuiOverlaysingleton manager with DockSpace supportImGuiWidgetbase interface for extensible widget development- Configurable semi-transparent window backgrounds
Developer Widgets
Comprehensive debugging and control widgets:
| Widget | Purpose |
|---|---|
FpsWidget |
Frame rate display with target FPS control |
GamepadWidget |
Real-time gamepad state visualization with settings panel |
LogWidget |
Scrollable log console with scope/level filtering and search |
CameraWidget |
Camera parameter control with space toggle and presets |
MainMenuWidget |
Application settings (transparency, docking, themes) |
Logging System Enhancements
Self-registering sink architecture for extensible logging:
LogSinkabstract interface with type identifiersConsoleSinkfor terminal outputImGuiLogSinkfor LogWidget integration- Enable/disable sinks by type identifier at runtime
- Scope-based filtering support
Breaking Changes
This release includes several breaking changes to improve architecture and maintainability.
Camera System Refactor
Cameras are now managed via CameraSceneNode instead of standalone Camera objects:
// Before (Milestone 1)
auto camera = std::make_shared<Camera>();
viewport->setCamera(camera.get());
camera->setPosition({0, 0, 5});
// After (Milestone 2)
auto camera = std::make_unique<Camera>();
auto cameraNode = std::make_unique<CameraSceneNode>(std::move(camera));
auto* nodePtr = scene->addNode(std::move(cameraNode));
viewport->setCameraSceneNode(nodePtr);
nodePtr->setTranslation({0, 0, 5});Enum Sentinel Naming
All enum counter entries renamed from COUNT to size_ for consistency.
MeshData Removal
MeshData has been merged into Mesh class.
Material Ownership
Materials now own their shader and properties via shared pointers.
Documentation
New Documentation
CONVENTIONS.md: Left-Handed Coordinate System (LHS), matrix storage format, view matrix construction- Units system documentation with standard unit definitions
- Scene graph camera integration guide
- ImGui widget development guide
Updated Documentation
- API documentation for all new modules
- Example code with improved section headers and comments
- Migration guide for breaking changes
Examples
Three example applications demonstrate the framework capabilities:
| Example | Description |
|---|---|
simple_cube_rendering |
Basic 3D cube with shader pipeline |
game_controller_input |
Gamepad input visualization |
spaceship_control |
Interactive spaceship with camera follow, ImGui overlay, and command pattern |
Pre-built Windows binaries are available as release assets.
Dependencies
| Library / Tool | Purpose |
|---|---|
| C++23 | Core language features and modules |
| CMake 4.x | Build configuration |
| GLFW | Window and input handling |
| GLM | Validation reference for math library |
| OpenGL (via GLAD) | Rendering backend |
| Dear ImGui | Developer UI and debugging tools |
| Google Test | Unit testing |
| Google Benchmark | Performance measurement |
| Doxygen | API documentation |
Known Limitations
- Rendering pipeline remains in foundational stage
- No asset loading system (textures, models)
- Single-threaded execution model
- Windows primary development platform (Linux/macOS support experimental)
Future Roadmap
See the project milestones for detailed targets of the upcoming milestones.
Acknowledgements
Special thanks to the open-source community, particularly the Dear ImGui project for providing excellent developer tooling capabilities.
Links
- GitHub Repository: https://github.com/ThorstenSuckow/helios
- Project Homepage: https://helios.garagecraft.games
- API Documentation: https://helios.garagecraft.games/docs/helios
- Changelog: https://helios.garagecraft.games/docs/changelog
Summary
helios v0.2.0-milestone2 delivers a fully integrated scene graph with camera support, a game object system, advanced input handling, and comprehensive developer tooling via ImGui. This release establishes the interactive foundation for building 3D game applications.