¿Alguna vez has soñado con crear tu propio Monkey Island, Day of the Tentacle o Thimbleweed Park? El género Point & Click vive una segunda edad de oro, y hoy queremos destripar una herramienta diseñada específicamente para traer esa magia de vuelta: PyCAPGE (Python Classic Adventure Point and Click Game Engine).

PyCAPGE es un motor de juego construido sobre Python y Pygame, diseñado por Garba. No es solo una plantilla; es un framework robusto que combina la estética del pixel art clásico con tecnologías de renderizado modernas. A continuación, desglosamos explícitamente qué hace que este motor sea una joya técnica y jugable.

¿Qué es PyCAPGE?

PyCAPGE es un motor open-source modular que separa la lógica del juego (engine) de los datos (escenas, textos, configuración). Su filosofía es clara: permitir a los creadores centrarse en la narrativa y los puzles, gestionando por debajo toda la complejidad del movimiento, colisiones y estados del juego.

El motor utiliza un sistema de renderizado híbrido: mantiene el juego en una resolución nativa «retro» (por defecto 800×638) para preservar el pixel art, pero renderiza la interfaz de usuario y los textos en Alta Resolución (HD) sobre la ventana escalada. Esto garantiza que, aunque tus gráficos sean nostálgicos, los textos sean siempre nítidos y legibles en monitores modernos.

Características Técnicas: Bajo el Capó

Para los desarrolladores y curiosos del código, PyCAPGE ofrece una arquitectura sorprendente:

1. Sistema de Pathfinding A* (A-Star)

Olvídate de personajes que se atascan contra las paredes. PyCAPGE implementa un sistema de navegación inteligente:

  • Máscaras de Navegabilidad: Utiliza imágenes en escala de grises (_bm.jpg) para definir por dónde se puede caminar.

  • Algoritmo A:* Calcula la ruta más corta en tiempo real.

  • Modos Configurables: Soporta cálculo Euclidiano (preciso), Manhattan (rápido) o Diagonal.

  • Obstáculos Dinámicos: Los NPCs y objetos sólidos actualizan el grafo de navegación en tiempo real. Si un personaje bloquea un pasillo, el jugador buscará otra ruta automáticamente.

2. Motor Gráfico con Profundidad y Parallax

El motor no es plano; entiende la profundidad:

  • Escalado Dinámico: Los personajes se escalan automáticamente (zoom in/out) según su posición Y en la pantalla, simulando perspectiva y profundidad.

  • Z-Sorting (Ordenamiento): Renderiza elementos (personajes, objetos, fondo) en el orden correcto para que el jugador pueda caminar «detrás» de una farola o «delante» de una mesa.

  • Parallax Scrolling: Soporta capas de fondo con diferentes velocidades de desplazamiento (parallax_factors), creando una sensación de inmersión y 3D en escenarios 2D (como se ve en la demo de la escena 5).

  • Iluminación Dinámica: Soporta Lightmaps que tintan al personaje según la zona (ej. volverse rojizo cerca de una hoguera).

3. Arquitectura Basada en Datos (YAML)

El motor está totalmente desacoplado del contenido. Toda la localización y definición de objetos reside en archivos .yaml externos:

  • Localización total: Cambia de idioma (Español/Inglés/etc.) en tiempo real sin reiniciar el juego.

  • Textos calientes: Define descripciones, diálogos y nombres de objetos sin tocar el código Python.

4. Sistema de Estados Finito (FSM)

El núcleo (main.py) gestiona el juego mediante una máquina de estados robusta que controla:

  • EXPLORE: Juego libre.

  • DIALOGUE: Sistema de conversación ramificado.

  • CUTSCENE: Cinemáticas scriptadas.

  • MAP: Sistema de viaje rápido.

  • SAVELOAD: Persistencia de datos en JSON.

Características de Juego: La Experiencia del Jugador

PyCAPGE ofrece todas las mecánicas que un fan de los 90 espera, más algunas comodidades modernas:

1. Interfaz SCUMM de 9 Verbos

Recupera la clásica botonera de LucasArts: Mirar, Coger, Usar, Abrir, Cerrar, Empujar, Tirar, Hablar, Dar.

  • Contexto Inteligente: El motor ilumina el verbo sugerido (ej. «Mirar» al pasar sobre un cuadro).

  • Construcción de Frases: Genera frases dinámicas en la barra inferior: «Usar Martillo con Campana».

2. Mecánica «Day of the Tentacle» (Cambio de Personaje)

Esta es una de las características más potentes. El juego permite manejar a múltiples protagonistas (ej. Gilo y Bart):

  • Puedes cambiar de personaje en tiempo real.

  • Cada personaje tiene su propio inventario y habilidades (ej. Bart es fuerte y puede levantar objetos pesados que Gilo no puede).

  • Los personajes no controlados se convierten automáticamente en NPCs con los que puedes interactuar.

3. Sistema de Inventario y Crafting

  • Inventario Visual: Iconos grandes y claros.

  • Combinación de Objetos: Arrastra un objeto sobre otro para crear uno nuevo (ej. Pilas + Linterna = Linterna cargada).

  • Feedback Sonoro: Sonidos específicos al coger, usar o combinar items.

4. Diálogos Ramificados y Cinemáticas

  • Árboles de Diálogo: Conversaciones complejas con opciones que pueden desaparecer una vez leídas («once»: true) o desbloquear nuevas ramas.

  • Cinemáticas Scriptadas: El motor permite crear escenas donde el jugador pierde el control mientras los personajes se mueven, hablan y actúan por guion (CutsceneManager).

5. Calidad de Vida (QoL)

  • Doble Clic: Salida rápida de escenarios al hacer doble clic en una puerta.

  • Mapa de Viaje Rápido: Un sistema visual tipo «Indiana Jones» con líneas rojas trazando la ruta entre localizaciones.

  • Guardado/Cargado: Sistema de Savegames ilimitados con capturas de metadatos (fecha, lugar, personaje activo).

Conclusión

PyCAPGE no es solo un ejercicio de programación; es una carta de amor a las aventuras gráficas. Demuestra cómo Python, a menudo subestimado en el desarrollo de juegos complejos, puede gestionar sistemas avanzados de IA, renderizado y gestión de estados con elegancia.

Si tienes una historia que contar y echas de menos la época dorada de los 90, PyCAPGE pone la tecnología en tus manos. Solo falta tu imaginación.

¿Te animas a crear tu propia aventura?

Descarga

Imágenes y Logos oficiales