martes, 5 de febrero de 2008

PONG512 (I) La historia

¿Cuánto pueden dar de sí 1024 bytes?

En realidad, 1024 bytes dan para bastante más de lo que se podría pensar en un principio. Esta historia comienza en julio de 2005, cuando a los locos de Karoshi les dió por organizar un concurso para programar un clon del PONG en, como máximo, 1KB (1024 bytes).

Este minijuego es el resultado de mi participación en dicho concurso, así como mi primer juego para MSX (después de todos los que hice de pequeño en BASIC, aunque esos no salieron de mi habitación).

Remontándose a los orígenes

Personalmente guardo muy buenos recuerdos de mi infancia con respecto al PONG, recuerdos que me incluyen a mí y a mi padre jugando en el bar de unos amigos con una de esas maquinitas de PONG que se conectaban a la tele. Como una de mis motivaciones para programar videojuegos es intentar que todo lo relacionado con los juegos clásicos sea heredado por las siguientes generaciones (acostumbradas ya a los chorrocientosmil polígonos texturizados moviéndose al mismo tiempo en la pantalla) me animé a refrescar mis conocimientos del ensamblador del Z80 y a programar un clon del que se considera el pionero de los videojuegos, aunque puede que no lo sea. Veamos un poquito de historia:

Según el criterio que sigamos, podemos encontrar a dos padres de los videojuegos. El verdadero padre se considera que fue Steve Russel, quien programó el primer juego de ordenador, Space Wars, que funcionaba en un PDP-1.

Sin embargo, el padre "legal" de los videojuegos fue Ralph-Baer, un alemán educado en los Estados Unidos. Fue él quien desarrolló y patentó los primeros videojuegos que se podían conectar a un televisor en blanco y negro. Un gran inventor, pero un mal vendedor. Su patente terminó en 1970 y un par de años después Philips convirtió el juguete de Baer en la primera consola doméstica de la historia: la Magnavox Odyssey.

En 1971 Nolan Bushnell hizo una versión del Space Wars, juego que conoció y jugó en su época de estudiante, para ser jugada en lugares públicos. Sin embargo Computer Space no tuvo el éxito esperado y fue reemplazado por un juego mucho más simple, mucho más adictivo y mucho, pero muchísimo más conocido: el PONG.

Cabe mencionar la anécdota que rodea a la primera máquina de PONG de la historia, que fue devuelta desde el bar Andy Capp's porque creían que era defectuosa, cuando en realidad estaba bloqueada pues el monedero se había llenado de monedas y no aceptaba más.

El concepto del juego

Un juego muy simple a la par que adictivo, dos factores que me terminaron de convencer para coger el ensamblador y ponerme a teclear instrucciones como un loco. Pero tras más de 14 años sin haber tocado el ensamblador del Z80 la tarea no iba a ser sencilla.

Una costumbre que tengo (mala o buena, eso aún no está claro) es que no me pongo a tirar una sola línea de código hasta que no tengo muy claro el concepto del programa completo o de alguna parte significativa del mismo. Si no lo hago así luego me toca retocar bastante y ya se sabe que no es fácil controlar los bugs cuando andas cambiando diferentes partes del código.

Ya desde el primer momento se me ocurrió no hacer una versión totalmente fiel a la idea original, puesto que quería añadir algún tipo de funcionalidad extra que le diese una nueva dimensión al juego, sin cambiar por completo el espíritu del mismo. La idea definitiva surgió al recordar alguna versión del PONG que se conectaba a la televisión, concretamente aquellas que venían con varios tableros que se presentaban como juegos diferentes.

Así pues nació la idea de que los tableros no fueran estáticos, sino que pudieran sufrir alteraciones durante el juego. Los muros laterales eran sencillos, ya que aparecerían diversos tipos de barreras que dificultarían la tarea de marcar un gol, pero algo tenía que hacer con los muros superior e inferior. Nada más simple: si sincronizaba ambos muros podía hacer que la pelota desapareciera por arriba para reaparecer por abajo (y viceversa). Había nacido el concepto inicial del PONG512.

¿Qué se esconde tras el nombre?

PONG512 es, ante todo, un PONG, pero al mismo tiempo se ha de distinguir del original por el tema de los tableros cambiantes. Hay cuatro muros que pueden cambiar de forma, aunque como dos de ellos están sincronizados, en realidad podemos contar tres muros que cambian. Si cada uno de ellos tiene 8 posibles formas, en total hay 8x8x8=512 combinaciones de tableros.

Instrucciones

¿Existe alguien que en algún momento de su vida no haya echado una partida al PONG o a alguno de sus derivados? Para jugar a PONG512 hay que seguir el mismo mecanismo: controlar tu paleta moviéndola verticalmente para colarle la pelota al contrario y evitar que él te la cuele a tí. El cambio de tableros se realiza simplemente pulsando el botón, momento en el que alguno de los muros cambiará aleatoriamente... o no... ¡quién sabe!

El jugador 1 puede jugar con los cursores y la barra de espacio o con el joystick en el puerto 1. El jugador 2 jugará siempre con el joystick conectado al puerto 2. Mientras la pelota se encuentra en movimiento se puede salir del juego sin más que pulsar la tecla ESC, lo que nos devolverá al BASIC del MSX.

Continuará...

1 comentario:

Pypo dijo...

Como ya te dije en la ru de BCN, este pong es fantástico. Sobretodo la jugabilidad que da el canvio de paredes.