# slyzerr/orvexa-engine architecture

> Architecture diagram of the GitHub repository slyzerr/orvexa-engine, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/slyzerr/orvexa-engine
- Repository: https://github.com/slyzerr/orvexa-engine

## Overview

Orvexa is an early-stage C++ 2D game engine; the README describes an ECS architecture, but the sampled runtime does not yet expose ECS behavior. The visible user-to-result path is program startup, runtime initialization, and a window event/update loop. Input state and frame timing are runtime services; rendering is currently empty. File/text access and JSON parsing are present as standalone utilities, but no sampled runtime code connects them to the loop. The graph reflects shown calls and documented scope; it does not infer unsampled integrations.

Main entry points: [`Project Engine/Runtime.cpp`](https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/Runtime.cpp) (Runtime loop), [`Project Engine/JsonParser.cpp`](https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/JsonParser.cpp) (JSON parser), [`Project Engine/main.cpp`](https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/main.cpp) (Program entry), [`Project Engine/Inputs.cpp`](https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/Inputs.cpp) (Input state)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Engine runtime"]
  node_entry["Program entry<br/>[main.cpp]"]
  node_runtime_loop["Runtime loop<br/>[Runtime.cpp]"]
  node_window["Window events<br/>[Window.cpp]"]
  node_input["Input state<br/>[Inputs.cpp]"]
  node_timing["Frame timing<br/>[Time.cpp]"]
end

subgraph group_utilities["Data utilities"]
  node_filesystem["File access<br/>[FileSystem.cpp]"]
  node_json["JSON parser<br/>[JsonParser.cpp]"]
  node_json_lib["JSON library<br/>[json.hpp]"]
end

subgraph group_support["Runtime support"]
  node_logger["Logging<br/>[Logger.h]"]
end

node_user(("Engine user"))

node_user -->|"starts"| node_entry
node_entry -->|"initializes and runs"| node_runtime_loop
node_runtime_loop -->|"creates, polls, closes"| node_window
node_runtime_loop -->|"dispatches events"| node_input
node_runtime_loop -->|"updates frame clock"| node_timing
node_runtime_loop -->|"queries input state"| node_input
node_runtime_loop -->|"logs lifecycle and input"| node_logger
node_json -->|"logs parse results"| node_logger
node_json -->|"parses JSON"| node_json_lib

click node_entry "https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/main.cpp"
click node_runtime_loop "https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/Runtime.cpp"
click node_window "https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/Window.cpp"
click node_input "https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/Inputs.cpp"
click node_timing "https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/Time.cpp"
click node_filesystem "https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/FileSystem.cpp"
click node_json "https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/JsonParser.cpp"
click node_json_lib "https://github.com/slyzerr/orvexa-engine/blob/main/external/Json/json.hpp"
click node_logger "https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/Logger.h"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_entry,node_runtime_loop,node_window,node_input,node_timing,node_user toneBlue
class node_filesystem,node_json,node_json_lib toneAmber
class node_logger toneMint
```

## Components

### Engine runtime

- [Program entry](https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/main.cpp): `Project Engine/main.cpp`
- [Runtime loop](https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/Runtime.cpp): `Project Engine/Runtime.cpp`
- [Window events](https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/Window.cpp): `Project Engine/Window.cpp`
- [Input state](https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/Inputs.cpp): `Project Engine/Inputs.cpp`
- [Frame timing](https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/Time.cpp): `Project Engine/Time.cpp`

### Data utilities

- [File access](https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/FileSystem.cpp): `Project Engine/FileSystem.cpp`
- [JSON parser](https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/JsonParser.cpp): `Project Engine/JsonParser.cpp`
- [JSON library](https://github.com/slyzerr/orvexa-engine/blob/main/external/Json/json.hpp): `external/Json/json.hpp`

### Runtime support

- [Logging](https://github.com/slyzerr/orvexa-engine/blob/main/Project%20Engine/Logger.h): `Project Engine/Logger.h`

### Other components

- **Engine user**

## Connections

- Engine user → Program entry: starts
- Program entry → Runtime loop: initializes and runs (evidence: `Project Engine/main.cpp`)
- Runtime loop → Window events: creates, polls, closes (evidence: `Project Engine/Runtime.cpp`)
- Runtime loop → Input state: dispatches events (evidence: `Project Engine/Runtime.cpp`)
- Runtime loop → Frame timing: updates frame clock (evidence: `Project Engine/Runtime.cpp`)
- Runtime loop → Input state: queries input state (evidence: `Project Engine/Runtime.cpp`)
- Runtime loop → Logging: logs lifecycle and input (evidence: `Project Engine/Runtime.cpp`)
- JSON parser → Logging: logs parse results (evidence: `Project Engine/JsonParser.cpp`)
- JSON parser → JSON library: parses JSON
