# victor-lee-123/2dcustomgameengine-and-game-project architecture

> Architecture diagram of the GitHub repository victor-lee-123/2dcustomgameengine-and-game-project, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/victor-lee-123/2dcustomgameengine-and-game-project
- Repository: https://github.com/victor-lee-123/2dcustomgameengine-and-game-project

## Overview

This repository combines a custom 2D ECS game engine/editor with the Corvaders game and its authored assets. The main workflow is an editor user creating and configuring entities, managing assets, and previewing gameplay; a player can also launch the packaged game. The sampled code shows graphics setup, window/scene handling, animation updates, and timeline behavior registration. Most editor, ECS, serialization, and game-runtime implementation files are not present in the supplied source tree, so those connections are left unverified rather than inferred.

Main entry points: [`Game/Corvaders.exe`](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/Game/Corvaders.exe) (Game executable), [`SourceCodes/Graphics.cpp`](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/Graphics.cpp) (Editor and viewport), [`SourceCodes/TimelineBehavior.h`](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/TimelineBehavior.h) (Timeline behaviors), [`Engine/Release/Engine.exe`](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/Engine/Release/Engine.exe) (Engine executable)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_editor["Engine editor"]
  node_graphics_editor["Editor and viewport<br/>[Graphics.cpp]"]
  node_entity_authoring["Entity authoring"]
  node_properties["Entity properties<br/>[Graphics.cpp]"]
  node_serialization["Serialization and files"]
  node_asset_management["Asset management"]
end

subgraph group_runtime["Engine runtime"]
  node_ecs_graphics["ECS graphics<br/>[Graphics.cpp]"]
  node_window_scene["Window and scenes"]
  node_shader_programs["Shader programs<br/>[GraphicsShader.cpp]"]
  node_animation["Sprite animation"]
  node_timeline_system["Timeline system<br/>[TimelineSystem.cpp]"]
  node_timeline_behaviors["Timeline behaviors<br/>[TimelineBehavior.h]"]
end

subgraph group_content["Game content"]
  node_game_scenes["Game scenes"]
  node_game_prefabs["Entity prefabs"]
  node_game_assets["Game assets"]
end

subgraph group_delivery["Packaged apps"]
  node_engine_app["Engine executable<br/>[Engine.exe]"]
  node_game_app["Game executable<br/>[Corvaders.exe]"]
end

node_editor_user(("Editor user"))
node_player(("Player"))

node_editor_user -->|"launches"| node_engine_app
node_player -->|"launches"| node_game_app
node_engine_app -.->|"provides editor"| node_graphics_editor
node_editor_user -->|"creates entities"| node_entity_authoring
node_editor_user -->|"edits properties"| node_properties
node_editor_user -->|"manages assets"| node_asset_management
node_editor_user -->|"saves or opens"| node_serialization
node_editor_user -->|"previews gameplay"| node_graphics_editor
node_graphics_editor -->|"registers components"| node_ecs_graphics
node_window_scene -->|"transitions to"| node_game_scenes
node_animation -.->|"updates render state"| node_ecs_graphics
node_timeline_behaviors -->|"registers behaviors"| node_timeline_system
node_timeline_behaviors -->|"loads prefab"| node_game_prefabs
node_game_app -.->|"loads scenes"| node_game_scenes
node_game_app -.->|"uses content"| node_game_assets
node_ecs_graphics -.->|"renders with"| node_shader_programs

click node_engine_app "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/Engine/Release/Engine.exe"
click node_game_app "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/Game/Corvaders.exe"
click node_graphics_editor "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/Graphics.cpp"
click node_entity_authoring "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/tree/main/SourceCodes"
click node_properties "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/Graphics.cpp"
click node_serialization "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/tree/main/SourceCodes"
click node_asset_management "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/tree/main/SourceCodes"
click node_ecs_graphics "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/Graphics.cpp"
click node_window_scene "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/GraphicsWindows.cpp"
click node_shader_programs "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/GraphicsShader.cpp"
click node_animation "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/AnimationSystem.cpp"
click node_timeline_system "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/TimelineSystem.cpp"
click node_timeline_behaviors "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/TimelineBehavior.h"
click node_game_scenes "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/tree/main/Game/Assets/Scene"
click node_game_prefabs "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/tree/main/Game/Assets/Prefabs"
click node_game_assets "https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/tree/main/Game/Assets"

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_graphics_editor,node_entity_authoring,node_properties,node_serialization,node_asset_management,node_editor_user toneBlue
class node_ecs_graphics,node_window_scene,node_shader_programs,node_animation,node_timeline_system,node_timeline_behaviors toneAmber
class node_game_scenes,node_game_prefabs,node_game_assets toneMint
class node_engine_app,node_game_app toneRose
class node_player toneIndigo
```

## Components

### Engine editor

- [Editor and viewport](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/Graphics.cpp): `SourceCodes/Graphics.cpp`
- [Entity authoring](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/tree/main/SourceCodes): `SourceCodes`
- [Entity properties](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/Graphics.cpp): `SourceCodes/Graphics.cpp`
- [Serialization and files](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/tree/main/SourceCodes): `SourceCodes`
- [Asset management](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/tree/main/SourceCodes): `SourceCodes`

### Engine runtime

- [ECS graphics](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/Graphics.cpp): `SourceCodes/Graphics.cpp`
- [Window and scenes](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/GraphicsWindows.cpp): `SourceCodes/GraphicsWindows.cpp`
- [Shader programs](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/GraphicsShader.cpp): `SourceCodes/GraphicsShader.cpp`
- [Sprite animation](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/AnimationSystem.cpp): `SourceCodes/AnimationSystem.cpp`
- [Timeline system](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/TimelineSystem.cpp): `SourceCodes/TimelineSystem.cpp`
- [Timeline behaviors](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/SourceCodes/TimelineBehavior.h): `SourceCodes/TimelineBehavior.h`

### Game content

- [Game scenes](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/tree/main/Game/Assets/Scene): `Game/Assets/Scene`
- [Entity prefabs](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/tree/main/Game/Assets/Prefabs): `Game/Assets/Prefabs`
- [Game assets](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/tree/main/Game/Assets): `Game/Assets`

### Packaged apps

- [Engine executable](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/Engine/Release/Engine.exe): `Engine/Release/Engine.exe`
- [Game executable](https://github.com/victor-lee-123/2dcustomgameengine-and-game-project/blob/main/Game/Corvaders.exe): `Game/Corvaders.exe`

### Other components

- **Editor user**
- **Player**

## Connections

- Editor user → Engine executable: launches (evidence: `README.md`)
- Player → Game executable: launches (evidence: `README.md`)
- Engine executable → Editor and viewport: provides editor
- Editor user → Entity authoring: creates entities (evidence: `README.md`)
- Editor user → Entity properties: edits properties (evidence: `README.md`)
- Editor user → Asset management: manages assets (evidence: `README.md`)
- Editor user → Serialization and files: saves or opens (evidence: `README.md`)
- Editor user → Editor and viewport: previews gameplay (evidence: `README.md`)
- Editor and viewport → ECS graphics: registers components (evidence: `SourceCodes/Graphics.cpp`)
- Window and scenes → Game scenes: transitions to (evidence: `SourceCodes/GraphicsWindows.cpp`)
- Sprite animation → ECS graphics: updates render state
- Timeline behaviors → Timeline system: registers behaviors (evidence: `SourceCodes/TimelineBehavior.h`)
- Timeline behaviors → Entity prefabs: loads prefab (evidence: `SourceCodes/TimelineBehavior.h`)
- Game executable → Game scenes: loads scenes
- Game executable → Game assets: uses content
- ECS graphics → Shader programs: renders with
