Skip to content
This repository was archived by the owner on Jul 29, 2026. It is now read-only.

v0.2.0-milestone2

Pre-release
Pre-release

Choose a tag to compare

@ThorstenSuckow ThorstenSuckow released this 16 Dec 12:22
· 2157 commits to main since this release

helios 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:

  • CameraSceneNode enables 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() and lookAtLocal() methods for intuitive camera orientation

Game System (helios.engine.game)

A complete game object framework for entity management:

  • GameObject base class with GUID identification
  • GameWorld container for centralized object management
  • CommandBuffer for deferred command execution (Command Pattern)
  • InputSnapshot for frame-consistent input state
  • InputHandler interface 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:

  • GamepadSettings for deadzone and axis inversion settings
  • RadialDeadzoneStrategy for 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:

  • FramePacer for configurable frame rate limiting
  • FrameStats for detailed frame timing breakdown
  • FpsMetrics for statistical frame rate analysis
  • Stopwatch high-resolution timer utility

ImGui Integration Layer

A complete abstraction layer for ImGui integration:

  • ImGuiBackend abstraction for platform-agnostic backends
  • ImGuiGlfwOpenGLBackend for GLFW/OpenGL projects
  • ImGuiOverlay singleton manager with DockSpace support
  • ImGuiWidget base 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:

  • LogSink abstract interface with type identifiers
  • ConsoleSink for terminal output
  • ImGuiLogSink for 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


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.