# rakib313/game_journey architecture

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

- Interactive diagram: https://gitdiagram.com/rakib313/game_journey
- Repository: https://github.com/rakib313/game_journey

## Overview

Game_Journey is a Java 2D dungeon-crawl game. The player moves through the main world and dungeons, fights pursuing enemies, gathers resources, uses weapons and gates, and can spend resources at shops. The runtime loop dispatches state updates and rendering; world managers populate object collections, while player and mouse input drive gameplay interactions. The README documents shops, resource gathering, health and weapon crates, and special-weapon traversal. Several UI and persistence relationships are only identified by module references, so the graph avoids asserting unsampled calls.

Main entry points: [`src/gameObject/Player.java`](https://github.com/rakib313/game_journey/blob/master/src/gameObject/Player.java) (Player), [`src/worlds/WorldManager.java`](https://github.com/rakib313/game_journey/blob/master/src/worlds/WorldManager.java) (Worlds), [`src/mainGame/Game.java`](https://github.com/rakib313/game_journey/blob/master/src/mainGame/Game.java) (Game loop), [`src/mainGame/GameManager.java`](https://github.com/rakib313/game_journey/blob/master/src/mainGame/GameManager.java) (Game manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Game runtime"]
  node_game["Game loop<br/>[Game.java]"]
  node_manager["Game manager<br/>[GameManager.java]"]
  node_states["Game states<br/>[States.java]"]
end

subgraph group_world["World and entities"]
  node_player["Player<br/>[Player.java]"]
  node_enemies["Enemies<br/>[Enemy.java]"]
  node_worlds["Worlds<br/>[WorldManager.java]"]
  node_objectmanager["Object manager"]
  node_gameobjects["World objects<br/>[GameObject.java]"]
end

subgraph group_interaction["Player interaction"]
  node_projectiles["Weapons<br/>[Axes.java]"]
  node_input["Keyboard and mouse<br/>[MouseManager.java]"]
  node_inventory["Inventory<br/>[Inventory.java]"]
  node_shop["Shop<br/>[ShopUI.java]"]
  node_skills["Skills<br/>[SkillUI.java]"]
end

subgraph group_support["Game support"]
  node_assets["Assets and audio<br/>[Assets.java]"]
  node_save["Save and load<br/>[FileManager.java]"]
end

node_player_actor(("Player"))

node_player_actor -->|"provides input"| node_input
node_input -->|"launches weapons"| node_projectiles
node_input -->|"reads game state"| node_manager
node_game -->|"ticks and renders"| node_states
node_game -->|"creates runtime"| node_manager
node_game -->|"creates worlds"| node_worlds
node_game -->|"creates player"| node_player
node_manager -->|"selects world"| node_worlds
node_worlds -->|"populates objects"| node_objectmanager
node_worlds -->|"creates map entities"| node_gameobjects
node_objectmanager -->|"ticks and renders"| node_gameobjects
node_player -->|"changes world"| node_worlds
node_player -->|"accesses gameplay services"| node_manager
node_player -->|"collides with"| node_enemies
node_projectiles -->|"damages targets"| node_enemies
node_player -->|"opens inventory"| node_inventory
node_player -->|"opens shop"| node_shop
node_player -->|"opens skills"| node_skills
node_player -->|"resets after death"| node_save
node_player -->|"uses animations"| node_assets

click node_player "https://github.com/rakib313/game_journey/blob/master/src/gameObject/Player.java"
click node_enemies "https://github.com/rakib313/game_journey/blob/master/src/gameObject/Enemy.java"
click node_worlds "https://github.com/rakib313/game_journey/blob/master/src/worlds/WorldManager.java"
click node_objectmanager "https://github.com/rakib313/game_journey/blob/master/src/gameObject/GameObjectManager.java"
click node_gameobjects "https://github.com/rakib313/game_journey/blob/master/src/gameObject/GameObject.java"
click node_projectiles "https://github.com/rakib313/game_journey/blob/master/src/gameObject/Axes.java"
click node_input "https://github.com/rakib313/game_journey/blob/master/src/input/MouseManager.java"
click node_inventory "https://github.com/rakib313/game_journey/blob/master/src/ui/Inventory.java"
click node_shop "https://github.com/rakib313/game_journey/blob/master/src/ui/ShopUI.java"
click node_skills "https://github.com/rakib313/game_journey/blob/master/src/ui/SkillUI.java"
click node_game "https://github.com/rakib313/game_journey/blob/master/src/mainGame/Game.java"
click node_manager "https://github.com/rakib313/game_journey/blob/master/src/mainGame/GameManager.java"
click node_states "https://github.com/rakib313/game_journey/blob/master/src/states/States.java"
click node_assets "https://github.com/rakib313/game_journey/blob/master/src/assets/Assets.java"
click node_save "https://github.com/rakib313/game_journey/blob/master/src/utils/FileManager.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_game,node_manager,node_states toneBlue
class node_player,node_enemies,node_worlds,node_objectmanager,node_gameobjects toneAmber
class node_projectiles,node_input,node_inventory,node_shop,node_skills toneMint
class node_assets,node_save toneRose
class node_player_actor toneIndigo
```

## Components

### Game runtime

- [Game loop](https://github.com/rakib313/game_journey/blob/master/src/mainGame/Game.java): `src/mainGame/Game.java`
- [Game manager](https://github.com/rakib313/game_journey/blob/master/src/mainGame/GameManager.java): `src/mainGame/GameManager.java`
- [Game states](https://github.com/rakib313/game_journey/blob/master/src/states/States.java): `src/states/States.java`

### World and entities

- [Player](https://github.com/rakib313/game_journey/blob/master/src/gameObject/Player.java): `src/gameObject/Player.java`
- [Enemies](https://github.com/rakib313/game_journey/blob/master/src/gameObject/Enemy.java): `src/gameObject/Enemy.java`
- [Worlds](https://github.com/rakib313/game_journey/blob/master/src/worlds/WorldManager.java): `src/worlds/WorldManager.java`
- [Object manager](https://github.com/rakib313/game_journey/blob/master/src/gameObject/GameObjectManager.java): `src/gameObject/GameObjectManager.java`
- [World objects](https://github.com/rakib313/game_journey/blob/master/src/gameObject/GameObject.java): `src/gameObject/GameObject.java`

### Player interaction

- [Weapons](https://github.com/rakib313/game_journey/blob/master/src/gameObject/Axes.java): `src/gameObject/Axes.java`
- [Keyboard and mouse](https://github.com/rakib313/game_journey/blob/master/src/input/MouseManager.java): `src/input/MouseManager.java`
- [Inventory](https://github.com/rakib313/game_journey/blob/master/src/ui/Inventory.java): `src/ui/Inventory.java`
- [Shop](https://github.com/rakib313/game_journey/blob/master/src/ui/ShopUI.java): `src/ui/ShopUI.java`
- [Skills](https://github.com/rakib313/game_journey/blob/master/src/ui/SkillUI.java): `src/ui/SkillUI.java`

### Game support

- [Assets and audio](https://github.com/rakib313/game_journey/blob/master/src/assets/Assets.java): `src/assets/Assets.java`
- [Save and load](https://github.com/rakib313/game_journey/blob/master/src/utils/FileManager.java): `src/utils/FileManager.java`

### Other components

- **Player**

## Connections

- Player → Keyboard and mouse: provides input (evidence: `src/input/MouseManager.java`)
- Keyboard and mouse → Weapons: launches weapons (evidence: `src/input/MouseManager.java`)
- Keyboard and mouse → Game manager: reads game state (evidence: `src/input/MouseManager.java`)
- Game loop → Game states: ticks and renders (evidence: `src/mainGame/Game.java`)
- Game loop → Game manager: creates runtime (evidence: `src/mainGame/Game.java`)
- Game loop → Worlds: creates worlds (evidence: `src/mainGame/Game.java`)
- Game loop → Player: creates player (evidence: `src/mainGame/Game.java`)
- Game manager → Worlds: selects world (evidence: `src/mainGame/GameManager.java`)
- Worlds → Object manager: populates objects (evidence: `src/worlds/WorldManager.java`)
- Worlds → World objects: creates map entities (evidence: `src/worlds/WorldManager.java`)
- Object manager → World objects: ticks and renders (evidence: `src/gameObject/GameObjectManager.java`)
- Player → Worlds: changes world (evidence: `src/gameObject/Player.java`)
- Player → Game manager: accesses gameplay services (evidence: `src/gameObject/Player.java`)
- Player → Enemies: collides with (evidence: `src/gameObject/Player.java`)
- Weapons → Enemies: damages targets (evidence: `src/gameObject/Axes.java`)
- Player → Inventory: opens inventory (evidence: `src/gameObject/Player.java`)
- Player → Shop: opens shop (evidence: `src/gameObject/Player.java`)
- Player → Skills: opens skills (evidence: `src/gameObject/Player.java`)
- Player → Save and load: resets after death (evidence: `src/gameObject/Player.java`)
- Player → Assets and audio: uses animations (evidence: `src/gameObject/Player.java`)
