API Documentation API Reference
Introduction
helios is an ongoing, educational project and strives for providing a foundational and modular technical backbone for game development. Designed with a top-down, prototype-oriented approach, it emphasizes a clear separation of concerns and robust architectural patterns to help with creating maintainable games.
Core Purpose
The primary objective of helios is to offer a flexible and extensible platform for interactive games. As a prototype, it provides the following systems:
- Rendering Pipeline: A rendering layer with customizable render passes.
- Modular Subsystems: Well-defined interfaces for core components such as Scene Management and Rendering.
- Modern C++ Practices: Leveraging C++(23) Modules for improved dependency management and compile-time efficiency.
Architecture Overview
The framework's architecture follows a component-based philosophy, providing abstract interfaces that decouple high-level scene descriptions from underlying hardware implementations.
Core Modules
Extension Modules
Core Concepts
1. Scene Graph
The scene graph organizes objects hierarchically, with automatic transform propagation from parent to child nodes.
Key Classes:
- Scene - Root container for all scene objects
- SceneNode - Node in the hierarchy with transform and optional renderable
- Camera - Defines the viewpoint and projection
Example:
2. Rendering Pipeline
The rendering pipeline uses a deferred command pattern with render passes.
Flow:
Key Classes:
- RenderPrototype - Immutable combination of Mesh + Material
- Renderable - Instance of a RenderPrototype with optional overrides
- RenderCommand - Low-level GPU command
- RenderQueue - Collection of commands for a pass
- RenderPass - Execution unit with frame-specific uniforms
Example:
3. Material System
Materials define surface appearance with shaders and properties.
Key Classes:
- Material - Shader + default MaterialProperties
- MaterialProperties - Immutable value object (baseColor, roughness, etc.)
- MaterialPropertiesOverride - Per-instance overrides
Example:
4. Input System
Unified input handling for keyboard, mouse, and gamepad.
Key Classes:
- InputManager - Central input coordinator
- InputAdapter - Platform-specific input implementation
- GamepadState - Current state of a gamepad
Example:
Quick Start
Creating a Simple Application
Module Details
For detailed information about each module, see:
- Rendering - Rendering system and pipeline
- Scene - Scene graph and camera
- Input - Input handling
- Math - Mathematical operations
- Window - Window management
- Utilities - Logging, file I/O
Advanced Topics
Custom Rendering Backend
To implement a custom rendering backend:
1. Implement RenderingDevice interface 2. Extend Mesh for your platform (e.g., VulkanMesh) 3. Extend Shader for your platform (e.g., VulkanShader) 4. Create a factory (e.g., VulkanFactory)
Custom Input Adapter
To implement a custom input adapter:
1. Implement InputAdapter interface 2. Map platform-specific events to helios types 3. Update GamepadState on polling
API Documentation
For detailed class-by-class documentation, see the Doxygen-generated API reference.
Examples
Check the examples/ directory for complete working examples:
- Simple Cube Rendering - Basic rendering tutorial
- Game Controller Input - Input handling demo
License
helios is distributed under the MIT-license.
Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.15.0.