Skip to content

personal

Algo Personal

– ¿Color?
– El blanco.
– ¿Mi comida?
– La que hace tu madre.
– ¿Mi música favorita?
Dudé.
– Uhmmm… Sinceramente no lo sé. ¿La que suene en ese momento por la radio?
No dijo ni que sí ni que no, pero una incipiente sonrisa me alentó a seguir soñando.

09/09/09

VelaAdemás de la triple conjunción de nueves que se produce hoy en el calendario gregoriano, se da también la casual circunstancia que esta web cumple, más o menos, otro añito más. Doce meses, o más o menos, cincuenta y dos semanas, ya que a veces parece que la vida avanza a ritmo de semanas más que de meses o de años. O tal vez estas sean meras apreciaciones de una memoria de pez. En cualquier caso, tocaba encender la velita de rigor, aunque no tenga ni idea de donde proviene esta pirómana costumbre, ni suela tener la politicamente correcta necesidad de celebrar aniversarios.

– Pero procedamos. Esto,… ¿alguien tiene un mechero?

Recuerdo que abrí esta web para algo más que complacer a esa asesina de felinos llamada curiosidad. Yo quería aprender exóticas tecnologías nacidas en un extraño medio emergente llamado Internet. No saber utilizar un buscador (google/emule), no tener dirección de correo (gmail/messenger), o no participar en una red social (facebook/youtube), eran motivos de exclusión social inmediata. Y antropológicamente hablando, todos sabemos por reencarnaciones anteriores, que se está más calentito dentro de la cueva con la manada, que fuera de ella a merced de los dinosaurios, aunque hombres y dinosaurios nunca hayan coincidido en el tiempo, salvo en las películas de Spielberg, intemporales todas ellas.

– Vela encendida. ¡Por un calentamiento global sostenible!

Esta web fue concebida para albergar disertaciones técnicas, pero en ocasiones la realidad fuera de la matriz consigue mosquear más que un NullPointerException durante una demo. Y es que debe ser por deformación profesional que uno no deje de buscar patrones por doquier, como las tendencias al alza. Todo sube. Como las temperaturas y la líbido, encendidamente consecuentes la una con la otra. O como el paro y la bolsa, absurdamente coincidentes el uno con la otra. O como los impuestos, justo cuando parecía que lo lógico era aliviar la presión fiscal. Extrañas decisiones para un profano al que nunca dejará de resultar extraño que Industria, Economía y Empleo sean tratadas como cosas distintas. Perfectamente compartimentadas. O que en época de crisis el presidente de un ejecutivo asuma la máxima responsabilidad en materia de… ¡Deportes!. Sí, ese mismo que declaró haber firmado un acuerdo con Rusia para follar (sic). +18 en relaciones internacionales.

– Ahora a soplar. Cual control de alcoholemia.

A estas alturas de la película tiene uno el callo del ratón muy endurecido para según que cosas. Motivo por el que, parafraseando una canción de Sabina, esta web lleva una temporada cerrada por derribo. Ha sido un último año muy variado, con altos y bajos muy pronunciados. Similar al perfil de una etapa de alta montaña de una Vuelta a España que transcurre por Holanda. Frase esta última que también podría formar parte perfectamente de una canción de Sabina, como aquella del belga y las soleares. Y además el futuro, apegado a sus costumbres, se muestra incierto.

– Y ya está apagada la vela recién encendida. ¿No resulta a veces genialmente ingenuo el espirítu humano?

++ anio

VelaLa vuelta de vacaciones es siempre para mi un recordatorio de que esta web cumple otro año más. Momento para echar la vista atrás releyendo posts y ver en que me he entretenido estos últimos doce meses.

Sin duda este último año ha sido para este blog el de las comunidades virtuales online, con dos series completas de posts dedicados a ellas. El primero sobre Second Life, haciendo hincapie sobre todo en sus facilidades para la construcción de contenido por parte de los propios usuarios, y el segundo sobre mis divagaciones de como diseñar el modelo de base de datos de un MMORPG. Curiosamente, puede que esto explique porque ha disminuido el número de juegos que he programado últimamente. He dedicado más tiempo a construir items virtuales en mi tiempo libre, que en producir código (que en ciertos aspectos es otra forma de item virtual también).

En estos últimos doce meses sólo he subido un juego nuevo a la web. He acabado cerrando los foros de Drupal, como ya anticipé que haría. Y he seguido manteniendo vivo Planet Stratos, que este nuevo año probablemente alcance el centenar de blogs inscritos.

Este año que empieza creo que lo voy a empezar continuando con la misma tónica que terminó el anterior. Me gustaría escribir algunos posts más sobre el diseño del modelo de un MMORPG. Posiblemente analizando las base de datos de algunos juegos de código abierto que hay por ahí. Me está gustando bastante escribir la serie. Y a ver si me animo también a desarrollar algún juego nuevo para este año. Tenía comprometido hacer una versión en JavaScript de un juego escrito en Flash, pero no parece que el tema vaya a llegar a ningún lado.

Stay tuned!

Pixel-Art: Mouse

Hace tres meses ya de mi último juego, así que va siendo hora de que me ponga manos a la obra con el siguiente. Esta vez me gustaría pasar más tiempo trabajando el apartado gráfico. Algo complicado, ya que normalmente mis objetivos/preferencias son de carácter técnico y no artístico.

Tenía pensado hacer algo de tipo «tuberías», como los populares «Candy Train» (no encuentro el link, supongo que ya lo habrán descatalogado) o Rocket Mania de PopCap. Siempre me ha gustado la simplicidad, en lo referente a su jugabilidad, de esos dos programas. Acerca del primero de ellos, recuerdo que es una idea que incluso a mi se me ocurrió una día que viajaba en tren. Cuando llegué a casa busqué por Internet para ver si existía algo parecido. Después de seguir un par de enlaces pude comprobar que no era precisamente el colmo de la originalidad lo que se me había ocurrido.

Para mi juego, tengo apuntadas varias ambientaciones distintas sobre las que poder trabajar. La primera es bastante obvia, la he llamado «One Way!», y consistiría en construir una carretera por la que circule un coche. E incluso mejor, un taxis, e incluso un autobús, ya que entonces se podría jugar (nunca mejor dicho) con conceptos como «parada» o «viajero» para establecer objetivos fáciles de identificar por los jugadores. Las señales de tráfico o los semáforos también podrían estar bien, sobre todo porque son señalizaciones con un significado conocido por todos y que no requerirían mayor explicación. La mayor dificultad para mi reside en el dibujado de un vehículo desde una perspectiva aérea, sobre todo con diversos ángulos de giro.

Otra alternativa que se me ocurrió, a la que llamo «Jungle Path», consistiría en sustituir la carretera por una especie de liana, y el autobús por un mono que se moviera por ella. Los objetivos serían probablemente la recolección de comida, algún de tipo de fruta, y evitar a otros animales salvajes. Naturalmente con este diseño se me plantea el mismo problema que antes, ya que la creación de los gráficos se me hace aún más complicada que con la opción anterior. Para simplificar creo que me bastaría con algún tipo de representación simbólica, como una especie de token con las cabezas de los animales por ejemplo.

El tercer diseño, por nombre «Cheese Maze», utilizaría un laberinto clásico como escenario, con ratones blancos a modo de cobayas como protagonistas y trozos de queso como objetivos. Curiosamente, aunque no acabo de concretarla, esta es la única opción para la que me he atrevido a hacer algo. Por una parte el laberinto, generado aleatoriamente, que se puede ver en la primera imagen de este post, tal y cual lo dibuja el prototipo actualmente. Teniendo en cuenta que está hecho en JavaScript no me puedo quejar del resultado, sobre todo por la continuidad de las paredas y las sombras, aunque hay mucho que pulir todavía. También he intentado dibujar un ratón, segunda imagen de este post, aunque el resultado no acaba de convencerme.

Tengo algunas otras ideas sobre el asunto, pero es bastante probable que opte por una solución mucho más sencilla y acabe utilizando unas simples tuberías o mangueras para hacer pasar agua de un lado a otro del tablero, desde un grifo hasta una boca de riego o algo parecido. No me siento muy positivo hoy, creo que esto va ir para largo.

Trabajar todos estos gráficos píxel a píxel suele llevarme mucho tiempo, y no pocos ajustes, hasta llegar a obtener un resultado que acabe de gustarme. El proceso que sigo es bastante básico y es el que siempre sugieren todos los tutoriales. Primero busco imágenes de referencia, después dibujo el contorno con las formas básicas (line-art), a continuación escojo la paleta de colores, los aplico prestando atención a la posición de las luces, y por último remato los detalles. Suena sencillo, pero me cuesta un mundo, será cuestión de practicar más a menudo. A escala tan pequeña todos y cada uno de los pixeles individualmente cuentan por si solos una barbaridad. Un simple píxel fuera de su sitio puede estropear el suave curso que se supone debería seguir una línea de contorno, por no mencionar como un simple cambio de tonalidad puede suponer el éxito o fracaso de un gráfico. Siempre he pensado que para apreciar mejor estas pequeñas obras de arte hay que ampliarlas de tamaño, para ver detalles que con sus dimensiones normales lucen fantásticas, y comprobar que se han resuelto con tan solo cuatro o cinco pixeles de distinto color. Hay mucho material increíble que puede encontrarse por Internet. Y es que parece que la masificación en el uso de dispositivos móviles ha hecho resurgir este noble arte del píxel-art que parecía destinado a quedar relegado a un segundo plano por el hoy omnipresente 3D.

Evolucionando como programador de videojuegos

La «estadística del pollo» dice que desarrollo un juego nuevo cada tres meses, una productividad que más que quisiera para sí más de uno, incluido yo mismo. El problema de esa estadística es que también dice que si tú te comes dos pollos y yo no me como ninguno, entonces «de media» nos comemos un pollo cada uno, aunque la realidad es que uno se harta y otro se queda a dos velas.

De los últimos 9 juegos que he publicado en la web en estos últimos 27 meses, hay algunos que me llevaron un par de días de desarrollo y otros que los he ido dilantando durante semanas, tomando horas sueltas de aquí y de allá. Lo interesante desde mi punto de vista es que puedo hacer un repaso desde la distancia y observar mi evolución como programador de videojuegos amateur.

Para los juegos de la web decidí usar JavaScript, así que para ir familarizándome con el lenguaje empecé con lo básico, un Arkanoid del cual llegué a hacer tres versiones. Comenzar escribiendo un clon de algún juego sencillo (Adivinar un Número, Ahorcado, Tetris, …) es lo que siempre se recomienda cuando se está empezando, y no creo que sea un mal consejo, aunque yo creo que llevo demasiado tiempo siguiéndolo.

Después de ese primer juego fueron cayendo otros. Un Mahjong donde empezaba a usar gráficos estáticos, aunque no tenía ningún tipo de variación sobre lo básico, ni puntuación, ni tiempo. Colors, un juego de emparejamiento de colores que hacía uso de un algoritmo recursivo fundamental dentro del género. Un Solitario donde tuve que lidiar con el drag and drop, y empezar a pelearme con las incompatibilidades entre distintas plataformas y navegadores. Un Sudoku donde puse a prueba el rendimiento del backtracing en un navegador. Discovery, un punto de inflexión en el que me reafirmé en mi condición de «coder» prácticamente nulo como «designer». Buscaminas, un entrenimiento como cualquier otro para pasar un frío fin de semana. Videopoker, un juego hecho para reaprovechar material gráfico y buscar formas sencillas de encontrar la mejor jugada posible. Y por último Confetti, posiblemente el más elaborado de todos ellos, tanto interna como externamente.

En mi último juego me he esmerado un poco más que de costumbre en el acabado y he tratado de ser un poco más original que de costumbre. Dos detalles:

– El marcador con la puntuación originalmente iba a ser un simple y discreto texto estático, pero a medida que trabajaba en el código me dí cuenta que el único objetivo del juego era conseguir sumar más puntos que en la partida anterior, así que decidí darle más protagonismo. El resultado fue un marcador bastante grande, visible de un sólo y fugaz vistazo. Para mejorarlo un poco y hacerlo más atractivo visualmente decidí que cada número apareciera desplazado verticalmente de forma aleatoria uno o dos pixels. Un cambio pequeño pero que queda muy bien, ya que le quita rigidez a la puntuación y le da un poco de vida. No contento con eso decidí que debía tener algún tipo animación, así que hice que la puntuación fuera subiendo gradualmente en vez de de un sólo golpe. Queda muy bien cuando termina la partida y se puede ver la puntuación subiendo todavía.

– El contador de tiempo en un principio tenía que haber sido la clásica barra que fuera subiendo hasta alcanzar su tope, pero después de echar un vistazo a algunos juegos comerciales (en plan «casual») me fijé que normalmente tenían algún tipo de detalle diferenciador y decidí cambiarlo. En un principio pensé en un termómetro, pero luego me pregunté si podría implementar un sistema de partículas y simular un reloj de arena. Después de muchas pruebas lo conseguí. Incluso llegué a hacer uno con varios colores, pero era tan espectacular que distraía la atención sobre el juego y decidí no ponerlo. Curiosamente al final esto me llevó tanto tiempo que casi me hace abandonar la idea de hacer el juego completo, uno de los de los problemas de no tener diseño ni planificación previa (¿o debería decir «ventajas» cuando uno se es amateur?)

A partir de aquí no tengo muy claro hacía donde mirar y qué camino seguir, y es que creo que siempre trabajaré mejor por encargo que por iniciativa propia. En mi trabajo siempre me he encontrado cómodo con esa presión, buscando soluciones a problemas ajenos en un tiempo adecuado y con la calidad necesaria.