# weldengine/weld architecture

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

- Interactive diagram: https://gitdiagram.com/weldengine/weld
- Repository: https://github.com/weldengine/weld

## Overview

Weld Engine is a Zig game engine whose documented capabilities span authoring and scene cooking, runtime simulation, rendering, asset processing, and an editor/runtime IPC link. A principal workflow is authoring Etch or scene data, cooking it into runtime assets, and using engine subsystems to simulate and render a game. The README also documents Etch interpretation/code generation and editor-to-runtime display. Source excerpts were unavailable, so relationships below are limited to README statements; implementation details and unsampled links are not inferred.

Main entry points: [`src/etch/parser.zig`](https://github.com/weldengine/weld/blob/main/src/etch/parser.zig) (Etch Language), [`src/editor/main.zig`](https://github.com/weldengine/weld/blob/main/src/editor/main.zig) (Editor), [`src/etch/scene_cook.zig`](https://github.com/weldengine/weld/blob/main/src/etch/scene_cook.zig) (Scene Cooking), [`src/modules/render/gal/interface.zig`](https://github.com/weldengine/weld/blob/main/src/modules/render/gal/interface.zig) (Graphics Abstraction)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_authoring["Authoring and Cooking"]
  node_etch["Etch Language<br/>[parser.zig]"]
  node_etch_interp["Etch Interpreter<br/>[interp.zig]"]
  node_etch_codegen["Etch Zig Codegen<br/>[lower.zig]"]
  node_scene_cook["Scene Cooking<br/>[scene_cook.zig]"]
end

subgraph group_core["Engine Core"]
  node_scene_codec["Scene Codec<br/>[loader.zig]"]
  node_ecs[("ECS World<br/>[world.zig]")]
  node_jobs["Job Scheduler<br/>[scheduler.zig]"]
  node_events["Event Bus<br/>[bus.zig]"]
  node_resources[("Resource Store<br/>[registry.zig]")]
  node_ipc["IPC Transport<br/>[transport.zig]"]
end

subgraph group_simulation["Simulation Modules"]
  node_physics["Forge Physics<br/>[world.zig]"]
  node_physics_api["Physics API<br/>[components.zig]"]
end

subgraph group_graphics["Rendering and Assets"]
  node_render_graph["Render Graph<br/>[graph.zig]"]
  node_gal["Graphics Abstraction<br/>[interface.zig]"]
  node_vulkan["Vulkan Backend<br/>[device.zig]"]
  node_asset_pipeline["Asset Pipeline<br/>[root.zig]"]
  node_asset_loader["Asset Loader<br/>[Loader.zig]"]
end

subgraph group_host["Editor and Runtime"]
  node_editor["Editor<br/>[main.zig]"]
  node_runtime["Runtime"]
  node_platform["Platform Layer<br/>[window.zig]"]
end

node_developer(("Game Developer"))

node_developer -->|"authors scripts"| node_etch
node_etch -->|"interpreted by"| node_etch_interp
node_etch -->|"compiled to Zig"| node_etch_codegen
node_etch -->|"cooked as scenes"| node_scene_cook
node_scene_cook -->|"produces scene data"| node_scene_codec
node_etch -->|"bridges to ECS"| node_ecs
node_developer -->|"cooks assets"| node_asset_pipeline
node_asset_pipeline -->|"cooking cache"| node_asset_loader
node_developer -->|"uses editor"| node_editor
node_editor -->|"serves runtime"| node_ipc
node_runtime -->|"connects by IPC"| node_ipc
node_editor -->|"opens window"| node_platform
node_editor -->|"blits via renderer"| node_gal
node_gal -->|"Vulkan backend"| node_vulkan
node_physics_api -->|"exposes physics"| node_physics

click node_etch "https://github.com/weldengine/weld/blob/main/src/etch/parser.zig"
click node_etch_interp "https://github.com/weldengine/weld/blob/main/src/etch/interp.zig"
click node_etch_codegen "https://github.com/weldengine/weld/blob/main/src/etch/zig_codegen/lower.zig"
click node_scene_cook "https://github.com/weldengine/weld/blob/main/src/etch/scene_cook.zig"
click node_scene_codec "https://github.com/weldengine/weld/blob/main/src/core/scene/loader.zig"
click node_ecs "https://github.com/weldengine/weld/blob/main/src/core/ecs/world.zig"
click node_jobs "https://github.com/weldengine/weld/blob/main/src/core/jobs/scheduler.zig"
click node_events "https://github.com/weldengine/weld/blob/main/src/core/events/bus.zig"
click node_resources "https://github.com/weldengine/weld/blob/main/src/core/resources/registry.zig"
click node_ipc "https://github.com/weldengine/weld/blob/main/src/core/ipc/transport.zig"
click node_physics "https://github.com/weldengine/weld/blob/main/src/modules/forge/forge_3d/world.zig"
click node_physics_api "https://github.com/weldengine/weld/blob/main/src/modules/forge/api/components.zig"
click node_render_graph "https://github.com/weldengine/weld/blob/main/src/modules/render/render_graph/graph.zig"
click node_gal "https://github.com/weldengine/weld/blob/main/src/modules/render/gal/interface.zig"
click node_vulkan "https://github.com/weldengine/weld/blob/main/src/modules/render/gal/vulkan/device.zig"
click node_asset_pipeline "https://github.com/weldengine/weld/blob/main/src/modules/asset_pipeline/root.zig"
click node_asset_loader "https://github.com/weldengine/weld/blob/main/src/modules/asset_pipeline/loader/Loader.zig"
click node_editor "https://github.com/weldengine/weld/blob/main/src/editor/main.zig"
click node_runtime "https://github.com/weldengine/weld/tree/main/src/runtime"
click node_platform "https://github.com/weldengine/weld/blob/main/src/core/platform/window.zig"

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_etch,node_etch_interp,node_etch_codegen,node_scene_cook toneBlue
class node_scene_codec,node_ecs,node_jobs,node_events,node_resources,node_ipc toneAmber
class node_physics,node_physics_api toneMint
class node_render_graph,node_gal,node_vulkan,node_asset_pipeline,node_asset_loader toneRose
class node_editor,node_runtime,node_platform,node_developer toneIndigo
```

## Components

### Authoring and Cooking

- [Etch Language](https://github.com/weldengine/weld/blob/main/src/etch/parser.zig): `src/etch/parser.zig`
- [Etch Interpreter](https://github.com/weldengine/weld/blob/main/src/etch/interp.zig): `src/etch/interp.zig`
- [Etch Zig Codegen](https://github.com/weldengine/weld/blob/main/src/etch/zig_codegen/lower.zig): `src/etch/zig_codegen/lower.zig`
- [Scene Cooking](https://github.com/weldengine/weld/blob/main/src/etch/scene_cook.zig): `src/etch/scene_cook.zig`

### Engine Core

- [Scene Codec](https://github.com/weldengine/weld/blob/main/src/core/scene/loader.zig): `src/core/scene/loader.zig`
- [ECS World](https://github.com/weldengine/weld/blob/main/src/core/ecs/world.zig): `src/core/ecs/world.zig`
- [Job Scheduler](https://github.com/weldengine/weld/blob/main/src/core/jobs/scheduler.zig): `src/core/jobs/scheduler.zig`
- [Event Bus](https://github.com/weldengine/weld/blob/main/src/core/events/bus.zig): `src/core/events/bus.zig`
- [Resource Store](https://github.com/weldengine/weld/blob/main/src/core/resources/registry.zig): `src/core/resources/registry.zig`
- [IPC Transport](https://github.com/weldengine/weld/blob/main/src/core/ipc/transport.zig): `src/core/ipc/transport.zig`

### Simulation Modules

- [Forge Physics](https://github.com/weldengine/weld/blob/main/src/modules/forge/forge_3d/world.zig): `src/modules/forge/forge_3d/world.zig`
- [Physics API](https://github.com/weldengine/weld/blob/main/src/modules/forge/api/components.zig): `src/modules/forge/api/components.zig`

### Rendering and Assets

- [Render Graph](https://github.com/weldengine/weld/blob/main/src/modules/render/render_graph/graph.zig): `src/modules/render/render_graph/graph.zig`
- [Graphics Abstraction](https://github.com/weldengine/weld/blob/main/src/modules/render/gal/interface.zig): `src/modules/render/gal/interface.zig`
- [Vulkan Backend](https://github.com/weldengine/weld/blob/main/src/modules/render/gal/vulkan/device.zig): `src/modules/render/gal/vulkan/device.zig`
- [Asset Pipeline](https://github.com/weldengine/weld/blob/main/src/modules/asset_pipeline/root.zig): `src/modules/asset_pipeline/root.zig`
- [Asset Loader](https://github.com/weldengine/weld/blob/main/src/modules/asset_pipeline/loader/Loader.zig): `src/modules/asset_pipeline/loader/Loader.zig`

### Editor and Runtime

- [Editor](https://github.com/weldengine/weld/blob/main/src/editor/main.zig): `src/editor/main.zig`
- [Runtime](https://github.com/weldengine/weld/tree/main/src/runtime): `src/runtime`
- [Platform Layer](https://github.com/weldengine/weld/blob/main/src/core/platform/window.zig): `src/core/platform/window.zig`

### Other components

- **Game Developer**

## Connections

- Game Developer → Etch Language: authors scripts (evidence: `README.md`)
- Etch Language → Etch Interpreter: interpreted by (evidence: `README.md`)
- Etch Language → Etch Zig Codegen: compiled to Zig (evidence: `README.md`)
- Etch Language → Scene Cooking: cooked as scenes (evidence: `README.md`)
- Scene Cooking → Scene Codec: produces scene data (evidence: `README.md`)
- Etch Language → ECS World: bridges to ECS (evidence: `README.md`)
- Game Developer → Asset Pipeline: cooks assets (evidence: `README.md`)
- Asset Pipeline → Asset Loader: cooking cache (evidence: `README.md`)
- Game Developer → Editor: uses editor (evidence: `README.md`)
- Editor → IPC Transport: serves runtime (evidence: `README.md`)
- Runtime → IPC Transport: connects by IPC (evidence: `README.md`)
- Editor → Platform Layer: opens window (evidence: `README.md`)
- Editor → Graphics Abstraction: blits via renderer (evidence: `README.md`)
- Graphics Abstraction → Vulkan Backend: Vulkan backend (evidence: `README.md`)
- Physics API → Forge Physics: exposes physics (evidence: `README.md`)
