# hylmithecoder/gameengine architecture

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

- Interactive diagram: https://gitdiagram.com/hylmithecoder/gameengine
- Repository: https://github.com/hylmithecoder/gameengine

## Overview

Ilmeee Engine is a Vulkan-based 3D engine and editor, launched directly or through IlmeeeHub, with a companion engine process connected over loopback TCP. The main workflow is opening a project, importing or editing scene assets, rendering and inspecting the viewport, and saving scene data. The README also documents 2D sprites, model formats, surface texture overrides, picking, and drag-and-drop. Those capabilities are represented at their documented subsystem paths; source excerpts are partial, so uncertain internal wiring is omitted.

Main entry points: [`src/cpp/ApplicationManager.cpp`](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/ApplicationManager.cpp) (Application manager), [`src/cpp/ui/MainWindow.cpp`](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/ui/MainWindow.cpp) (Editor window), [`src/cpp/vulkan/vulkanhandler.cpp`](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/vulkan/vulkanhandler.cpp) (Vulkan renderer), [`src/cpp/ui/HandlerProject.cpp`](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/ui/HandlerProject.cpp) (Project explorer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_launch["Launch and lifecycle"]
  node_hub["Project hub<br/>[Hub.cpp]"]
  node_app["Application manager"]
  node_engine["Companion engine<br/>[GameEngine.cpp]"]
end

subgraph group_editor["Editor workflow"]
  node_window["Editor window<br/>[MainWindow.cpp]"]
  node_project["Project explorer<br/>[HandlerProject.cpp]"]
  node_panels["Editor panels<br/>[PanelManager.cpp]"]
  node_viewport["Scene viewport<br/>[SceneRenderer.cpp]"]
  node_icon["SVG icon manager<br/>[SvgIconManager.cpp]"]
  node_video["Video player<br/>[VideoPlayer.cpp]"]
end

subgraph group_scene["Scene and assets"]
  node_scene["Scene model<br/>[Scene.hpp]"]
  node_serialize["Scene serializer"]
  node_builder["Scene builder<br/>[Builder.cpp]"]
  node_loaders["Model loaders<br/>[PMXLoader.cpp]"]
  node_textures["Texture manager<br/>[TextureManager.cpp]"]
end

subgraph group_render["Rendering and IPC"]
  node_renderer["Vulkan renderer<br/>[vulkanhandler.cpp]"]
  node_vulkanbase["Vulkan window base<br/>[VulkanBase.cpp]"]
  node_network["TCP network manager<br/>[NetworkManager.hpp]"]
end

node_user(("User"))
node_engineproc(("Engine process"))
node_filesystem[("Project files")]

node_user -->|"launches"| node_hub
node_user -->|"opens editor"| node_app
node_hub -->|"starts"| node_app
node_app -->|"initializes and runs"| node_window
node_window -->|"hosts"| node_project
node_window -->|"renders"| node_panels
node_window -->|"presents"| node_viewport
node_project -->|"reads assets"| node_filesystem
node_project -->|"imports models"| node_loaders
node_viewport -->|"edits and picks"| node_scene
node_viewport -->|"renders scene"| node_renderer
node_renderer -->|"loads textures"| node_textures
node_renderer -->|"loads mesh data"| node_loaders
node_serialize -->|"reads and writes"| node_filesystem
node_builder -->|"builds"| node_scene
node_app -->|"starts server"| node_network
node_app -->|"starts process"| node_engineproc
node_engineproc -->|"connects"| node_network
node_app -->|"sends commands"| node_network
node_engine -->|"updates active scene"| node_scene
node_vulkanbase -->|"provides Vulkan context"| node_renderer
node_window -->|"draws icons"| node_icon
node_panels -.->|"hosts video panel"| node_video

click node_hub "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/Hub.cpp"
click node_app "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/ApplicationManager.cpp"
click node_window "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/ui/MainWindow.cpp"
click node_project "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/ui/HandlerProject.cpp"
click node_panels "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/core_editor/panels/PanelManager.cpp"
click node_viewport "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/SceneRenderer.cpp"
click node_scene "https://github.com/hylmithecoder/gameengine/blob/linux/include/core_engine/Scene.hpp"
click node_serialize "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/SceneSerializer.cpp"
click node_builder "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/Builder.cpp"
click node_loaders "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/PMXLoader.cpp"
click node_textures "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/TextureManager.cpp"
click node_renderer "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/vulkan/vulkanhandler.cpp"
click node_vulkanbase "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/vulkan/VulkanBase.cpp"
click node_engine "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/core/GameEngine.cpp"
click node_network "https://github.com/hylmithecoder/gameengine/blob/linux/include/core_engine/NetworkManager.hpp"
click node_icon "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/ui/SvgIconManager.cpp"
click node_video "https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/ui/VideoPlayer.cpp"

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_hub,node_app,node_engine,node_user toneBlue
class node_window,node_project,node_panels,node_viewport,node_icon,node_video,node_filesystem toneAmber
class node_scene,node_serialize,node_builder,node_loaders,node_textures toneMint
class node_renderer,node_vulkanbase,node_network toneRose
class node_engineproc toneIndigo
```

## Components

### Launch and lifecycle

- [Project hub](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/Hub.cpp): `src/cpp/Hub.cpp`
- [Application manager](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/ApplicationManager.cpp): `src/cpp/ApplicationManager.cpp`
- [Companion engine](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/core/GameEngine.cpp): `src/cpp/core_engine/core/GameEngine.cpp`

### Editor workflow

- [Editor window](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/ui/MainWindow.cpp): `src/cpp/ui/MainWindow.cpp`
- [Project explorer](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/ui/HandlerProject.cpp): `src/cpp/ui/HandlerProject.cpp`
- [Editor panels](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/core_editor/panels/PanelManager.cpp): `src/cpp/core_engine/core_editor/panels/PanelManager.cpp`
- [Scene viewport](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/SceneRenderer.cpp): `src/cpp/core_engine/SceneRenderer.cpp`
- [SVG icon manager](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/ui/SvgIconManager.cpp): `src/cpp/ui/SvgIconManager.cpp`
- [Video player](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/ui/VideoPlayer.cpp): `src/cpp/ui/VideoPlayer.cpp`

### Scene and assets

- [Scene model](https://github.com/hylmithecoder/gameengine/blob/linux/include/core_engine/Scene.hpp): `include/core_engine/Scene.hpp`
- [Scene serializer](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/SceneSerializer.cpp): `src/cpp/core_engine/SceneSerializer.cpp`
- [Scene builder](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/Builder.cpp): `src/cpp/core_engine/Builder.cpp`
- [Model loaders](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/PMXLoader.cpp): `src/cpp/core_engine/PMXLoader.cpp`
- [Texture manager](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/core_engine/TextureManager.cpp): `src/cpp/core_engine/TextureManager.cpp`

### Rendering and IPC

- [Vulkan renderer](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/vulkan/vulkanhandler.cpp): `src/cpp/vulkan/vulkanhandler.cpp`
- [Vulkan window base](https://github.com/hylmithecoder/gameengine/blob/linux/src/cpp/vulkan/VulkanBase.cpp): `src/cpp/vulkan/VulkanBase.cpp`
- [TCP network manager](https://github.com/hylmithecoder/gameengine/blob/linux/include/core_engine/NetworkManager.hpp): `include/core_engine/NetworkManager.hpp`

### Other components

- **User**
- **Engine process**
- **Project files**

## Connections

- User → Project hub: launches
- User → Application manager: opens editor
- Project hub → Application manager: starts
- Application manager → Editor window: initializes and runs
- Editor window → Project explorer: hosts
- Editor window → Editor panels: renders
- Editor window → Scene viewport: presents
- Project explorer → Project files: reads assets
- Project explorer → Model loaders: imports models
- Scene viewport → Scene model: edits and picks
- Scene viewport → Vulkan renderer: renders scene
- Vulkan renderer → Texture manager: loads textures
- Vulkan renderer → Model loaders: loads mesh data
- Scene serializer → Project files: reads and writes
- Scene builder → Scene model: builds
- Application manager → TCP network manager: starts server
- Application manager → Engine process: starts process
- Engine process → TCP network manager: connects
- Application manager → TCP network manager: sends commands
- Companion engine → Scene model: updates active scene
- Vulkan window base → Vulkan renderer: provides Vulkan context
- Editor window → SVG icon manager: draws icons
- Editor panels → Video player: hosts video panel
