Energy Up: Cuando el pasado encuentra el futuro

Una vez me dijeron que la inspiración llega cuando menos te lo esperas. Después de terminar mi ultimo proyecto Simón, color vs. color, que quería actualizar de Delphi a Unity quería hacer un proyecto inspirado en algún juego retro. Jugando con mi ZX Spectrum descubrí un juego que me inspiro mucho por su mecánica mas allá de sus gráficos de 8 bits.


Zenji es un juego de rompecabezas diseñado por Matthew Hubbard y publicado por Activision en 1984. Fue lanzado para Atari 5200, Atari 8-bit family, ColecoVision, Commodore 64, MSX y ZX Spectrum. El juego consiste en un personaje que se mueve a través de bloques que pueden girarse en partes de 90 grados. En la red de túneles hay una fuente de energía que ilumina de amarillo los trozos conectados. Cuando conseguimos conectar todos los bloques antes de que se termine el tiempo pasamos de nivel.

Actualmente el juego no tiene recorrido comercial, pero personalmente encuentro que las mecánicas del juego son muy interesantes como base de un juego actual para dispositivos móviles. A partir de esta fuente de inspiración he diseñado un juego donde un aguerrido arqueólogo debe encontrar los ídolos sagrados en un templo perdido en la selva.


Para conseguir el ídolo de cada nivel debemos conectar todas las plataformas con una antigua fuente de energía que permite girar las plataformas en giros de 90 grados. Ademas en nuestro recorrido encontraremos power up, objetos, trampas y enemigos que harán mas emocionante y arriesgada las misiones de nuestro personaje.


Al ser un sistema modular de objectos, podremos crear múltiples laberintos a través de un conjunto de prefabs y un array con la distribución inicial de plataformas y objetos en cada nivel. Para los niveles usaremos una class con la estructura y cada objeto en una posición del Array.

 public class Cell  
 {  
   public string code = "0";  
   public bool energyFont = false;  
   public bool player = false;  
   public int enemyCode = 0;  
   public int itemCode = 0;  
 }  

A partir de esta clase, podemos crear un array para almacenar los diferentes bloques donde cada tipo es un prefab.

 public static Cell[,] actualLevel = new Cell[10, 10];  


Me encanta ver como mecánicas olvidadas en el cajón de los recuerdos cobran de nuevo vida en un nuevo proyecto. En los próximos artículos iré explicando la evolución del proyecto y las partes más importantes del mismo.

Como hacer copias de tu código de Unity con GitHub

Podriamos escribir un libro entero de las bondades de Git para el trabajo colaborativo y la gestión de versiones en un entorno como Unity. D...