# minhduc7265/int2204-arkanoid-group2 architecture

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

- Interactive diagram: https://gitdiagram.com/minhduc7265/int2204-arkanoid-group2
- Repository: https://github.com/minhduc7265/int2204-arkanoid-group2

## Overview

Arkanoid is a LibGDX desktop game in which the player moves a paddle to bounce a ball, break bricks, collect power-ups, and clear levels while managing limited lives. The principal flow runs from the menu into gameplay, where the world loads a level, updates game objects, resolves collisions, and renders the scene; session progress is saved as player data. The README documents additional screens, animations, resource managers, and sound. Some runtime wiring is described only at package level, so uncertain links are omitted.

Main entry points: [`core/src/main/java/com/game/arkanoid/world/GameWorld.java`](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/world/GameWorld.java) (Game world), [`core/src/main/java/com/game/arkanoid/world/CollisionManager.java`](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/world/CollisionManager.java) (Collision manager), [`core/src/main/java/com/game/arkanoid/screens/ButtonManager.java`](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/screens/ButtonManager.java) (Screen controls), [`core/src/main/java/com/game/arkanoid/model/ItemManager.java`](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/model/ItemManager.java) (Power-ups)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application and screens"]
  node_main["Game entry<br/>[Main.java]"]
  node_screens["Game screens"]
  node_buttons["Screen controls<br/>[ButtonManager.java]"]
end

subgraph group_world["Gameplay world"]
  node_world["Game world<br/>[GameWorld.java]"]
  node_collisionmanager["Collision manager"]
  node_levelloader["Level loader<br/>[LevelLoader.java]"]
end

subgraph group_domain["Game logic and objects"]
  node_collision["Collision engine<br/>[Collision.java]"]
  node_gamemanager["Session state<br/>[GameManager.java]"]
  node_objects["Gameplay objects"]
  node_items["Power-ups<br/>[ItemManager.java]"]
end

subgraph group_data["Levels and progress"]
  node_leveldata["Level definitions<br/>[LevelInfo.java]"]
  node_playerdata["Player save data<br/>[PlayerData.java]"]
  node_datamanager["Save manager"]
end

subgraph group_output["Rendering and audio"]
  node_renderer["Scene renderer"]
  node_animations["Animations"]
  node_textures["Texture resources"]
  node_sound["Sound effects<br/>[SoundManager.java]"]
  node_music["Background music<br/>[MusicManager.java]"]
end

node_player(("Player"))
node_savefile[("Local save file")]
node_bass{{"BASS library"}}

node_player -->|"presses controls"| node_buttons
node_main -->|"starts menu"| node_screens
node_buttons -->|"switches screens"| node_screens
node_screens -->|"runs gameplay"| node_world
node_world -->|"loads levels"| node_levelloader
node_levelloader -->|"reads layouts"| node_leveldata
node_world -->|"checks collisions"| node_collisionmanager
node_collisionmanager -->|"tests impacts"| node_collision
node_collisionmanager -->|"updates hit objects"| node_objects
node_collisionmanager -->|"triggers effects"| node_animations
node_collisionmanager -->|"plays effects"| node_sound
node_world -->|"updates objects"| node_objects
node_world -->|"manages power-ups"| node_items
node_items -->|"applies effects"| node_objects
node_items -->|"triggers effects"| node_animations
node_items -->|"plays effects"| node_sound
node_world -->|"updates session"| node_gamemanager
node_gamemanager -->|"loads and saves"| node_datamanager
node_datamanager -->|"reads and writes"| node_savefile
node_datamanager -->|"serializes"| node_playerdata
node_world -->|"renders scene"| node_renderer
node_renderer -->|"gets textures"| node_textures
node_renderer -->|"draws animations"| node_animations
node_buttons -->|"plays clicks"| node_sound
node_buttons -->|"controls music"| node_music
node_music -.->|"calls native audio"| node_bass

click node_main "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/Main.java"
click node_screens "https://github.com/minhduc7265/int2204-arkanoid-group2/tree/master/core/src/main/java/com/game/arkanoid/screens"
click node_buttons "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/screens/ButtonManager.java"
click node_world "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/world/GameWorld.java"
click node_collisionmanager "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/world/CollisionManager.java"
click node_levelloader "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/world/LevelLoader.java"
click node_collision "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/engine/Collision.java"
click node_gamemanager "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/engine/GameManager.java"
click node_objects "https://github.com/minhduc7265/int2204-arkanoid-group2/tree/master/core/src/main/java/com/game/arkanoid/model"
click node_items "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/model/ItemManager.java"
click node_leveldata "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/leveldata/LevelInfo.java"
click node_playerdata "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/leveldata/PlayerData.java"
click node_datamanager "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/leveldata/GameDataManager.java"
click node_renderer "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/output/MasterRenderer.java"
click node_animations "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/output/AnimationFactory.java"
click node_textures "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/output/TextureManager.java"
click node_sound "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/output/SoundManager.java"
click node_music "https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/output/MusicManager.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_main,node_screens,node_buttons toneBlue
class node_world,node_collisionmanager,node_levelloader,node_savefile toneAmber
class node_collision,node_gamemanager,node_objects,node_items toneMint
class node_leveldata,node_playerdata,node_datamanager toneRose
class node_renderer,node_animations,node_textures,node_sound,node_music,node_player,node_bass toneIndigo
```

## Components

### Application and screens

- [Game entry](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/Main.java): `core/src/main/java/com/game/arkanoid/Main.java`
- [Game screens](https://github.com/minhduc7265/int2204-arkanoid-group2/tree/master/core/src/main/java/com/game/arkanoid/screens): `core/src/main/java/com/game/arkanoid/screens`
- [Screen controls](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/screens/ButtonManager.java): `core/src/main/java/com/game/arkanoid/screens/ButtonManager.java`

### Gameplay world

- [Game world](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/world/GameWorld.java): `core/src/main/java/com/game/arkanoid/world/GameWorld.java`
- [Collision manager](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/world/CollisionManager.java): `core/src/main/java/com/game/arkanoid/world/CollisionManager.java`
- [Level loader](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/world/LevelLoader.java): `core/src/main/java/com/game/arkanoid/world/LevelLoader.java`

### Game logic and objects

- [Collision engine](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/engine/Collision.java): `core/src/main/java/com/game/arkanoid/engine/Collision.java`
- [Session state](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/engine/GameManager.java): `core/src/main/java/com/game/arkanoid/engine/GameManager.java`
- [Gameplay objects](https://github.com/minhduc7265/int2204-arkanoid-group2/tree/master/core/src/main/java/com/game/arkanoid/model): `core/src/main/java/com/game/arkanoid/model`
- [Power-ups](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/model/ItemManager.java): `core/src/main/java/com/game/arkanoid/model/ItemManager.java`

### Levels and progress

- [Level definitions](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/leveldata/LevelInfo.java): `core/src/main/java/com/game/arkanoid/leveldata/LevelInfo.java`
- [Player save data](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/leveldata/PlayerData.java): `core/src/main/java/com/game/arkanoid/leveldata/PlayerData.java`
- [Save manager](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/leveldata/GameDataManager.java): `core/src/main/java/com/game/arkanoid/leveldata/GameDataManager.java`

### Rendering and audio

- [Scene renderer](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/output/MasterRenderer.java): `core/src/main/java/com/game/arkanoid/output/MasterRenderer.java`
- [Animations](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/output/AnimationFactory.java): `core/src/main/java/com/game/arkanoid/output/AnimationFactory.java`
- [Texture resources](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/output/TextureManager.java): `core/src/main/java/com/game/arkanoid/output/TextureManager.java`
- [Sound effects](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/output/SoundManager.java): `core/src/main/java/com/game/arkanoid/output/SoundManager.java`
- [Background music](https://github.com/minhduc7265/int2204-arkanoid-group2/blob/master/core/src/main/java/com/game/arkanoid/output/MusicManager.java): `core/src/main/java/com/game/arkanoid/output/MusicManager.java`

### Other components

- **Player**
- **Local save file**
- **BASS library**

## Connections

- Player → Screen controls: presses controls
- Game entry → Game screens: starts menu
- Screen controls → Game screens: switches screens
- Game screens → Game world: runs gameplay
- Game world → Level loader: loads levels
- Level loader → Level definitions: reads layouts
- Game world → Collision manager: checks collisions
- Collision manager → Collision engine: tests impacts
- Collision manager → Gameplay objects: updates hit objects
- Collision manager → Animations: triggers effects
- Collision manager → Sound effects: plays effects
- Game world → Gameplay objects: updates objects
- Game world → Power-ups: manages power-ups
- Power-ups → Gameplay objects: applies effects
- Power-ups → Animations: triggers effects
- Power-ups → Sound effects: plays effects
- Game world → Session state: updates session
- Session state → Save manager: loads and saves
- Save manager → Local save file: reads and writes
- Save manager → Player save data: serializes
- Game world → Scene renderer: renders scene
- Scene renderer → Texture resources: gets textures
- Scene renderer → Animations: draws animations
- Screen controls → Sound effects: plays clicks
- Screen controls → Background music: controls music
- Background music → BASS library: calls native audio
