How alyare07/practicagamerework works
Purpose and Entry Points
This is a desktop Java 2D game engine/application with playable combat, maps, inventory, UI, sound, and an integrated map editor. Startup and top-level execution are centered on src/principal/Main.java, with primary loop/controller variants in src/principal/GestorPrincipal.java and src/principal/GestorPrincipalMultiHilo.java.
Runtime Shell and State Transitions
A state-machine layer selects application modes: gameplay, menus, loading screens, and editor. src/principal/maquinaestado/GestorEstados.java coordinates transitions; gameplay is represented by src/principal/maquinaestado/estados/GestorJuego.java and src/principal/maquinaestado/estados/GestorPartida.java. Menu-driven entry paths live under src/principal/maquinaestado/estados/menu/MenuPrincipal.java, while map loading is staged through src/principal/maquinaestado/estados/pantallaCarga/GestorCargaMapa.java.
World, Scenarios, and Persistence Boundary
The map domain models worlds, terrain, tiles, loaded maps, spawns, and teleport areas. Core abstractions are src/principal/mapa/Mundo.java, src/principal/mapa/Tile.java, and src/principal/mapa/mapas/MapaManager.java. Scenario ingestion is isolated in src/principal/mapa/escenario/EscenarioLoader.java, consuming scenario files such as escenario1.json and mundos/escenario1.esc; saved/generated map artifacts are stored under mundos/. Teleport transitions are modeled in src/principal/mapa/escenario/tps/PuertaTP.java.
Entity, Combat, and Item Model
src/principal/entes/Ente.java is the likely common entity boundary, specialized into player/creatures, world objects, particles, and projectiles. Player and enemy gameplay flows pass through src/principal/entes/criaturas/Jugador.java and src/principal/entes/criaturas/enemigos/Enemigo.java. Attacks produce projectile/melee objects such as src/principal/entes/proyectil/Proyectil.java and src/principal/entes/proyectil/GolpeMele.java; weapons and consumables are represented by src/principal/entes/objetos/items/armas/Arma.java and src/principal/entes/objetos/items/Consumible.java. Inventory/equipment is a separate UI-facing aggregate rooted at src/principal/inventario/Inventario.java.
Update, Input, Events, and AI
The main runtime likely repeatedly gathers keyboard/mouse input, updates the active state and world entities, resolves events/collisions, then renders. Input adapters are src/principal/controles/Teclado.java and src/principal/controles/Raton.java. Gameplay triggers are represented by src/principal/eventos/Evento.java and specialized tile/entity events. Enemy navigation is a distinct algorithm boundary using A* and Dijkstra implementations in src/principal/ia/aEstrella/AEstrella.java and src/principal/ia/dijkstra/DijkstraRework.java.
Rendering, Camera, UI, and Assets
Native Java graphics are wrapped by src/principal/graficos/Ventana.java and src/principal/graficos/SuperficieDibujo.java. Map/entity rendering and camera clipping are separated in src/principal/mapa/renderEntidades/MapRender.java and src/principal/mapa/renderEntidades/camara/Camara.java. HUD/UI is managed by src/principal/igu/MotorIGU.java, including health/stamina bars. Sprite animation is organized around src/principal/animaciones/Animacion.java and player-specific animation definitions.
Assets are local filesystem resources: images under recursos/, sounds under sonidos/, and MP3 playback utilities in src/principal/utilidades/SonidoMP3.java. External JAR dependencies are bundled locally: JSON Simple for scenario/data parsing (lib/json-simple-1.1.1.jar) and Jaco MP3 player (lib/jaco-mp3-player-0.9.3.jar). No network service or server infrastructure is evident.
Editor and Authoring Flow
The application includes an in-process map editor, entered as a state and operating on the same world/tile model used by gameplay. Its core is src/principal/maquinaestado/estados/editor/EditorMapa.java, with editable world representation in src/principal/maquinaestado/estados/editor/MundoEditor.java and palette selection via src/principal/maquinaestado/estados/editor/Paleta.java. This creates a key boundary between authoring/saving map data and the loader-driven runtime map flow.
Main entry points: GestorEstados.java State manager · GestorJuego.java Game session · GestorPrincipal.java Main loop · EscenarioLoader.java Scenario loader
Components 24
Runtime & States
- Application entry
src/principal/Main.java - Main loop · Supports single- and multi-threaded loop variants.
src/principal/GestorPrincipal.java - State manager
src/principal/maquinaestado/GestorEstados.java - Main menu
src/principal/maquinaestado/estados/menu/MenuPrincipal.java - Game session · Coordinates game and match state execution.
src/principal/maquinaestado/estados/GestorJuego.java - Input adapters
src/principal/controles/Teclado.java
World & Data
- Map loading
src/principal/maquinaestado/estados/pantallaCarga/GestorCargaMapa.java - Scenario loader · Parses scenario definitions into runtime maps.
src/principal/mapa/escenario/EscenarioLoader.java - Map manager
src/principal/mapa/mapas/MapaManager.java - World & tiles · Shared terrain, tile, spawn, and teleport model.
src/principal/mapa/Mundo.java - Map artifacts · Scenario and generated map files.
Gameplay Model
- Entities · Base for creatures, objects, particles, and projectiles.
src/principal/entes/Ente.java - Player & combat · Players, enemies, weapons, consumables, and attacks.
src/principal/entes/criaturas/Jugador.java - Inventory
src/principal/inventario/Inventario.java - Enemy pathfinding · A* and Dijkstra drive enemy navigation.
src/principal/ia/aEstrella/AEstrella.java - Events & collisions
src/principal/eventos/Evento.java
Presentation
- Map renderer & camera · Draws world and entities with camera clipping.
src/principal/mapa/renderEntidades/MapRender.java - Window surface
src/principal/graficos/Ventana.java - HUD & UI
src/principal/igu/MotorIGU.java - Sound playback
src/principal/utilidades/SonidoMP3.java - Images & sounds
Map Authoring
- Map editor · In-process authoring mode sharing the game world model.
src/principal/maquinaestado/estados/editor/EditorMapa.java - Editable world
src/principal/maquinaestado/estados/editor/MundoEditor.java - Tile palette
src/principal/maquinaestado/estados/editor/Paleta.java
Connections 26
- Application entry → Main loop: starts
- Main loop → State manager: updates active state
- Input adapters → Main loop: input
- State manager → Main menu: menu mode
- State manager → Game session: gameplay mode
- State manager → Map loading: loading mode
- State manager → Map editor: editor mode
- Map loading → Scenario loader: loads
- Scenario loader → Map artifacts: reads
- Scenario loader → Map manager: builds
- Map manager → World & tiles: manages
- Game session → Map manager: runs in
- Game session → Entities: updates
- Entities → Player & combat: specializes
- Player & combat → Inventory: uses items
- Enemy pathfinding → World & tiles: navigates
- Game session → Events & collisions: resolves
- Main loop → Map renderer & camera: renders
- Map renderer & camera → Window surface: draws to
- HUD & UI → Window surface: overlays
- Game session → HUD & UI: HUD state
- Sound playback → Images & sounds: plays
- Map editor → Editable world: edits
- Editable world → World & tiles: shares model
- Tile palette → Editable world: selects tiles
- Map editor → Map artifacts: saves maps