# esengine/estella architecture

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

## Overview

Estella is a cross-platform 2D/3D game engine: developers author TypeScript game logic and project content, run it through the SDK and C++ engine, then export builds for supported targets. The map includes project configuration, content tooling, SDK/runtime, native engine and export stages, plus documented capabilities such as animation, physics, networking and platform services. The editor is a separate product and is not represented as repository code. Some subsystem links are documented only at product level; unsampled implementation relationships are omitted.

Main entry points: [`sdk/src/ecs/component.ts`](https://github.com/esengine/estella/blob/master/sdk/src/ecs/component.ts) (TypeScript ECS), [`pipeline/src/export/exportGame.ts`](https://github.com/esengine/estella/blob/master/pipeline/src/export/exportGame.ts) (Game exporter), [`pipeline/src/project/format.ts`](https://github.com/esengine/estella/blob/master/pipeline/src/project/format.ts) (Project config), [`pipeline/src/project/targetSupport.ts`](https://github.com/esengine/estella/blob/master/pipeline/src/project/targetSupport.ts) (Platform targets)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_project["Projects and tooling"]
  node_project_config["Project config<br/>[format.ts]"]
  node_tooling["Project tools"]
end

subgraph group_content["Content pipeline"]
  node_asset_content["Asset pipeline"]
  node_modeling["3D modeling"]
  node_world["World cooking"]
  node_music_sound["Audio content"]
end

subgraph group_runtime["Game runtime"]
  node_compiler["Script compiler"]
  node_sdk_ecs["TypeScript ECS<br/>[component.ts]"]
  node_sdk_assets["Asset runtime"]
  node_sdk_render["Rendering and camera<br/>[renderPipeline.ts]"]
  node_sdk_animation["Animation systems"]
  node_sdk_physics_ai["Physics and AI"]
  node_sdk_audio["Audio runtime"]
  node_plugins["Runtime plugins"]
end

subgraph group_engine["Engine core"]
  node_native_host["Native host<br/>[Runtime.cpp]"]
  node_native_bindings["Native bindings"]
  node_ecs_engine["C++ ECS<br/>[Registry.hpp]"]
  node_renderer["C++ renderer"]
end

subgraph group_delivery["Platform delivery"]
  node_exporter["Game exporter<br/>[exportGame.ts]"]
  node_target_support["Platform targets<br/>[targetSupport.ts]"]
  node_platforms["Web and native targets"]
end

node_developer(("Game developer"))

node_developer -->|"configures"| node_project_config
node_developer -->|"writes game logic"| node_sdk_ecs
node_project_config -->|"configures"| node_tooling
node_project_config -->|"selects targets"| node_target_support
node_asset_content -.->|"supplies assets"| node_exporter
node_modeling -.->|"supplies models"| node_exporter
node_world -.->|"supplies worlds"| node_exporter
node_music_sound -.->|"supplies audio"| node_exporter
node_sdk_ecs -->|"compiles systems"| node_compiler
node_sdk_ecs -->|"drives ECS"| node_ecs_engine
node_sdk_render -->|"uses renderer"| node_renderer
node_native_host -.->|"exposes APIs"| node_native_bindings
node_native_bindings -.->|"bridges runtime"| node_ecs_engine
node_sdk_assets -.->|"loads content"| node_asset_content
node_sdk_animation -->|"adds animation"| node_sdk_ecs
node_sdk_physics_ai -->|"adds gameplay systems"| node_sdk_ecs
node_sdk_audio -->|"adds audio"| node_sdk_ecs
node_plugins -->|"extends runtime"| node_sdk_ecs
node_exporter -->|"resolves targets"| node_target_support
node_target_support -->|"supports builds"| node_platforms
node_exporter -->|"exports games"| node_platforms

click node_project_config "https://github.com/esengine/estella/blob/master/pipeline/src/project/format.ts"
click node_tooling "https://github.com/esengine/estella/tree/master/pipeline/src/tools"
click node_asset_content "https://github.com/esengine/estella/tree/master/pipeline/src/image"
click node_modeling "https://github.com/esengine/estella/tree/master/pipeline/src/modeling"
click node_world "https://github.com/esengine/estella/tree/master/pipeline/src/world"
click node_music_sound "https://github.com/esengine/estella/tree/master/pipeline/src/music"
click node_compiler "https://github.com/esengine/estella/tree/master/compiler/src"
click node_sdk_ecs "https://github.com/esengine/estella/blob/master/sdk/src/ecs/component.ts"
click node_sdk_assets "https://github.com/esengine/estella/tree/master/sdk/src/asset"
click node_sdk_render "https://github.com/esengine/estella/blob/master/sdk/src/render/renderPipeline.ts"
click node_sdk_animation "https://github.com/esengine/estella/tree/master/sdk/src/animation"
click node_sdk_physics_ai "https://github.com/esengine/estella/tree/master/sdk/src/ai"
click node_sdk_audio "https://github.com/esengine/estella/tree/master/sdk/src/audio"
click node_plugins "https://github.com/esengine/estella/tree/master/plugins"
click node_native_host "https://github.com/esengine/estella/blob/master/native/host/Runtime.cpp"
click node_native_bindings "https://github.com/esengine/estella/tree/master/native/host/bindings"
click node_ecs_engine "https://github.com/esengine/estella/blob/master/src/esengine/ecs/Registry.hpp"
click node_renderer "https://github.com/esengine/estella/blob/master/src/esengine/renderer/frame/PostProcessPipeline.cpp"
click node_exporter "https://github.com/esengine/estella/blob/master/pipeline/src/export/exportGame.ts"
click node_target_support "https://github.com/esengine/estella/blob/master/pipeline/src/project/targetSupport.ts"

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_project_config,node_tooling toneBlue
class node_asset_content,node_modeling,node_world,node_music_sound toneAmber
class node_compiler,node_sdk_ecs,node_sdk_assets,node_sdk_render,node_sdk_animation,node_sdk_physics_ai,node_sdk_audio,node_plugins toneMint
class node_native_host,node_native_bindings,node_ecs_engine,node_renderer toneRose
class node_exporter,node_target_support,node_platforms,node_developer toneIndigo
```

## Components

### Projects and tooling

- [Project config](https://github.com/esengine/estella/blob/master/pipeline/src/project/format.ts): `pipeline/src/project/format.ts`
- [Project tools](https://github.com/esengine/estella/tree/master/pipeline/src/tools): `pipeline/src/tools`

### Content pipeline

- [Asset pipeline](https://github.com/esengine/estella/tree/master/pipeline/src/image): `pipeline/src/image`
- [3D modeling](https://github.com/esengine/estella/tree/master/pipeline/src/modeling): `pipeline/src/modeling`
- [World cooking](https://github.com/esengine/estella/tree/master/pipeline/src/world): `pipeline/src/world`
- [Audio content](https://github.com/esengine/estella/tree/master/pipeline/src/music): `pipeline/src/music`

### Game runtime

- [Script compiler](https://github.com/esengine/estella/tree/master/compiler/src): `compiler/src`
- [TypeScript ECS](https://github.com/esengine/estella/blob/master/sdk/src/ecs/component.ts): `sdk/src/ecs/component.ts`
- [Asset runtime](https://github.com/esengine/estella/tree/master/sdk/src/asset): `sdk/src/asset`
- [Rendering and camera](https://github.com/esengine/estella/blob/master/sdk/src/render/renderPipeline.ts): `sdk/src/render/renderPipeline.ts`
- [Animation systems](https://github.com/esengine/estella/tree/master/sdk/src/animation): `sdk/src/animation`
- [Physics and AI](https://github.com/esengine/estella/tree/master/sdk/src/ai): `sdk/src/ai`
- [Audio runtime](https://github.com/esengine/estella/tree/master/sdk/src/audio): `sdk/src/audio`
- [Runtime plugins](https://github.com/esengine/estella/tree/master/plugins): `plugins`

### Engine core

- [Native host](https://github.com/esengine/estella/blob/master/native/host/Runtime.cpp): `native/host/Runtime.cpp`
- [Native bindings](https://github.com/esengine/estella/tree/master/native/host/bindings): `native/host/bindings`
- [C++ ECS](https://github.com/esengine/estella/blob/master/src/esengine/ecs/Registry.hpp): `src/esengine/ecs/Registry.hpp`
- [C++ renderer](https://github.com/esengine/estella/blob/master/src/esengine/renderer/frame/PostProcessPipeline.cpp): `src/esengine/renderer/frame/PostProcessPipeline.cpp`

### Platform delivery

- [Game exporter](https://github.com/esengine/estella/blob/master/pipeline/src/export/exportGame.ts): `pipeline/src/export/exportGame.ts`
- [Platform targets](https://github.com/esengine/estella/blob/master/pipeline/src/project/targetSupport.ts): `pipeline/src/project/targetSupport.ts`
- **Web and native targets**

### Other components

- **Game developer**

## Connections

- Game developer → Project config: configures
- Game developer → TypeScript ECS: writes game logic
- Project config → Project tools: configures (evidence: `pipeline/src/project/format.ts`)
- Project config → Platform targets: selects targets (evidence: `pipeline/src/project/targetSupport.ts`)
- Asset pipeline → Game exporter: supplies assets
- 3D modeling → Game exporter: supplies models
- World cooking → Game exporter: supplies worlds
- Audio content → Game exporter: supplies audio
- TypeScript ECS → Script compiler: compiles systems
- TypeScript ECS → C++ ECS: drives ECS
- Rendering and camera → C++ renderer: uses renderer
- Native host → Native bindings: exposes APIs
- Native bindings → C++ ECS: bridges runtime
- Asset runtime → Asset pipeline: loads content
- Animation systems → TypeScript ECS: adds animation
- Physics and AI → TypeScript ECS: adds gameplay systems
- Audio runtime → TypeScript ECS: adds audio
- Runtime plugins → TypeScript ECS: extends runtime
- Game exporter → Platform targets: resolves targets
- Platform targets → Web and native targets: supports builds
- Game exporter → Web and native targets: exports games
