>Nostalgia

>

Intro

Lo que han cambiado las cosas…

En los 80, muchos de los que tenían algún ordenador en casa, cargaban sus aplicaciones (principalmente juegos…), mediante casetes. Un ejemplo de estos ordenadores es el ZX Spectrum, aquí mostrado:

El Sinclair ZX Spectrum
Este ordenador, capaz de mostrar 256×192 pixeles con 16 colores, contaba con la “friolera” de 16K (o 48K, según modelos) de RAM, 16K de ROM, y disponía de un intérprete del lenguaje BASIC. No era el más potente, pero sí uno de los más populares por la época, al menos por aquí (para ver una lista más completa con otros ordenadores, ver aquí).
La cuestión es que por aquel entonces, si se quería programar algo en ese tipo de ordenadores, las dos opciones más habituales eran:
1) utilizar el intérprete de BASIC incluido, con las limitaciones que ello implica, principalmente de velocidad: en un ZX Spectrum, algo que hoy en dia en un PC se ejecuta de forma instantánea, un simple bucle “FOR n = 1 TO 1000: NEXT n” tardaba más de 4 segundos en ejecutarse aunque no hiciera nada. Ver referencia.
2) la opción sólo para valientes: programar en ensamblador. Es decir, trabajar directamente con las instrucciones del procesador de la máquina (un Z80 funcionando a 3’58Mhz, en el caso del Spectrum).
Z80

Al grano…

¿A qué viene toda esta dosis de nostalgia “retro”?

Pues básicamente, a que hoy disponemos de máquinas miles de veces más potentes. A diferencia de lo que comentaba antes del Spectrum, esta potencia permite trabajar a mucho más alto nivel (lejos de las instrucciones del procesador), para conseguir lo que queremos.

Es decir, antes para conseguir dibujar algo en pantalla, había que programar en ensamblador y optimizar las instrucciones para conseguir algo mínimamente aceptable. Ahora ya no es necesario…

De este modo, y para remarcar las distintas “capas” disponibles, presentamos aquí una aplicación que (de “arriba hacia abajo”):
 - Ha sido programada en Javascript
 - Es ejecutada en un navegador Web (en su motor Javascript)
 - A su vez, el navegador Web, es una aplicación que cuenta con varias librerías para funcionar
 - Esas librerías, funcionan sobre un sistema operativo
 - Más abajo, ese sistema operativo, tiene una serie de librerías y módulos que permiten comunicarse con los “drivers” y el “kernel” que acceden al hardware
 - Finalmente, esos “drivers”/”kernel”…, se comunican con el procesador, la tarjeta gráfica, etc… en su propio “idioma”.

Podemos decir, que el hacer la vida más fácil al programador se paga en ciclos de CPU… existen multitud de librerías, herramientas, y demás “capas de abstracción” que “alejan” al programador del procesador y hacen su vida más fácil, pero a cambio, la CPU pasa mucho tiempo pasando datos entre estas capas (por eso, la velocidad percibida por el usuario de un PC no aumenta al mismo ritmo que la velocidad de las CPU… sinceramente, Word y Excel funcionaban más o menos a la misma velocidad “percibida” en los 90….).

En fin…al grano: en nuestro caso, para este viaje de “capa sobre capa”, partimos de la librería EaselJS. Una librería que permite trabajar en Javascript con el objeto “Canvas” de HTML5.

Buscando una posible aplicación para probar EaselJS… ¿por qué no seguir con el sentimiento de nostalgia y buscar algo sencillo y “retro”?

Por eso, nos planteamos recrear un “game & watch” clásico: Fire.

La programación es sencilla…

Primero se cargan las imágenes, y luego se entra en un bucle en el que:
 - Se comprueba la pulsación de las teclas
 - Se mueven los bomberos si alguna tecla ha sido pulsada
 - Se comprueba si hay victimas
 - Se avanza la animación
 - Se actualiza la pantalla

La librería EaselJS se encarga de lo relativo a cargar las imágenes, y dibujar en pantalla.

Se trata de un prototipo rápido, por lo que no está optimizado, no está bien probado, y no funciona exactamente igual que la máquina original… pero permite ver cómo HTML5 puede ser empleado para realizar juegos/aplicaciones sencillas de forma muy rápida.

Este juego ha sido probado en Firefox y Chrome, y también funciona (aunque lento) en iPad & iPhone.

Si quieres probarlo, haz click aquí: Probar “Fire”.

Saludos!


Comments are closed.