Descripción general #
Spooky Skeleton es un juego de plataformas 2D desarrollado con C++ y SDL. El juego presenta a un esqueleto protagonista que debe atravesar dos niveles de temática terrorífica: una cueva subterránea y el bosque exterior.
Repositorio de GitHubMis contribuciones individuales #
- Sistema de movimiento del jugador (incluyendo lógica de salto y aceleración personalizada de “deslizamiento sobre hielo”).
- Comportamiento de enemigos terrestres.
- Implementación del algoritmo A* de pathfinding para enemigos.
- Carga de mapa y animaciones usando el formato Tiled (.tmx).
- Implementación del sistema de UI, totalmente data-driven y cargado desde XML.
Sobre el juego #
Objetivo Llegar al final de cada nivel evitando o derrotando a los enemigos y recogiendo todas las monedas.
Controles
- ESPACIO – Saltar
- FLECHAS IZQUIERDA / DERECHA – Moverse
- Q – Atacar
- ESC – Abrir menú
Características destacadas #
❄️ Mecánica de plataforma de hielo #
Las baldosas de hielo reducen la fricción, haciendo que el jugador se deslice. Esto requirió ajustes en la lógica de aceleración y desaceleración.
🧟♂️ Enemigos y combate #
El jugador puede atacar y derrotar a los zombis.
🧩 UI basada en datos #
Todos los elementos de la UI se cargan desde archivos XML, permitiendo cambios de diseño flexibles sin modificar el código fuente.
Subsistemas principales #
El juego está estructurado en torno a una arquitectura modular.
El módulo principal de la aplicación (j1App.cpp) gestiona el ciclo de vida de todos los demás módulos llamando a métodos de clase base compartidos:
AwakePreUpdateUpdatePostUpdateCleanUp
Fábrica de entidades #
Se utiliza un patrón factoría para crear y gestionar todas las entidades del juego, mejorando tanto la organización como el rendimiento.
Módulo de UI #
El sistema de UI está completamente desacoplado de la lógica de gameplay. Gestiona eventos de forma independiente, permitiendo una separación clara entre la interfaz y los sistemas principales.
Datos basados en XML #
Los mapas, animaciones, texturas, rutas de archivo y datos de la UI se cargan desde XML. Esto mejora la legibilidad, facilita la iteración y evita los “números mágicos” hardcodeados.