# naminginprogress/engine architecture

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

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

## Overview

VKE is a Java engine framework for applications, with window and renderer lifecycle management and APIs for rendering, ECS, audio, events, and asset/file handling. Its main workflow is an application starting the engine: the engine creates a window, fires lifecycle events, initializes the app, obtains the renderer, and later frees app and engine resources. The README is empty, and sampled source is limited, so several subsystem relationships are intentionally not inferred.

Main entry points: [`src/main/java/com/vke/core/VKEngine.java`](https://github.com/naminginprogress/engine/blob/master/src/main/java/com/vke/core/VKEngine.java) (Engine lifecycle), [`src/main/java/com/vke/api/app`](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/app) (Application API), [`src/main/java/com/vke/api/rendering/vulkan/pipeline`](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/rendering/vulkan/pipeline) (Pipeline config), [`src/main/java/com/vke/api/window`](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/window) (Window API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Engine runtime"]
  node_engine["Engine lifecycle<br/>[VKEngine.java]"]
  node_app["Application API"]
  node_window["Window API"]
  node_events["Event system"]
  node_services["Service API"]
end

subgraph group_render["Rendering"]
  node_renderer["Renderer API"]
  node_pipeline["Pipeline config"]
  node_vulkan["Vulkan backend"]
end

subgraph group_game["Game systems"]
  node_ecs["Entity component system"]
  node_scene["Scene API"]
end

subgraph group_media["Media and data"]
  node_audio["Audio system"]
  node_file["File decoders"]
  node_config["Config parsing"]
  node_archive["VKZ archives"]
end

node_developer(("Application developer"))

node_developer -->|"starts"| node_engine
node_engine -->|"initializes"| node_app
node_engine -->|"frees"| node_app
node_engine -->|"creates window"| node_window
node_engine -->|"fires lifecycle"| node_events
node_engine -->|"obtains renderer"| node_renderer
node_pipeline -->|"parses config"| node_config

click node_engine "https://github.com/naminginprogress/engine/blob/master/src/main/java/com/vke/core/VKEngine.java"
click node_app "https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/app"
click node_window "https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/window"
click node_events "https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/event"
click node_services "https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/services2"
click node_renderer "https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/rendering/abstraction/renderer"
click node_pipeline "https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/rendering/vulkan/pipeline"
click node_vulkan "https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/core/rendering/vulkan"
click node_ecs "https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/core/ecs"
click node_scene "https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/scene"
click node_audio "https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/core/audio"
click node_file "https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/core/file"
click node_config "https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/parsing/config"
click node_archive "https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/vkz"

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_engine,node_app,node_window,node_events,node_services toneBlue
class node_renderer,node_pipeline,node_vulkan toneAmber
class node_ecs,node_scene toneMint
class node_audio,node_file,node_config,node_archive toneRose
class node_developer toneIndigo
```

## Components

### Engine runtime

- [Engine lifecycle](https://github.com/naminginprogress/engine/blob/master/src/main/java/com/vke/core/VKEngine.java): `src/main/java/com/vke/core/VKEngine.java`
- [Application API](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/app): `src/main/java/com/vke/api/app`
- [Window API](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/window): `src/main/java/com/vke/api/window`
- [Event system](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/event): `src/main/java/com/vke/api/event`
- [Service API](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/services2): `src/main/java/com/vke/api/services2`

### Rendering

- [Renderer API](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/rendering/abstraction/renderer): `src/main/java/com/vke/api/rendering/abstraction/renderer`
- [Pipeline config](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/rendering/vulkan/pipeline): `src/main/java/com/vke/api/rendering/vulkan/pipeline`
- [Vulkan backend](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/core/rendering/vulkan): `src/main/java/com/vke/core/rendering/vulkan`

### Game systems

- [Entity component system](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/core/ecs): `src/main/java/com/vke/core/ecs`
- [Scene API](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/scene): `src/main/java/com/vke/api/scene`

### Media and data

- [Audio system](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/core/audio): `src/main/java/com/vke/core/audio`
- [File decoders](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/core/file): `src/main/java/com/vke/core/file`
- [Config parsing](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/parsing/config): `src/main/java/com/vke/api/parsing/config`
- [VKZ archives](https://github.com/naminginprogress/engine/tree/master/src/main/java/com/vke/api/vkz): `src/main/java/com/vke/api/vkz`

### Other components

- **Application developer**

## Connections

- Application developer → Engine lifecycle: starts
- Engine lifecycle → Application API: initializes
- Engine lifecycle → Application API: frees
- Engine lifecycle → Window API: creates window
- Engine lifecycle → Event system: fires lifecycle
- Engine lifecycle → Renderer API: obtains renderer
- Pipeline config → Config parsing: parses config
