# zeeesea/gameengine architecture

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

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

## Overview

GameEngine is a lightweight Java 2D engine plus bundled authoring tools. A game developer launches a GameEngine subclass; the frame and scene manager start the loop, forwarding updates and events into the active scene and its managed objects, which handle input, collisions, and drawing. The repository also provides sprite/animation workflows, UI construction and export, and sound-effect synthesis. README documents capabilities beyond the sampled excerpts; those branches are represented at supported directory paths, with uncertain internal wiring omitted.

Main entry points: [`src/main/java/GameEngine/Core/GameEngine.java`](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/GameEngine.java) (Engine API), [`src/main/java/GameEngine/Tools/UIGenerator/UIGenerator.java`](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/UIGenerator/UIGenerator.java) (UI generator), [`src/main/java/GameEngine/Core/gameObject/GameObjectManager.java`](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/gameObject/GameObjectManager.java) (Object manager), [`src/main/java/GameEngine/Tools/MainMenu/MainMenu.java`](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/MainMenu/MainMenu.java) (Tool menu)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Game Runtime"]
  node_engine["Engine API<br/>[GameEngine.java]"]
  node_frame["Window frame"]
  node_scenes["Scene loop<br/>[SceneManager.java]"]
  node_input["Input state<br/>[Input.java]"]
  node_listeners["Input listeners"]
  node_console["Console logging<br/>[Console.java]"]
end

subgraph group_objects["Objects and UI"]
  node_objects_mgr["Object manager"]
  node_gameobject["Game objects<br/>[GameObject.java]"]
  node_colliders["2D colliders"]
  node_ui["UI elements"]
end

subgraph group_assets["Sprite Assets"]
  node_sprite_editor["Sprite editor<br/>[SpriteEditor.java]"]
  node_sprite_mgr["Sprite manager<br/>[SpriteManager.java]"]
  node_animation_mgr["Animation manager"]
  node_animation["Animation runtime<br/>[Animation.java]"]
end

subgraph group_tools["Authoring Tools"]
  node_ui_gen["UI generator<br/>[UIGenerator.java]"]
  node_blueprints["UI blueprints"]
  node_descriptors["UI descriptors"]
  node_exporter["Code exporter<br/>[CodeExporter.java]"]
  node_menu["Tool menu<br/>[MainMenu.java]"]
end

subgraph group_audio["Audio Tools"]
  node_sfx_gen["SFX generator<br/>[SFXGenerator.java]"]
  node_sfx_engine["SFX synthesizer<br/>[SFXEngine.java]"]
end

node_developer(("Game developer"))
node_game["Game subclass"]
node_audio_output(("Audio output"))

node_developer -->|"extends"| node_game
node_game -->|"launches"| node_engine
node_engine -->|"creates"| node_frame
node_frame -->|"starts loop"| node_scenes
node_scenes -->|"updates scene"| node_engine
node_engine -->|"dispatches events"| node_objects_mgr
node_listeners -->|"updates state"| node_input
node_engine -->|"forwards events"| node_input
node_objects_mgr -->|"updates and draws"| node_gameobject
node_objects_mgr -->|"checks overlap"| node_colliders
node_gameobject -->|"reads state"| node_input
node_gameobject -.->|"uses animations"| node_animation
node_sprite_editor -->|"saves sprites"| node_sprite_mgr
node_sprite_editor -->|"edits frames"| node_animation_mgr
node_animation_mgr -->|"reads frames"| node_sprite_mgr
node_frame -->|"loads icon"| node_sprite_mgr
node_menu -.->|"opens tool"| node_sprite_editor
node_menu -.->|"opens tool"| node_ui_gen
node_menu -.->|"opens tool"| node_sfx_gen
node_ui_gen -->|"creates layouts"| node_blueprints
node_ui_gen -->|"uses descriptors"| node_descriptors
node_ui_gen -->|"exports code"| node_exporter
node_blueprints -->|"builds elements"| node_ui
node_ui_gen -->|"adds elements"| node_objects_mgr
node_sfx_gen -->|"configures and plays"| node_sfx_engine
node_sfx_engine -->|"plays samples"| node_audio_output
node_engine -->|"logs events"| node_console
node_scenes -->|"logs loop"| node_console

click node_engine "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/GameEngine.java"
click node_frame "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/GameEngineFrame.java"
click node_scenes "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/scenes/SceneManager.java"
click node_input "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/input/Input.java"
click node_listeners "https://github.com/zeeesea/gameengine/tree/master/src/main/java/GameEngine/Core/input"
click node_objects_mgr "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/gameObject/GameObjectManager.java"
click node_gameobject "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/gameObject/GameObject.java"
click node_colliders "https://github.com/zeeesea/gameengine/tree/master/src/main/java/GameEngine/Core/gameObject/collider"
click node_ui "https://github.com/zeeesea/gameengine/tree/master/src/main/java/GameEngine/Core/gameObject/Obj"
click node_sprite_editor "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/SpriteEditor/SpriteEditor.java"
click node_sprite_mgr "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/SpriteEditor/SpriteManager.java"
click node_animation_mgr "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/SpriteEditor/AnimationManager.java"
click node_animation "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/graphics/Animation.java"
click node_ui_gen "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/UIGenerator/UIGenerator.java"
click node_blueprints "https://github.com/zeeesea/gameengine/tree/master/src/main/java/GameEngine/Tools/UIGenerator/Blueprints"
click node_descriptors "https://github.com/zeeesea/gameengine/tree/master/src/main/java/GameEngine/Tools/UIGenerator/Descriptors"
click node_exporter "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/UIGenerator/CodeExporter.java"
click node_menu "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/MainMenu/MainMenu.java"
click node_sfx_gen "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/SFXGenerator/SFXGenerator.java"
click node_sfx_engine "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/audio/SFXEngine.java"
click node_console "https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/util/Console/Console.java"

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,node_frame,node_scenes,node_input,node_listeners,node_console toneBlue
class node_objects_mgr,node_gameobject,node_colliders,node_ui toneAmber
class node_sprite_editor,node_sprite_mgr,node_animation_mgr,node_animation toneMint
class node_ui_gen,node_blueprints,node_descriptors,node_exporter,node_menu toneRose
class node_sfx_gen,node_sfx_engine,node_developer,node_game,node_audio_output toneIndigo
```

## Components

### Game Runtime

- [Engine API](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/GameEngine.java): `src/main/java/GameEngine/Core/GameEngine.java`
- [Window frame](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/GameEngineFrame.java): `src/main/java/GameEngine/Core/GameEngineFrame.java`
- [Scene loop](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/scenes/SceneManager.java): `src/main/java/GameEngine/Core/scenes/SceneManager.java`
- [Input state](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/input/Input.java): `src/main/java/GameEngine/Core/input/Input.java`
- [Input listeners](https://github.com/zeeesea/gameengine/tree/master/src/main/java/GameEngine/Core/input): `src/main/java/GameEngine/Core/input`
- [Console logging](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/util/Console/Console.java): `src/main/java/GameEngine/Core/util/Console/Console.java`

### Objects and UI

- [Object manager](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/gameObject/GameObjectManager.java): `src/main/java/GameEngine/Core/gameObject/GameObjectManager.java`
- [Game objects](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/gameObject/GameObject.java): `src/main/java/GameEngine/Core/gameObject/GameObject.java`
- [2D colliders](https://github.com/zeeesea/gameengine/tree/master/src/main/java/GameEngine/Core/gameObject/collider): `src/main/java/GameEngine/Core/gameObject/collider`
- [UI elements](https://github.com/zeeesea/gameengine/tree/master/src/main/java/GameEngine/Core/gameObject/Obj): `src/main/java/GameEngine/Core/gameObject/Obj`

### Sprite Assets

- [Sprite editor](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/SpriteEditor/SpriteEditor.java): `src/main/java/GameEngine/Tools/SpriteEditor/SpriteEditor.java`
- [Sprite manager](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/SpriteEditor/SpriteManager.java): `src/main/java/GameEngine/Tools/SpriteEditor/SpriteManager.java`
- [Animation manager](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/SpriteEditor/AnimationManager.java): `src/main/java/GameEngine/Tools/SpriteEditor/AnimationManager.java`
- [Animation runtime](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/graphics/Animation.java): `src/main/java/GameEngine/Core/graphics/Animation.java`

### Authoring Tools

- [UI generator](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/UIGenerator/UIGenerator.java): `src/main/java/GameEngine/Tools/UIGenerator/UIGenerator.java`
- [UI blueprints](https://github.com/zeeesea/gameengine/tree/master/src/main/java/GameEngine/Tools/UIGenerator/Blueprints): `src/main/java/GameEngine/Tools/UIGenerator/Blueprints`
- [UI descriptors](https://github.com/zeeesea/gameengine/tree/master/src/main/java/GameEngine/Tools/UIGenerator/Descriptors): `src/main/java/GameEngine/Tools/UIGenerator/Descriptors`
- [Code exporter](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/UIGenerator/CodeExporter.java): `src/main/java/GameEngine/Tools/UIGenerator/CodeExporter.java`
- [Tool menu](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/MainMenu/MainMenu.java): `src/main/java/GameEngine/Tools/MainMenu/MainMenu.java`

### Audio Tools

- [SFX generator](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Tools/SFXGenerator/SFXGenerator.java): `src/main/java/GameEngine/Tools/SFXGenerator/SFXGenerator.java`
- [SFX synthesizer](https://github.com/zeeesea/gameengine/blob/master/src/main/java/GameEngine/Core/audio/SFXEngine.java): `src/main/java/GameEngine/Core/audio/SFXEngine.java`

### Other components

- **Game developer**
- **Game subclass**
- **Audio output**

## Connections

- Game developer → Game subclass: extends
- Game subclass → Engine API: launches
- Engine API → Window frame: creates
- Window frame → Scene loop: starts loop
- Scene loop → Engine API: updates scene
- Engine API → Object manager: dispatches events
- Input listeners → Input state: updates state
- Engine API → Input state: forwards events
- Object manager → Game objects: updates and draws
- Object manager → 2D colliders: checks overlap
- Game objects → Input state: reads state
- Game objects → Animation runtime: uses animations
- Sprite editor → Sprite manager: saves sprites
- Sprite editor → Animation manager: edits frames
- Animation manager → Sprite manager: reads frames
- Window frame → Sprite manager: loads icon
- Tool menu → Sprite editor: opens tool
- Tool menu → UI generator: opens tool
- Tool menu → SFX generator: opens tool
- UI generator → UI blueprints: creates layouts
- UI generator → UI descriptors: uses descriptors
- UI generator → Code exporter: exports code
- UI blueprints → UI elements: builds elements
- UI generator → Object manager: adds elements
- SFX generator → SFX synthesizer: configures and plays
- SFX synthesizer → Audio output: plays samples
- Engine API → Console logging: logs events
- Scene loop → Console logging: logs loop
