VisiΓ³n General de la Arquitectura
El juego sigue una arquitectura modular basada en managers que separa las responsabilidades y promueve la mantenibilidad. El sistema estΓ‘ construido alrededor del concepto de managers especializados que manejan diferentes aspectos del juego.
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β Game Manager ββββββ State Manager ββββββ Tutorial Managerβ β (Coordinador) β β (Flujo Juego) β β (Aprendizaje) β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β β β βΌ βΌ βΌ βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β Entity Manager β βCollision Managerβ β UI Manager β β (Entidades) β β (FΓsica) β β (Interfaz) β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β β β βΌ βΌ βΌ βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β Level Manager β β Firebase Managerβ β Sound Manager β β (Niveles) β β (Datos Nube) β β (Audio) β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
Componentes Principales
1. Game Manager (src/game/game_manager.py)
PropΓ³sito: Coordinador central que orquesta todos los sistemas del juego.
Responsabilidades:
- EjecuciΓ³n del bucle principal del juego
- CoordinaciΓ³n de managers
- DelegaciΓ³n del manejo de eventos
- CoordinaciΓ³n del renderizado
def run(self): """Bucle principal del juego""" while self.running: self.handle_events() self.update() self.render() self.clock.tick(self.config.FPS) def handle_events(self): """Delega eventos a los managers apropiados""" def update(self): """Actualiza todos los sistemas del juego""" def render(self): """Renderiza todos los elementos visuales"""
2. Entity Manager (src/managers/entity_manager.py)
PropΓ³sito: Gestiona todas las entidades del juego (jugador, enemigos, coleccionables, proyectiles).
Responsabilidades:
- GestiΓ³n del ciclo de vida de entidades
- Control de spawn y timing
- Actualizaciones e interacciones de entidades
- CoordinaciΓ³n del renderizado
class EntityManager: def __init__(self, config): self.player = None self.enemies = [] self.collectibles = [] self.projectiles = [] # Control de spawn self.spawn_timer = 0 self.monster_spawn_timer = 0 self.monsters_spawned = 0
3. Game State Manager (src/managers/game_state_manager.py)
PropΓ³sito: Gestiona los estados del juego y las transiciones.
Estados:
-
MENU
- MenΓΊ principal -
TUTORIAL
- Modo tutorial -
PLAYING
- Gameplay activo -
PAUSED
- Juego pausado -
SHOP
- Tienda del juego -
GAME_OVER
- Pantalla de game over -
LEVEL_COMPLETE
- Completar nivel
def set_state(self, new_state): """TransiciΓ³n segura de estado con validaciΓ³n""" def is_playing(self): """Verifica si estΓ‘ en estados de gameplay activo""" return self.state in ["PLAYING", "TUTORIAL"]
Sistema de Entidades
JerarquΓa de Entidades
Entity (Base) βββ Player β βββ Sistema de Movimiento β βββ Sistema de AnimaciΓ³n β βββ Sistema de Inventario βββ Enemy β βββ Barrel (Dirigido por IA) β βββ Monster (MΓ‘quina de estados) βββ Collectible β βββ Star (Valores de puntos: 10, 20, 50) βββ Projectile βββ Banana (Explosivo)
Sistema del Jugador (src/entities/player.py)
CaracterΓsticas:
- AnimaciΓ³n basada en sprites (12 frames para secuencia de salto)
- Movimiento basado en fΓsica
- GestiΓ³n de inventario (bananas, vidas, puntuaciΓ³n)
- Manejo de entrada
def update_animation(self): """Maneja la animaciΓ³n de sprites basada en el estado""" if not self.on_ground and self.sprites['jump']: # Reproduce secuencia de animaciΓ³n de salto if not self.is_jumping_animation: self.is_jumping_animation = True self.jump_frame = 0
Arquitectura de IA
Sistema de IA HΓbrido
El juego implementa un sofisticado sistema de IA que combina mΓΊltiples enfoques:
- Capa de DecisiΓ³n Primaria: LΓ³gica basada en reglas para comportamiento confiable
- Capa de ValidaciΓ³n: Q-Learning para refinamiento de comportamiento
- Capa de Seguridad: Mecanismos anti-atasco y de respaldo
def barrel_movement(self, platforms, player_rect=None): # 1. DecisiΓ³n primaria basada en reglas primary_action = self.decide_primary_action(dx, dy, current_platform, player_platform) # 2. ValidaciΓ³n Q-Learning if hasattr(self, 'ai_agent'): q_action = self.ai_agent.choose_action(state) if self.should_override_action(primary_action, q_action, dx, dy): primary_action = q_action # 3. Ejecutar decisiΓ³n self.execute_action_decision(primary_action, current_platform, dx)
GestiΓ³n de Datos
IntegraciΓ³n con Firebase (src/managers/firebase_manager.py)
Servicios Utilizados:
- Realtime Database: Leaderboards y guardados en la nube
- Authentication: GestiΓ³n de usuarios
- REST API: ComunicaciΓ³n HTTP directa (sin SDK)
ConclusiΓ³n
Esta arquitectura proporciona una base sΓ³lida para un juego mantenible, extensible y de alto rendimiento, manteniendo una separaciΓ³n limpia de responsabilidades y un manejo robusto de errores. El patrΓ³n de managers permite una fΓ‘cil extensiΓ³n y modificaciΓ³n de funcionalidades sin afectar otros sistemas.