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.