# jacoberscom/kos-engine architecture

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

- Interactive diagram: https://gitdiagram.com/jacoberscom/kos-engine
- Repository: https://github.com/jacoberscom/kos-engine

## Overview

KOS-Engine is an early-stage C++ game-engine project. Its only demonstrated runtime workflow creates an EnTT registry and adds a window component; window creation and event processing are implemented separately, but the entry point does not invoke them. The repository also contains math and logging utilities, shaders, and a Vulkan renderer design. The sampled Vulkan implementation is commented out, so rendering is shown as an inactive subsystem rather than a live runtime flow. The README states the Vulkan-engine goal but documents few capabilities; connections to unsampled shader behavior are therefore omitted.

Main entry points: [`src/main.cpp`](https://github.com/jacoberscom/kos-engine/blob/master/src/main.cpp) (Engine Entry), [`src/Core/Window/KWindow.cpp`](https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Window/KWindow.cpp) (Window System), [`src/Core/Logger/KLog.cpp`](https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Logger/KLog.cpp) (Logger), [`src/Core/Utils/Common.h`](https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Utils/Common.h) (Platform Utilities)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application Runtime"]
  node_launcher["Engine Entry<br/>[main.cpp]"]
end

subgraph group_core["Core Services"]
  node_window["Window System<br/>[KWindow.cpp]"]
  node_common["Platform Utilities<br/>[Common.h]"]
  node_logging["Logger<br/>[KLog.cpp]"]
  node_mathvec["3D Vector<br/>[KVector3.h]"]
  node_mathconst["Vector Constants<br/>[KVector3.cpp]"]
  node_mathmat["4x4 Matrix<br/>[KMat4.h]"]
end

subgraph group_render["Vulkan Rendering"]
  node_renderer["Vulkan Renderer<br/>[KRender.cpp]"]
  node_renderapi["Renderer Interface<br/>[KRender.h]"]
  node_shadervert["Vertex Shader<br/>[VertexShader.hlsl]"]
  node_shaderpixel["Pixel Shader<br/>[PixelShader.hlsl]"]
end

node_ecs["EnTT Registry"]
node_logfile["Log File"]

node_launcher -->|"creates registry"| node_ecs
node_launcher -->|"emplace component"| node_window
node_launcher -->|"uses base types"| node_common
node_window -->|"uses platform API"| node_common
node_window -->|"logs status"| node_logging
node_logging -->|"writes optionally"| node_logfile
node_mathconst -->|"defines constants"| node_mathvec
node_renderapi -.->|"declares renderer"| node_renderer

click node_launcher "https://github.com/jacoberscom/kos-engine/blob/master/src/main.cpp"
click node_window "https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Window/KWindow.cpp"
click node_common "https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Utils/Common.h"
click node_logging "https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Logger/KLog.cpp"
click node_mathvec "https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Math/KVector3.h"
click node_mathconst "https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Math/KVector3.cpp"
click node_mathmat "https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Math/KMat4.h"
click node_renderer "https://github.com/jacoberscom/kos-engine/blob/master/src/RHI/Vulkan/KRender.cpp"
click node_renderapi "https://github.com/jacoberscom/kos-engine/blob/master/src/RHI/Vulkan/KRender.h"
click node_shadervert "https://github.com/jacoberscom/kos-engine/blob/master/Shaders/VertexShader.hlsl"
click node_shaderpixel "https://github.com/jacoberscom/kos-engine/blob/master/Shaders/PixelShader.hlsl"

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_launcher toneBlue
class node_window,node_common,node_logging,node_mathvec,node_mathconst,node_mathmat toneAmber
class node_renderer,node_renderapi,node_shadervert,node_shaderpixel toneMint
class node_ecs,node_logfile toneIndigo
```

## Components

### Application Runtime

- [Engine Entry](https://github.com/jacoberscom/kos-engine/blob/master/src/main.cpp): `src/main.cpp`

### Core Services

- [Window System](https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Window/KWindow.cpp): `src/Core/Window/KWindow.cpp`
- [Platform Utilities](https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Utils/Common.h): `src/Core/Utils/Common.h`
- [Logger](https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Logger/KLog.cpp): `src/Core/Logger/KLog.cpp`
- [3D Vector](https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Math/KVector3.h): `src/Core/Math/KVector3.h`
- [Vector Constants](https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Math/KVector3.cpp): `src/Core/Math/KVector3.cpp`
- [4x4 Matrix](https://github.com/jacoberscom/kos-engine/blob/master/src/Core/Math/KMat4.h): `src/Core/Math/KMat4.h`

### Vulkan Rendering

- [Vulkan Renderer](https://github.com/jacoberscom/kos-engine/blob/master/src/RHI/Vulkan/KRender.cpp): `src/RHI/Vulkan/KRender.cpp`
- [Renderer Interface](https://github.com/jacoberscom/kos-engine/blob/master/src/RHI/Vulkan/KRender.h): `src/RHI/Vulkan/KRender.h`
- [Vertex Shader](https://github.com/jacoberscom/kos-engine/blob/master/Shaders/VertexShader.hlsl): `Shaders/VertexShader.hlsl`
- [Pixel Shader](https://github.com/jacoberscom/kos-engine/blob/master/Shaders/PixelShader.hlsl): `Shaders/PixelShader.hlsl`

### Other components

- **EnTT Registry**
- **Log File**

## Connections

- Engine Entry → EnTT Registry: creates registry (evidence: `src/main.cpp`)
- Engine Entry → Window System: emplace component (evidence: `src/main.cpp`)
- Engine Entry → Platform Utilities: uses base types (evidence: `src/main.cpp`)
- Window System → Platform Utilities: uses platform API (evidence: `src/Core/Window/KWindow.cpp`)
- Window System → Logger: logs status (evidence: `src/Core/Window/KWindow.cpp`)
- Logger → Log File: writes optionally (evidence: `src/Core/Logger/KLog.cpp`)
- Vector Constants → 3D Vector: defines constants (evidence: `src/Core/Math/KVector3.cpp`)
- Renderer Interface → Vulkan Renderer: declares renderer
