How c-h-a-n-a/vanilla-2d-rpg-engine works
This is a Java 2D RPG: the player moves through maps, interacts with NPCs or nearby monsters, and can enter turn-based battles. The runtime starts a window and loop, updates central game state, then renders the active mode. The map/entity branch covers collision, camera, tiles and NPC dialogue; the battle branch covers party setup, command selection, round resolution and battle display. Relationships are based on the supplied excerpts and SOURCE INDEX references; several implementation details are unsampled, so uncertain links are omitted.
Main entry points: Game.java Game State · BattleState.java Battle State · GameRenderer.java Game Renderer · Main.java Application Entry
Components 27
Runtime and Rendering
- Application Entry
src/game/Main.java - Game Loop
src/game/core/GameLoop.java - Game Canvas
src/game/core/GameCanvas.java - Game Renderer
src/game/render/GameRenderer.java - Entity Renderer
src/game/render/EntityRenderer.java - Dialogue Renderer
src/game/render/DialogueRenderer.java - Battle Renderer
src/game/render/BattleRenderer.java - Debug Overlay
src/game/render/DebugOverlay.java
World and Entities
- World Entity
src/game/entity/Entity.java - NPC
src/game/entity/Npc.java - Game Map
src/game/world/GameMap.java - Map Definitions
src/game/world/Maps.java - Tile Map
src/game/world/TileMap.java - Tile Manager
src/game/tile/TileManager.java - Camera
src/game/world/Camera.java
Interaction and State
- Keyboard Input
src/game/input/KeyboardInput.java - Game State
src/game/state/Game.java - Dialogue Manager
src/game/state/DialogueManager.java - Battle Controller
src/game/state/BattleController.java
Battle System
- Battle Party
src/game/battle/BattleParty.java - Battle Monster
src/game/battle/BattleMonster.java - Battle State
src/game/battle/BattleState.java - Battle Factory
src/game/battle/BattleFactory.java - Turn Manager
src/game/battle/BattleTurnManager.java - Enemy AI
src/game/battle/EnemyAI.java - Battle Moves
src/game/battle/BattleMove.java
Other components
- Player
Connections 41
- Player → Application Entry: starts
src/game/Main.java - Application Entry → Game Loop: starts
src/game/Main.java - Application Entry → Game Canvas: creates
src/game/Main.java - Application Entry → Keyboard Input: registers
src/game/Main.java - Game Loop → Game State: updates
src/game/core/GameLoop.java - Game Loop → Game Canvas: renders through
src/game/core/GameLoop.java - Game Canvas → Game Renderer: delegates rendering
src/game/core/GameCanvas.java - Game Renderer → Entity Renderer: renders entities
src/game/render/GameRenderer.java - Game Renderer → Dialogue Renderer: renders dialogue
src/game/render/GameRenderer.java - Game Renderer → Battle Renderer: renders battle
src/game/render/GameRenderer.java - Game Renderer → Debug Overlay: renders overlay
src/game/render/GameRenderer.java - Game State → Keyboard Input: reads controls
src/game/state/Game.java - Game State → Game Map: updates world
src/game/state/Game.java - Game State → Dialogue Manager: manages dialogue
src/game/state/Game.java - Game State → Battle Factory: creates encounters
src/game/state/Game.java - Game State → Battle State: creates battle state
src/game/state/Game.java - Game State → Battle Controller: creates controller
src/game/state/Game.java - Game State → Battle Party: uses party
src/game/state/Game.java - Game State → Camera: updates camera
src/game/state/Game.java - Game State → Tile Manager: owns manager
src/game/state/Game.java - Map Definitions → Tile Map: builds maps
src/game/world/Maps.java - Map Definitions → Tile Manager: loads tiles
src/game/world/Maps.java - Tile Map → Game Map: implements
src/game/world/TileMap.java - World Entity → Game Map: checks collision
src/game/entity/Entity.java - NPC → World Entity: extends
src/game/entity/Npc.java - NPC → Game Map: moves on
src/game/entity/Npc.java - Dialogue Manager → NPC: reads dialogue
src/game/state/DialogueManager.java - Battle Controller → Keyboard Input: consumes keys
src/game/state/BattleController.java - Battle Controller → Battle State: issues commands
src/game/state/BattleController.java - Battle State → Battle Party: resolves party
src/game/battle/BattleState.java - Battle State → Enemy AI: requests enemy choices
src/game/battle/BattleState.java - Battle State → Turn Manager: orders actions
src/game/battle/BattleState.java - Battle State → Battle Monster: applies damage
src/game/battle/BattleState.java - Battle Monster → Battle Moves: holds moves
src/game/battle/BattleMonster.java - Battle Party → Battle Monster: stores members
src/game/battle/BattleParty.java - Battle Factory → Battle Party: builds party
src/game/battle/BattleFactory.java - Battle Factory → Battle Monster: creates monsters
src/game/battle/BattleFactory.java - Battle Renderer → Battle Controller: reads menu state
src/game/render/BattleRenderer.java - Battle Renderer → Battle State: reads battle
src/game/render/BattleRenderer.java - Entity Renderer → Camera: uses camera
src/game/render/EntityRenderer.java - Dialogue Renderer → Dialogue Manager: renders state
src/game/render/DialogueRenderer.java