Sign up with your email address to be the first to know about new products, VIP offers, blog features & more.

Tag Archives videojuegos

Phaser, un motor JavaScript para videojuegos

phaser

Si alguien ha programado un videojuego sin una librería específica comprenderá lo difícil que es programar los diferentes apartados: animaciones, colisiones, controles, etc. Es obvio que un motor facilita enormemente la programación.

Para JavaScript existen muchísimas librerías para crear videojuegos, pero ninguno me convencía. Sin embargo, Phaser ofrece un motor completo y muy bien documentado, además con licencia de código abierto MIT, compatible con la GPL.

Phaser tiene todo lo necesario para que puedas terminar un videojuego simple en cuestion de minutos y, además, con una documentación excelente.

Y vosotros,

Desura: el Steam para Linux

Logo Desura
Una de las excusas mas repetidas por los usuarios de Windows para no pasarse a Linux es la falta de juegos, una verdad a medias pero gracias a Desura esto cambiará.

Desura es un plataforma de juegos, clon del conocido Steam (el cual puede ser instalado bajo Wine, si bien no funcionan todos los juegos) que recientemente salio en las portadas de varios blogs linuxeros ya que por fin los gamers linuxeros podíamos disponer de una plataforma de distribución digital de juegos de manera nativa.

En Desura podemos encontrar diversos grupos de usuarios,

Curso programación de videojuegos con SDL – Conclusiones. ¿Quién usa SDL?

El resultado no es en absoluto profesional, pero espero que este ejemplo os haya demostrado lo fácil (o al menos no tan difícil) que puede llegar a ser desarrollar un juego. Existen otras muchas maneras de hacerlo, pero SDL es quizás la alternativa más potente en dos dimensiones de las que existen en el universo del software libre. Recordando siempre que podemos usarla conjuntamente con OpenGL para conseguir gráficos tridimensionales.

Otras opciones además de Allegro y ClanLib de las que he hablado, son por ejemplo plataformas destinadas expresamente al desarrollo de videojuegos,

Curso programación de videojuegos con SDL – Creando continuidad

Finalmente, sólo nos queda darle continuidad a nuestro juego. En función de los objetivos que nos habíamos propuesto, es que los aviones vuelvan a aparecer por la parte superior de la pantalla una vez lleguen al final. Esto es bastante simple ya que solamente tenemos que copiar y pegar la inicialización de los aviones enemigos dentro de una condición que compruebe si ha llegado ya al final de la pantalla por la parte inferior.

Como podéis apreciar dentro del bucle principal, incluimos la condición y en caso de ser cierta, la inicialización de nuevo de la posición.

Curso programación de videojuegos con SDL – Colisiones

Una vez ya tenemos los enemigos moviéndose, el doble búfer implementado e incluso si queremos la pantalla completa pasemos a establecer algún objetivo en el juego. Para este ejemplo el objetivo será evitar que nuestro avión se choque con los aviones enemigos. Una vez se choquen terminaremos el juego. Aunque esto en un juego real no pasaría dado que es un ejemplo didáctico, es la opción que tomamos. Podríamos también poner un número de vidas por ejemplo, pero esto ya alargaría demasiado el ejemplo (tened en cuenta que tendríamos entonces que escribir con letras y números en nuestra pantalla de SDL,

Curso programación de videojuegos con SDL – Mejorando aspectos gráficos

Habréis podido observar que los aviones parpadean al moverse por la pantalla. Esto se produce porque dibujamos directamente sobre la pantalla, es decir sobre lo que hemos llamado screen, de manera que dibujamos antes unos objetos y luego otros. Este problema es bien sencillo de solucionar con SDL gracias a la llamada técnica del doble búfer que nos ofrece. Mediante esta técnica dibujaremos sobre un búfer en el que una vez dibujados todos lo necesario, pasaremos a dibujar sobre el screen, de esta manera eliminaremos el parpadeo que creaba la técnica anterior.

Expliquemos la implementación de esta técnica sobre nuestro ejemplo:

  1. Declamos un puntero a una variable del tipo SDL_Surface sobre la que “dibujaremos” y despues volcaremos sobre el screen:
    SDL_Surface *buffer;