6 de Julio, 2014

Zooooop!

Ayer publiqué Zooooop!, mi juego de Junio para one game a month.

Se trata de un juego tipo match-3 (la mecánica básica es agrupar tres piezas o más del mismo color), en el tenemos el clásico tablero continuo en el que podemos hacer click y desplazar una fila (o columna) para hacer los grupos, que una vez hechos desaparecen dejando huecos que se rellenan con piezas que caen desde la parte superior de la pantalla.

La pantalla de juego

Es un juego sencillo y no muy excitante, pero ha sido ideal para probar nuevas herramientas, en este caso SFML (el juego lo he hecho en C++).

Hacía años que no programaba nada en C++ y estoy intentando refrescar conocimientos y volver a aprender el lenguaje con todas las novedades que han ido apareciendo desde que hiciera un par de aplicaciones a finales de los 90.

Por una parte no me ha disgustado trabajar con el lenguaje (imagino que después de programar en Javascript, C++ no es tan malo :D), sobretodo tirando de STL (std::vector principalmente), y no me ha costado demasiado montar una estructura escenas/estados como la que suelo montar en Python. Por otra parte es cierto que el ciclo programa → compila → ejecuta es más lento, y algunos errores son más complicados de corregir (menos mal que tengo gdb).

En cuanto a SFML, estoy todavía bastante verde, pero más o menos lo que voy pillando me parece bastante bien diseñado. Proporciona un nivel de abstracción sobre OpenGL que me ha gustado mucho (por ejemplo, usar su clase View es más sencillo que trabajar directamente con glViewport). Para juegos eminentemente 2D me parece una buena elección; para temas 3D en los que desarrollemos nuestro propio motor, creo que también.

Empecé con el juego bastante tarde, con lo que habrán sido unos 10 días (y solo unos ratos en esos días, recordemos que esto no es a tiempo completo :P), y lo que más problemas me ha causado han sido las decisiones de desarrollo de la propia librería.

Por ejemplo: la versión que hay para bajar en la web como estable es la 2.1 (publicada hace cosa de un año), y tiene un par de bugs que han resultado muy graves en mi projecto (uno de ellos relacionado con la gestión del ratón en windows); con lo que he tenido que usar el código del repositorio y compilar mi propia versión.

SFML trabaja con cmake, y la verdad es que ha sido bastante lioso para hacer cross-compiling en Linux para Windows; especialmente porque he tenído que aprender muchas cosas en poco tiempo (difrentes versiones de compilador introducen diferencias en el ABI y las librerías no enlazan, MingGW tiene dos gestores diferentes para las excepciones y resulta que Fedora usa el otro, etc).

Al final he conseguido generar el binario perfecto para Windows, que ejecuta en Wine y en un Windows de verdad también ;). Porque resulta irónico que desarrollando en Linux sea más sencillo distribuir tu juego con SFML para Windows que para tu sistema de desarollo. ¿Por qué? Por las dependencias.

El juego para Windows son unos 1.1 MB comprimidos que incluyen el juego, datos y un par de DLL (que puedo distribuir, son Open Source), pero conseguir el mismo efecto en Linux es bastante más complicado si no quieres recurrir a empaquetar para cada distribución (eso si distribuyen SFML 2.1, que es bastante reciente). Así que para mi es bastante más fácil ahora mismo compilar binarios para Windows que empaquetar para Ubuntu desde Fedora :(.

Es curioso que siendo la distribución uno de los puntos más criticados de Python me resultó bastante fácil empaquetar Grid Runners para Linux, Windows y Mac (¡y no tengo un Mac!), que por ahora distribuir Zooooop!.

Tampoco es que sea un problema. Aparte de que nadie va a jugar al juego, según las estadísticas de mi página en GameJolt, Mac es una minoría, y Linux... casi inexistente :(.

Me ha gustado SFML, y creo que volveré a repetir en el futuro. Por una vez ha sido genial no tener problemas de rendimiento (¡qué rápido y suave va todo!), tras trabajar tan duro para ser lo suficientemente rápido en mis proyectos usando Python o Javascript.

Actualización: he publicado paquetes para Ubuntu 14.04 en la página del juego. Además he hecho un backport de SFML 2.1 a Precise, que se puede bajar desde este PPA (que mi madre todavía usa Precise :P).

Hay 0 comentarios, anotación clasificada en: 1gam, programming, sfml, cpp.

29 de Junio, 2014

»Google-- · Hace dos años que comentaba que estaba usando Google+ y que me gustaba, y en los últimos meses la verdad es que ya ni me acuerdo de él. Igual todo empezó cuando estuve probando Firefox OS, porque la web de Google+ me obligaba a introducir la contraseña con demasiada frecuencia (aunque era problema de Firefox OS, que al final dejé de usar). Ahora vuelvo a tener móvil Android, pero me parece que Google+ ha pivotado ya demasiadas veces (la app cambia cada poco, y en general creo que a peor), y no va a despegar. El caso es que como red social en general no está mal y me sirve para seguir a gente interesante, pero al final suena demasiado a monólogo porque no hay nadie (y para eso ya tengo esta bitácora :P).

Hay 0 comentarios, anotación clasificada en: google.

11 de Junio, 2014

»Probando SFML · Estoy empezando (algo tarde) mi juego de Junio y esta vez he decidido usar SFML y C++. La librería está muy bien, por ahora lo que me estoy encontrando en la versión 2.1 es bastante pontente (¡y rápido! después de usar Python y Javascript para programar juegos, C++ es una pasada). Además aprovecho para ponerme al día con C++ porque mi experiencia con el lenguaje es de finales de los 90 y la cosa ha cambiado un poco desde entonces. Por ahora estoy usando dos recursos: esta referencia on line y Accelerated C++ en la mesita de noche.

Hay 0 comentarios, anotación clasificada en: programming, cpp, sfml.

1 de Junio, 2014

»Resultados de PyWeek 18 · Ya están los resultados de la PyWeek 18. He quedado tercero, con 3.79 en total (mi mejor marca desde que empecé a participar en la competición); 3.41 en diversión, 3.59 en innovación y 4.36 en producción, siendo el primero en esa categoría. El ganador en individuales ha sido The Eight Bit Passage, en grupos ha sido Goodnight, Mr President (que, por cierto, no soporta Linux; ¡ha ganado con solo 8 votos! Mi favorito era Idle). He repetido posición, aunque esta es la primera vez que he entregado un juego que podría haber ganado ;).

Hay 0 comentarios, anotación clasificada en: pyweek.

27 de Mayo, 2014

»Grid Runners en indiegames.com · Estoy muy contento con que Grid Runners haya sido mencionado en indiegames.com. Además me gusta bastante la descripción que John Polson hace del juego:

Grid Runners involves hacking all the terminals in each stage, but the real challenges are in resource management and environment manipulation. You can hack each PC in one of four ways: to grant access to nearby doors, to disable nearby lasers, to recover your link (health), or to get you extra time on the grid. Enemies can shoot at you to deplete your health, and lasers will reduce your time allowed on the grid.

Yo no lo hubiera explicado mejor :).

Hay 0 comentarios, anotación clasificada en: pyweek.

21 de Mayo, 2014

Commits durante la PyWeek 18

Esta es mi punch card para Grid Runners, que nos da una referencia visual de cuándo y cuántos commits hice a lo largo de la semana.

Commits

Comparado con la edición anterior, creo que se nota que he tenido más trabajo ;). Además acabé bastante más tarde el último día añadiendo los 10 niveles (el sábado, porque el domingo en la gráfica corresponde con el inicio de la competición).

Hay 0 comentarios, anotación clasificada en: pyweek.

18 de Mayo, 2014

»¡PyWeek 18 conseguida! · He estado más callado que de costumbre por aquí, pero es que ha sido la PyWeek 18 :). He entregado un juego que mezcla acción con puzzles, más o menos, y es el juego más completo y ambicioso que he "acabado" hasta la fecha: Grid Runners (también en mi entrada en PyWeek). En la página del proyecto hay para bajar el código fuente y binarios para Windows (por ahora); además se trata de mi juego de Mayo para One Game a Month.

Actualización: he subido paquetes para Debian/Ubuntu.

Hay 0 comentarios, anotación clasificada en: python, programming, pyweek, 1gam.

29 de Abril, 2014

»Submarine (treasure hunting) · El fin de semana pasado probé suerte de nuevo con la Ludum Dare, aunque tenía varios compromisos para el sábado y solo pude dedicarle parte del domingo. Como estoy con un proyecto ambicioso, pensé que podría acabar un mini-juego y tener algo para Abril válido para el reto one game a month. Al final no pudo ser :(, pero sí he tenido tiempo para acabarlo para la jam (que las reglas son menos estrictas); el resultado es mi juego de este mes Submarine (treasure hunting) (y también mi entrada en Ludum Dare).

Hay 0 comentarios, anotación clasificada en: programming, javascript, 1gam.

20 de Abril, 2014

Trabajando en un RPG

Ya hablé hace tiempo de lo que me gustaba leer Maniacos del Calabozo (en Micromanía), y que había descubierto un par de blogs que me habían vuelto a enganchar (CRPG Revisited; algo menos activo, y el genial CRPG Addict).

Ya hace cosa de un año estuve pensando cómo podría ser el RPG mínimo, porque se trata de un tipo de juego que es muy complejo, pero creo que se podría acotar de forma que sea un proyecto viable para un solo programador (además a ratos).

Dejé el tema de lado porque ya no es solo el motor del juego, sino los gráficos que pueden llegar a ser muy exigentes, y además hace falta una historia. Guardé mis notas por si acaso, y las he retomado ahora: ya que de todas formas estoy haciendo un juego al mes, ¿qué tal si hago un RPG con un motor mínimo y lo voy perfeccionando en los meses siguientes?

Witchlord alpha
La idea va tomando forma

Además cooincide que a finales de Mayo tenemos la PyWeek 18 (que será mi juego para ese mes), con lo que puedo estirar un poco más el tiempo de Abril y tener unos días extra para trabajar la idea.

Por ahora las cosas parece que van saliendo, aunque va a ser más parecido a juegos tipo Rogue, porque es el sistema más sencillo de implementar (especialmente en cuanto a aspecto gráfico, aunque estoy implementando ideas que pueden dar mucho juego a la implementación de puzzles). Siempre tendré la posibilidad de mejorar el motor y darle más profundidad en el futuro (entregando un nuevo juego, claro está).

Aunque estamos en la recta final del mes, es todavía pronto para saber si podré terminarlo (juas). El reto one game a month es lo que tiene, que cada juego entregado solo significa un mes menos; y cada nuevo juego es empezar otra vez y poder fallar ;).

Hay 0 comentarios, anotación clasificada en: rpg, 1gam.

11 de Abril, 2014

»PyWeek 18 · El registro para la PyWeek 18 ya está abierto, y la competición se llevará a cabo del 11 al 18 de Mayo. Ya sabes de qué va: programar un juego desde cero en una semana, usando Python. Mi última entrada fue una aventura en 3D (o algo así) con la que quedé tercero en el ranking general (aunque lo importante es ciertamente participar y ¡entregar un juego al final de la semana!).

Hay 0 comentarios, anotación clasificada en: python, programming, pyweek.

Entradas antiguasEntradas nuevas