Juegos sin Flash ni Java, en DHTML y/o PHP 

por Juan Alba Maldonado (granvino@granvino.com). Más información en http://www.granvino.com/jam/

Juegos online sin software "propietario"

Sobre mi

Me gusta programar. Desde cuando era pequeño soñaba en crear juegos como Super Mario Bros o un Maniac Mansion que tantas horas he jugado.

 

Aprendí a programar a la edad aproximada de 11 años, hará unos 12 años, en QBasic de MS-DOS. Más tarde me acerqué al Turbo C de Borland también en MS-DOS y a Visual Basic 3.0 en Windows.

 

He creado algún juego chapuza en esos lenguajes pero nunca me he dedicado tan enserio como ahora.

Tampoco es que ahora me dedique muy enserio, pero la idea de hacer juegos multiplataforma (que pueden jugarse en cualquier plataforma, con cualquier sistema operativo) ha avivado mi interés.

 

Todavía me falta mucho por aprender, pero ahora que tengo más interés creo que iré haciendolo. O al menos lo voy a intentar.

Cuando aprenda más haré juegos en DHTML que puedan jugarse online mediante AJAX y PHP y que sean multijugador.

 

Todos los juegos que hago los programo sin mirar ningún código de otras personas. Esto hace que cree juegos más chapuceros y reinvente la rueda (a veces sólo es una rueda mal hecha) pero me gusta hacerlo así porque desarrollo mi capacidad de resolver problemas por mi mismo y porque la satisfacción de haber hecho un juego sin ayuda es más grande. Más adelante, para perfeccionar o incluso para modificar por completo las técnicas que haya aprendido, miraré mejores formas de resolver los distintos problemas que plantea la programación de videojuegos.

 

La tecnología y sus características

La tecnología que utilizo es software libre. En concreto, JavaScript y PHP.

Esto tiene muchas ventajas. Por ejemplo, me da la oportunidad de crear juegos que funcionen en cualquier navegador web sin que el jugador tenga  necesidad de instalar ningun plug-in o añadido en su navegador.

A pesar de su poca velocidad, para juegos sencillos no es problema. Además, con el hardware que se maneja hoy en día los juegos podrían ser hasta complejos y funcionarían fluidamente.

 

He creado algún juego que utiliza sólo PHP y que no precisan de un navegador con soporte de JavaScript.

También he creado alguno combinando las dos tecnologías, pero con una ventaja:  si bien ayuda tener JavaScript instalado para el manejo del juego (véase Yasmina's Quest, por ejemplo) no es totalmente necesario para jugar.

 

Los juegos en PHP funcionan en cualquier navegador web, no importando el sistema operativo ni el dispositivo donde se ejecuten. Pueden jugarse en ordenadores de sobremesa, portátiles, consolas como Nintendo DS o PSP, teléfonos móviles, WebTV, etc. en resumen: en cualquier dispositivo que tenga un navegador web, con o sin JavaScript.

Los juegos en JavaScript también tienen la misma peculiaridad, pero precisan un navegador web que además sea compatible con este lenguaje (con JavaScript). Un problema es cómo manejan estos navegadores los eventos del teclado (onKeyPress, onKeyDown, etc) y del ratón (onClick, etc) puesto que muchos dispositivos no tienen ni ratón ni teclado. Es posible que muchos navegadores web de estos dispositivos tengan soporte de estos eventos por su amplio uso, pero si no fuera así bastaría con modificar un poco el código para poder jugar al juego en esa plataforma.

 

En resumen, creo que JavaScript y PHP u otro lenguaje del lado del servidor tienen aún mucho que ofrecer en el futuro. Sobretodo teniendo en cuenta la rápida proliferación de AJAX y sus variantes, lo cual hace posible hacer llamadas al servidor sin tener que hacer una carga completa de la página del juego. Esto en el futuro puede crear una nueva generación de juegos: juegos online hechos en DHTML (JavaScript, CSS y HTML) en el lado del cliente, con PHP en el lado del servidor y comunicando ambos con AJAX o similar.

 

Cuando aprenda más haré juegos DHTML multijugador que puedan jugarse online mediante AJAX.

 

Mis juegos y yo

Todos mis juegos son multiplataforma y multisistema. Funcionan en cualquier dispositivo (PDA, consola, consola portátil, teléfono movil, etc) sin modificaciones o con muy pocas en el peor de los casos. Son de código abierto y podéis publicarlos, reproducirlos o modificarlos pero siempre y cuando conservéis el nombre del autor original (Juan Alba Maldonado).

 

Tal como he comentado en "Sobre mi", los juegos los he creado sin mirar el código de otros. Por lo tanto, he ido aprendiendo por mi mismo a resolver los problemas que se me han ido apareciendo al crear los distintos juegos. Por ello, el código es algo chapucero en muchos casos y no utilizo la mejor forma para resolver el problema. Más adelante, cuando haya creado más juegos, ya miraré códigos de otros para ir aprendiendo mucho más y mejorar o modificar mis técnicas.

 

Muchos de los juegos tienen bugs y no los he resuelto aún. Ya sea por desconocimiento para resolver el problema, por desconocimiento del propio bug, por pereza o por cualquier otro motivo.

 

A pesar de haber creado otros juegos algo chapuzas (los que hago ahora también lo son, al menos muchos de ellos) en otros lenguajes, mi primera incursión en la programación de juegos online (y además con software libre) fue en el 2005 cuando cree el Yasmina's Quest y su motor en PHP.

 

El Yasmina's Quest lo cree a medida que iba haciendo el motor. Se trata, pues, de un juego para probar las capacidades del motor. Este motor permite crear juegos de aventura gráfica que funcionan en cualquier navegador web compatible con JavaScript. Pero ahora viene lo bueno: si tu navegador no es compatible o tiene desactivado el JavaScript no importa, puedes jugar al juego en modo aventura grafico-conversacional (una aventura conversacional con gráficos). Si tu navegador, además, no soporta o tiene desactivadas las imágenes puedes jugar al juego en modo aventura conversacional sin problemas (podéis probar a jugar en un navegador web basado en texto como Links, Lynx o w3m, por ejemplo). Un juego hecho con este motor funcionará en ordenadores PC, MAC, Amiga, consolas (XBOX, Dreamcast, etc), consolas portátiles (Nintendo DS, PSP, etc), teléfonos moviles... en cualquier dispositivo, siempre que tengan un navegador web. Cualquiera que pretenda hacer un juego de este tipo puede sentirse libre de utilizar el motor del Yasmina's Quest (aunque recomiendo el de La villa del seis, que es el mismo motor pero mejorado) siempre y cuando conserve el nombre del autor original como creador del motor.

 

Mi segundo juego de este tipo fue La Carta Más Alta, el cual nisiquiera utiliza JavaScript si no que solamente utiliza el HTML y un poco de CSS que devuelve el PHP con el que está programado. Por lo tanto, funciona en cualquier navegador web sin ningún problema también.

 

Con el Yasmina's Quest y su motor y con La Carta Más Alta aprendí más sobre lógica de programación y de programación orientada a videojuegos. La Carta Más Alta me hizo comprender un poco más sobre inteligencia artificial, aunque muy básica.

 

Después de estos dos, me aventuré a hacer unas pruebas de mover un gráfico con el teclado mediante DHTML. La cosa dió resultado y, tras varias modificaciones y revisiones para que funcionase igual en todos los navegadores más conocidos (Internet Explorer, Firefox o compatibles y Opera), pude crear La Ranísima. Es una especie Space Invaders o "marcianitos" algo infantil (por los gráficos y por el juego en sí).

Con La Ranísima aprendí sobre detección de colisiones, más lógica de programación y orientación a videojuegos entre otras cosas más.

 

Luego vino el PunkPong, un clon del clásico pong. Con él aprendí a mejorar el sistema de colisiones entre otras cosas.

 

Más adelante vino el Tetríssimus, el cual me planteó el problema de las rotaciones de matrices. Este problema (que para mí fue el más difícil de resolver en este clon del Tetris), al final de mucho escribir en una libreta, pude resolverlo al crear un algoritmo. Seguramente no sea el mejor algoritmo para rotar matrices, pero estoy orgulloso de haberlo sacado yo solo. Otros problema que el Tetris me ha planteado han sido, a parte de las líneas y la caída de los bloques que están encima de éstas, es la rotación de una pieza cuando ésta está cercana del "suelo"  o de otras piezas. Es un problema que hace que al rotar una pieza colisione con otras piezas o con el suelo y  se "solidifique" en lugar de apartarse una poco para no colisionar y poder manejarla un tiempo. Éste es un problema que todavía no he resuelto y no pienso hacerlo en el Tetríssimus, pero lo haré en mi próximo clon del Tetris.

 

Luego vino el Yasminuroban, un clon del Sokoban, con el cual aprendí sobre "tiles", sobre coordenadas y a hacer un editor de niveles basado también en "tiles". También aprendí muchas más cosas que ahora no me vienen a la cabeza.

 

Más adelante fue el Yasminoku, un juego tipo Sudoku, con el que aprendí a hacer backtracking.

 

La recursividad la puse también en práctica, perfeccionandola, en mi siguiente juego: el Buscayasminas, un clon del Buscaminas.

 

Después vino el Conectayas, una especie de Conecta-4 transformable en un Tres en raya o en cualquier juego del estilo. Con él mejoré mis conocimientos en inteligencia artificial, pero muy básica.

 

Luego, junto a mi novia (Yasmina Llaveria del Castillo), creamos La villa del seis. Es una aventura gráfica que también se pude jugar como una aventura conversacional. Tiene las mismas características que el Yasmina's Quest pero mejoradas, puesto que utiliza el mismo motor pero modificado y mejorado. Si alguien pretende hacer una aventura de éste estilo puede utilizar el motor de La villa del seis (es mejor que el del Yasmina's Quest), siempre y cuando conserve el nombre del autor original como creador del motor.

 

Más tarde he hecho el Hundiyas, un juego de hundir la flota (también conocido como Batalla naval, Los barquitos o Tocado y hundido) con tres niveles de dificultad y muy configurable mediante el menú de opciones.

 

Después he sacado el Gamoliyas, una adaptación de "El Juego de la Vida" de John Conway, con algunos extras y bastante configurable.

 

De momento no he creado ningún juego más. No voy a tener mucho tiempo porque he comenzado las clases de primero en Ciclo Formativo de Grado Superior en Desarrollo de Aplicaciones Informáticas. Pero el poco que tenga, siempre que pueda, lo invertiré en crear más juegos de este estilo (online y multiplataforma, con software libre).

 

Más abajo os dejo mis creaciones para que podais verlas, jugarlas y/o descargarlas.

 

Los juegos: verlos, jugarlos y/o desacargarlos

Yasmina's Quest y su motor

Jugar en línea en castellano: http://www.granvino.com/jam/stuff/juegos/yq/

 

Descargar en castellano: yq.zip (todas las plataformas, necesita servidor con PHP)

 

Descargar en castellano con server2go (no necesita servidor PHP, solo

para  Windows): yquest_on_server2go.zip

Imagen:

 

La Carta Más Alta

Jugar en línea en castellano: http://www.granvino.com/jam/stuff/juegos/lcma/

 

Descargar en castellano: lcma.zip (todas las plataformas, necesita servidor con PHP)

 

Descargar en castellano con server2go (no necesita servidor PHP, solo

para  Windows): lcma_on_server2go.zip

 

Imagen:

 

La Ranísima

Jugar en línea en castellano: http://www.granvino.com/jam/stuff/juegos/ranisima/spanish/

 

Jugar en línea en inglés: http://www.granvino.com/jam/stuff/juegos/ranisima/english/

 

Descargar en castellano: ranisima_spanish.zip

 

Descargar en inglés: ranisima_english.zip

 

Imagen:

 

PunkPong

Jugar en línea en castellano: http://www.granvino.com/jam/stuff/juegos/punkpong/spanish/

 

Jugar en línea en inglés: http://www.granvino.com/jam/stuff/juegos/punkpong/english/

 

Descargar en castellano: punkpong_spanish.zip

 

Descargar en inglés: punkpong_english.zip

 

Imagen:

 

Tetríssimus

Jugar en línea en castellano: http://www.granvino.com/jam/stuff/juegos/tetrissimus/spanish/

 

Jugar en línea en inglés: http://www.granvino.com/jam/stuff/juegos/tetrissimus/english/

 

Descargar en castellano: tetrissimus_spanish.zip

 

Descargar en inglés: tetrissimus_english.zip

 

Imagen:

 

Yasminuroban

Jugar en línea en castellano: http://www.granvino.com/jam/stuff/juegos/yasminuroban/spanish/

 

Jugar en línea en inglés: http://www.granvino.com/jam/stuff/juegos/yasminuroban/english/

 

Descargar en castellano: yasminuroban_spanish.zip

 

Descargar en inglés: yasminuroban_english.zip

 

Imagen:

 

Yasminoku

Jugar en línea en castellano: http://www.granvino.com/jam/stuff/juegos/yasminoku/spanish/

 

Jugar en línea en inglés: http://www.granvino.com/jam/stuff/juegos/yasminoku/english/

 

Descargar en castellano: yasminoku_spanish.zip

 

Descargar en inglés: yasminoku_english.zip

 

Imagen:

 

Buscayasminas

Jugar en línea en castellano: http://www.granvino.com/jam/stuff/juegos/buscayasminas/spanish/

 

Jugar en línea en inglés: http://www.granvino.com/jam/stuff/juegos/buscayasminas/english/

 

Descargar en castellano: buscayasminas_spanish.zip

 

Descargar en inglés: buscayasminas_english.zip

 

Imagen:

 

Conectayas

Jugar en línea en castellano: http://www.granvino.com/jam/stuff/juegos/conectayas/spanish/

 

Jugar en línea en inglés: http://www.granvino.com/jam/stuff/juegos/conectayas/english/

 

Descargar en castellano: conectayas_spanish.zip

 

Descargar en inglés: conectayas_english.zip

 

Imagen:

 

La villa del seis

Jugar en línea en castellano: http://www.granvino.com/jam/stuff/juegos/lavilladel6/

 

Jugar en línea en catalán: http://www.granvino.com/jam/stuff/juegos/laviladel6/

 

Descargar en castellano: la_villa_del_seis.zip (todas las plataformas, necesita servidor con PHP)

 

Descargar en castellano con server2go (no necesita servidor PHP, solo

para  Windows): la_villa_del_seis_on_server2go.zip

 

Descargar en catalán (La vila del sis): la_vila_del_sis.zip (todas las plataformas, necesita servidor con

PHP)

 

Descargar en catlán con server2go (no necesita servidor PHP, solo

para  Windows): la_vila_del_sis_on_server2go.zip

 

Imagen:

 

 

Hundiyas

Jugar en línea en castellano: http://www.granvino.com/jam/stuff/juegos/hundiyas/spanish/

 

Jugar en línea en inglés: http://www.granvino.com/jam/stuff/juegos/hundiyas/english/

 

Descargar en castellano: hundiyas_spanish.zip

 

Descargar en inglés: hundiyas_english.zip

 

Imagen:

 

Gamoliyas

Jugar en línea en castellano: http://www.granvino.com/jam/stuff/juegos/gamoliyas/spanish/

 

Jugar en línea en inglés: http://www.granvino.com/jam/stuff/juegos/gamoliyas/english/

 

Descargar en castellano: gamoliyas_spanish.zip

 

Descargar en inglés: gamoliyas_english.zip

 

Imagen:

 

Comments