Publicat per
PR
Publicat perDiego Sanz Fuertes
# PR

“Contrast: A Puzzle of Keys” es un juego plataformas minimalista en el que, incluso los controles son minimalistas. En cualquier momento, solamente un subconjunto está disponible.
– Link al video: https://youtu.be/tdOjlLL5pEM
– Link al juego: https://play.unity.com/en/games/995cf466-5389-410b-9e82-361090f8582f/contrast-a-puzzle-of-keys
– Link al folio: https://dsanzfu.folio.uoc.edu/2026/01/25/pr/
– Link a Gitlab: https://gitlab.com/diego-sanz-f/PR
## La idea
“Contrast: A Puzzle of Keys” es un juego plataformas minimalista en el que, incluso los controles son minimalistas. En cualquier momento, solamente un subconjunto está disponible. Es un juego más de puzles que de plataformas.
## Cómo jugar
El objetivo del juego es llegar al final de los niveles resol
viendo los puzles de cada nivel.
viendo los puzles de cada nivel.
El personaje se controla con A (izquierda), con D (derecha) y espacio para saltar. Se puede reiniciar el nivel con R.
El jugador tiene disponible un numero limitado de acciones (mover a la derecha, izquierda, saltar) que, según se recogen power ups, se modifican siguiendo una cola, es decir, la acción recién recolectada se sustituye por la más antigua.
## Detalles de la implementación
### Niveles
El juego consta de dos niveles sencillos, ideados como tutoriales sin necesidad de tener que explicar al jugador cómo se juega. Como extensión del juego, habría que añadir varios niveles más, pero con estos dos se pueden demostrar todas las mecánicas.
Para la creación de los niveles se ha hecho uso de una Grid y dos Tilemaps (uno con colisiones y otro de fondo)


### Mecánicas
Para controlar que acciones se pueden realizar en un momento dado, se ha creado una clase que gestiona las entradas, haciendo uso de una cola y de la librería Input de Unity.

### Animaciones
Las animaciones de los sprites se han creado con el sistema de animaciones de Unity. Se ha intentado utilizar el importador automático de Aseprite para la animación del personaje pero no funcionaba correctamente a la hora de importar los sprites.

Hay otra animación de los power ups, que modifica la posición y de estos con 3 keyframes.

### Tags y Layers
Se ha hecho uso de tags para los triggers de los power ups y del final de nivel. También para obtener el Player.
Las layers se han utilizado para el orden del nivel, el fondo, la GUI y los demás objetos.
### Interfaz
Con gran diferencia, esta ha sido la parte mas costosa del proyecto. Hacer que la interfaz funcione en distintas resoluciones, crear botones y toggles personalizados, modificar los iconos de la cola de acciones y hacer que las fuentes sean en estilo pixelado.
La mayoría del código relacionado con la interfaz se encuentra en la clase GuiManager, como abrir y cerrar el menú de pausa, el callback de los botones, etc.


### Escenas
Las escenas fluyen de la siguiente manera: Logo > MainMenu > Level1 > Level2 > Credits > MainMenu > …
Desde los niveles se puede volver al menú pulsando Escape, y desde los créditos se puede volver al menú principal.

## Recursos utilizados
Los recursos externos utilizados han sido:
– Fuente 1: https://www.1001fonts.com/medodica-font.html
– Fuente 2: https://www.1001fonts.com/boldpixels-font.html
El resto de recursos son de autoría propia. Los sonidos se han generado con https://sfxr.me/ y los sprites y animaciones se han dibujado en Aseprite.
### Uso de IA
No se ha utilizado ninguna herramienta de IA.
Aquest és un espai de treball personal d'un/a estudiant de la Universitat Oberta de Catalunya. Qualsevol contingut publicat en aquest espai és responsabilitat del seu autor/a.
Debatcontribution 0el PR