# bobbyanguelov/esoterica architecture

> Architecture diagram of the GitHub repository bobbyanguelov/esoterica, 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/bobbyanguelov/esoterica
- Repository: https://github.com/bobbyanguelov/esoterica

## Overview

Esoterica is a Windows-oriented prototype game-engine framework for technical teams to extend. The main runtime workflow is launching the standalone engine, initializing its modules and systems, loading a requested map through resource management, and updating the game world and renderer. Separate tools support editing, resource compilation and serving, and reflection/code generation. The README documents major engine capabilities whose implementation is outside the supplied excerpts; those are represented at the nearest supported source path, without asserting detailed internal wiring.

Main entry points: [`Code/Engine/Engine.cpp`](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/Engine.cpp) (Engine lifecycle), [`Code/Engine/_Module/EngineModule.cpp`](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/_Module/EngineModule.cpp) (Engine module), [`Code/Applications/Reflector/Reflector.cpp`](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Reflector/Reflector.cpp) (Reflection processing), [`Code/Applications/Engine/Win32/EngineApplication_Win32.cpp`](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Engine/Win32/EngineApplication_Win32.cpp) (Win32 engine app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Engine Runtime"]
  node_engine_app["Win32 engine app"]
  node_engine["Engine lifecycle<br/>[Engine.cpp]"]
  node_engine_module["Engine module<br/>[EngineModule.cpp]"]
  node_world["Entity world<br/>[EngineModule.h]"]
  node_animation["Animation system<br/>[EngineModule.h]"]
  node_physics["Physics and ragdolls<br/>[EngineModule.h]"]
  node_renderer["DX12 renderer<br/>[EngineModule.cpp]"]
  node_shader["Shader handling<br/>[EngineShader.cpp]"]
end

subgraph group_resources["Resource Pipeline"]
  node_resource_system["Resource system<br/>[ResourceSystem.cpp]"]
  node_resource_provider["Resource providers"]
  node_resource_server["Resource server<br/>[ResourceServer.cpp]"]
  node_resource_compiler["Resource compiler"]
end

subgraph group_tools["Tools"]
  node_editor_app["Editor application"]
  node_editor_ui["Editor UI<br/>[EditorUI.cpp]"]
  node_debug_ui["Engine debug UI<br/>[EngineDebugUI.cpp]"]
  node_engine_tools["Engine tools module"]
end

subgraph group_reflection["Reflection"]
  node_reflector_app["Reflector app"]
  node_reflector["Reflection processing<br/>[Reflector.cpp]"]
  node_type_reflection["C++ type reflection<br/>[ClangParser.cpp]"]
  node_shader_reflection["Shader reflection"]
  node_generated_code["Generated reflection code"]
end

node_player(("Engine user"))

node_player -->|"launches"| node_engine_app
node_engine_app -->|"initializes and updates"| node_engine
node_engine_app -->|"forwards input"| node_engine
node_engine -->|"initializes modules"| node_engine_module
node_engine -->|"processes requests"| node_resource_system
node_engine -->|"initializes and loads map"| node_world
node_engine_module -->|"provides world manager"| node_world
node_engine_module -->|"registers loaders"| node_animation
node_engine_module -->|"initializes physics"| node_physics
node_engine_module -->|"initializes renderer"| node_renderer
node_renderer -->|"creates shaders"| node_shader
node_resource_system -->|"requests resources"| node_resource_provider
node_resource_server -->|"handles compilation requests"| node_resource_compiler
node_resource_server -->|"serves compiled resources"| node_resource_provider
node_player -->|"launches"| node_editor_app
node_editor_app -->|"runs editor"| node_editor_ui
node_engine -->|"creates tools UI"| node_debug_ui
node_engine_tools -.->|"supports tooling"| node_editor_ui
node_player -->|"runs"| node_reflector_app
node_reflector_app -->|"starts processing"| node_reflector
node_reflector -->|"reflects C++ types"| node_type_reflection
node_reflector -->|"reflects shaders"| node_shader_reflection
node_reflector -->|"generates code"| node_generated_code

click node_engine_app "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Engine/Win32/EngineApplication_Win32.cpp"
click node_engine "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/Engine.cpp"
click node_engine_module "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/_Module/EngineModule.cpp"
click node_world "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/_Module/EngineModule.h"
click node_animation "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/_Module/EngineModule.h"
click node_physics "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/_Module/EngineModule.h"
click node_renderer "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/_Module/EngineModule.cpp"
click node_shader "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/Render/Shaders/EngineShader.cpp"
click node_resource_system "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Base/Resource/ResourceSystem.cpp"
click node_resource_provider "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Base/Resource/ResourceProviders/ResourceProvider_Network.cpp"
click node_resource_server "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/ResourceServer/ResourceServer.cpp"
click node_resource_compiler "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/ResourceCompiler/ResourceCompilerApplication.cpp"
click node_editor_app "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Editor/Win32/EditorApplication_Win32.cpp"
click node_editor_ui "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Editor/EditorUI.cpp"
click node_debug_ui "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/ToolsUI/EngineDebugUI.cpp"
click node_engine_tools "https://github.com/bobbyanguelov/esoterica/blob/main/Code/EngineTools/_Module/EngineToolsModule.cpp"
click node_reflector_app "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Reflector/ReflectorApplication.cpp"
click node_reflector "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Reflector/Reflector.cpp"
click node_type_reflection "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Reflector/TypeReflection/Clang/ClangParser.cpp"
click node_shader_reflection "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Reflector/ShaderReflection/ShaderReflection_ShaderParser.cpp"
click node_generated_code "https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Reflector/TypeReflection/TypeReflection_CodeGenerator.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_engine_app,node_engine,node_engine_module,node_world,node_animation,node_physics,node_renderer,node_shader,node_player toneBlue
class node_resource_system,node_resource_provider,node_resource_server,node_resource_compiler toneAmber
class node_editor_app,node_editor_ui,node_debug_ui,node_engine_tools toneMint
class node_reflector_app,node_reflector,node_type_reflection,node_shader_reflection,node_generated_code toneRose
```

## Components

### Engine Runtime

- [Win32 engine app](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Engine/Win32/EngineApplication_Win32.cpp): `Code/Applications/Engine/Win32/EngineApplication_Win32.cpp`
- [Engine lifecycle](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/Engine.cpp): `Code/Engine/Engine.cpp`
- [Engine module](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/_Module/EngineModule.cpp): `Code/Engine/_Module/EngineModule.cpp`
- [Entity world](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/_Module/EngineModule.h): `Code/Engine/_Module/EngineModule.h`
- [Animation system](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/_Module/EngineModule.h): `Code/Engine/_Module/EngineModule.h`
- [Physics and ragdolls](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/_Module/EngineModule.h): `Code/Engine/_Module/EngineModule.h`
- [DX12 renderer](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/_Module/EngineModule.cpp): `Code/Engine/_Module/EngineModule.cpp`
- [Shader handling](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/Render/Shaders/EngineShader.cpp): `Code/Engine/Render/Shaders/EngineShader.cpp`

### Resource Pipeline

- [Resource system](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Base/Resource/ResourceSystem.cpp): `Code/Base/Resource/ResourceSystem.cpp`
- [Resource providers](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Base/Resource/ResourceProviders/ResourceProvider_Network.cpp): `Code/Base/Resource/ResourceProviders/ResourceProvider_Network.cpp`
- [Resource server](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/ResourceServer/ResourceServer.cpp): `Code/Applications/ResourceServer/ResourceServer.cpp`
- [Resource compiler](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/ResourceCompiler/ResourceCompilerApplication.cpp): `Code/Applications/ResourceCompiler/ResourceCompilerApplication.cpp`

### Tools

- [Editor application](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Editor/Win32/EditorApplication_Win32.cpp): `Code/Applications/Editor/Win32/EditorApplication_Win32.cpp`
- [Editor UI](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Editor/EditorUI.cpp): `Code/Applications/Editor/EditorUI.cpp`
- [Engine debug UI](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Engine/ToolsUI/EngineDebugUI.cpp): `Code/Engine/ToolsUI/EngineDebugUI.cpp`
- [Engine tools module](https://github.com/bobbyanguelov/esoterica/blob/main/Code/EngineTools/_Module/EngineToolsModule.cpp): `Code/EngineTools/_Module/EngineToolsModule.cpp`

### Reflection

- [Reflector app](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Reflector/ReflectorApplication.cpp): `Code/Applications/Reflector/ReflectorApplication.cpp`
- [Reflection processing](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Reflector/Reflector.cpp): `Code/Applications/Reflector/Reflector.cpp`
- [C++ type reflection](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Reflector/TypeReflection/Clang/ClangParser.cpp): `Code/Applications/Reflector/TypeReflection/Clang/ClangParser.cpp`
- [Shader reflection](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Reflector/ShaderReflection/ShaderReflection_ShaderParser.cpp): `Code/Applications/Reflector/ShaderReflection/ShaderReflection_ShaderParser.cpp`
- [Generated reflection code](https://github.com/bobbyanguelov/esoterica/blob/main/Code/Applications/Reflector/TypeReflection/TypeReflection_CodeGenerator.cpp): `Code/Applications/Reflector/TypeReflection/TypeReflection_CodeGenerator.cpp`

### Other components

- **Engine user**

## Connections

- Engine user → Win32 engine app: launches
- Win32 engine app → Engine lifecycle: initializes and updates
- Win32 engine app → Engine lifecycle: forwards input
- Engine lifecycle → Engine module: initializes modules
- Engine lifecycle → Resource system: processes requests
- Engine lifecycle → Entity world: initializes and loads map
- Engine module → Entity world: provides world manager
- Engine module → Animation system: registers loaders
- Engine module → Physics and ragdolls: initializes physics
- Engine module → DX12 renderer: initializes renderer
- DX12 renderer → Shader handling: creates shaders
- Resource system → Resource providers: requests resources
- Resource server → Resource compiler: handles compilation requests
- Resource server → Resource providers: serves compiled resources
- Engine user → Editor application: launches
- Editor application → Editor UI: runs editor
- Engine lifecycle → Engine debug UI: creates tools UI
- Engine tools module → Editor UI: supports tooling
- Engine user → Reflector app: runs
- Reflector app → Reflection processing: starts processing
- Reflection processing → C++ type reflection: reflects C++ types
- Reflection processing → Shader reflection: reflects shaders
- Reflection processing → Generated reflection code: generates code
