jueves, 3 de julio de 2014

Boo & Marung: lo que quiso ser y lo que es

Comento en esta entrada algunos aspectos jugables que definen a Boo & Marung, así como ciertas ideas iniciales que cambiaron o se desecharon.

Boo & Marung quiso ser un juego humilde desde el principio, sin más aspiraciones que la de satisfacer las ganas de realización de un aficionado como yo. Los mismos diseños visuales, de corte desenfadado e infantil, pretendían reflejar esto.

Cacho de una de las libretas que me acompañaron

Y desde luego ha quedado humilde; más de lo pretendido. Me hubiese gustado un juego más ágil, tipo Pac-Man, donde el lanzamiento del bumerán (¿algo que ver con el nombre del juego?) fuese más frenético, con personajes más grandes y espacios más pequeños, menos puzles y más acción. Sin embargo, esto fue cambiando poco a poco a lo largo del proyecto sin pretenderlo. Me gustaba el nuevo enfoque que le estaba dando aunque ahora pienso que los puzles son una salida más fácil que la acción. Eso sí, el "sigilo" ha ganado con el enfoque final.


También quería al principio unas escenas automáticas totalmente distintas al resto del juego, desde una perspectiva lateral y mezclando bitmaps y gráficos 2D vectoriales. Iban a incluir "líneas auxiliares" que, junto con el resto, vibrarían para dar la impresión de un dibujo hecho a mano. Esto fue descartado a mitad del proyecto por el inmenso trabajo que requería y por la poca calidad que yo era capaz de darle. Deshacerme de esta característica fue como soltar un lastre agobiante. Revitalizó el proyecto y me ayudó a descubrir que, a veces, es necesario renunciar a ideas que considerábamos básicas. Eventualmente podemos llegar a la conclusión de que eran incluso desacertadas.

Boceto del estilo descartado en las escenas

Este tipo de escenas más elaboradas se debía a que el juego iba a tener un trasfondo de aventura mucho más profundo y a la vez más explícito. No obstante, de esta idea de recrear animación a mano quedó una curiosa escena hacia la mitad del juego que comentaré en otra entrada dedicada a curiosidades y secretos.

Algo que sí tenía claro al comenzar, y que se ha mantenido hasta el final, es que quería un juego para tocarlo. Siempre he sido partidario de que los juegos aprovechen la plataforma en la que corren, y ya que iba a ser un juego para pantalla táctil, quería sacarle partido a eso. Boo & Marung no puede jugarse en condiciones si no es con pantalla táctil. Su diseño requiere de esta característica y creo que el juego se lleva muy bien con ella.


Aunque no lo parezca el juego realiza un trabajo considerable en la interpretación de las entradas. Analiza lo que hace el jugador cuando toca la pantalla para intentar averiguar lo que realmente pretende. Así, desliza los puntos tocados, si estos dan en sólidos, hacia zonas libres cercanas. O ajusta el trazado del bumerán a las paredes para que pase por sitios estrechos. O ignora la entrada si cree que el usuario se ha arrepentido a la hora de desplazar a Boo o de lanzar a Marung. Como digo, esto se ha intentado cuidar mucho y puedo garantizar que en las primeras versiones, haciendo caso de las entradas "a lo salvaje", la experiencia era muy inferior a la final.

Por cierto, me da vértigo mirar atrás y ver la evolución del juego desde sus primeros prototipos... Este era el aspecto tras unos 6 meses de desarrollo:


El juego iba a contar al principio con nada menos que ¡300 pantallas! Finalmente quedó en unas 75, creo que suficientes para la dificultad del juego.

A este respecto me hubiese gustado haber cuidado algo más la curva de dificultad. Llevaba un Excel donde registraba, entre otras cosas, la dificultad estimada de cada pantalla, para así cuidar la mencionada curva y sus oscilaciones, pero claro, sin un testeador que me diera su opinión, todo quedaba demasiado a mi criterio.

La duración es algo que precisamente por eso no tengo muy claro de cuánto supone para el jugador medio. Yo puedo terminar el juego cogiendo todas las gemas en poco más de una hora, pero claro, yo me sé todos los puzles y secretos xD.

Lo que sí he cuidado es que el juego fuese de más cantidad a menos; con ello quiero decir que cada nueva ambientación tiene menos contenido que la anterior. Esto fue deliberado porque me gusta que cuando juego me dé la sensación de que cada vez voy más rápido. Esto también ayuda a dinamizar el juego.

Otra de las ideas que tuve en consideración incluso antes de empezar, era la utilización de inteligencia artificial. Por supuesto, nada del otro mundo, pero sí algunas características típicas de los juegos: como un algoritmo de pathfinding o máquinas de estados finitos para los estados de los personajes, entre otras cosas.

Algo que contribuyó a enriquecer mucho el juego, y que en parte fue el causante del cambio de juego de acción a juego de puzles, fue el sistema de puertas-pulsadores-bloqueadores.


Junto con mis amigas las ovejas solares, las sunsheep, los puzles disponían de la base que necesitaban. Tenía una gran preocupación de que los puzles, al igual que el resto de reglas del juego, no funcionaran. Ha sido muy satisfactorio comprobar que sí han resultado: suponen limitaciones sin fisuras que el jugador debe superar de la manera prevista. Con una mecánica tan amplia como la que ofrece el juego (para mi nivel), esto ha sido un logro extraordinario.

A propósito de las ovejas, implementar su física fue un pelín complicado. No tanto por la aritmética de los vectores ni por la detección de colisiones, ¡sino por eso y todo lo demás que hubo que tener en cuenta! Para empezar había una importante cuestión de jugabilidad que había que resolver. Al principio las ovejas podían ocupar cualquier posición de la pantalla, no teniendo que acabar necesariamente centradas en una de las celdas invisibles en las que está dividido cada nivel. Este exceso de libertad complicaba innecesariamente la vida del jugador.

Si las mueven se ponen contentas, las muy jodías ^^
Con el proyecto bastante avanzado, supuse que el jugador sólo estaba interesado en que estos bichejos ocuparan celdas en su punto central. Entonces se me ocurrió la idea de hacer que cada celda fuese un "sumidero" y que todas las ovejas acabaran centradas en una celda cuando bajaran de un umbral de aceleración.

Otra de las cuestiones a considerar fue que las ovejas rebotaran con más fuerza contra las paredes cuando había un personaje cerca, para así evitar quedar atrapadas entre él y un bloque. O que escaparan de una puerta que se cierra. Mil detalles, como con todo.

Dicen los cánones que todo juego debe tener un valor que conseguir por el jugador, entiéndase por ello puntos, monedas y cosas así. Aunque no soy muy de seguir cánones, no quería pasarme de listo e incorporé esta idea, de lo cual me alegro. Opté por gemas en un homenaje onanista a Lucky Rain. Las gemas son uno de los pocos elementos de estado persistente del juego, es decir, si vuelves a una pantalla donde ya cogiste alguna gema, esa gema no aparece.

Not redeemable for cash

Otros elementos singulares fueron los electrificadores, necesarios para electrificar ovejas y aturdir así a ciertos tipos de enemigos. Veía necesario algo de este tipo aunque no sabía exactamente por qué. Ahora, aunque no tengan la contundencia de otros juegos, sé lo que son: powerups


La variedad de enemigos no fue algo que me preocupara mucho. Sabía que habría pocos tipos y así ha sido. Lo malo es que el aspecto también suele ser parecido, lo que incrementa la sensación de monotonía.


Y no sólo eso, sino que las animaciones también fueron reducidas al mínimo. Esto no estaba previsto. Es más, conseguí hacer un sistema de controladores de animación que no quedó mal, pero hacer gráficos seguía siendo un suplicio para mí y además ya me había quedado sin tiempo. Así que tuve que tirar de ingenio: lo único que dibujé de los enemigos (y del protagonista) fue la imagen anterior. A partir del gráfico de un personaje, roto e invierto bitmaps para generar las posturas (dos) y las orientaciones (ocho) que puede tener. Minimalismo minimalista.

En otra entrada lloraré más profusamente sobre lo desafortunado que es dedicar tiempo y energía a implementar sistemas que luego apenas puedes lucir por lo costoso que resulta crear recursos para ellos.

Casi al final del todo añadí algunos efectos de luces, chispas y animaciones sencillas del decorado (todo hecho a mano, como el resto). Me agradó comprobar que el sistema montado soportaba bien este tipo de añadidos, además de que el aspecto lo agradecía bastante.


En mis planes iniciales estaba crear tres o cuatro jefes finales para los que ya tenía algunas ideas. Pero a seis meses del final aún no tenía ninguno implementado, así que tuve que tomar otra dura decisión, sólo haría un jefe final. Para mí lo importante era demostrarme que podía "romper" la mecánica general del juego, establecer una excepción a las reglas del mismo, y para eso con uno bastaba. Sin embargo, reconozco que cabía refinar más la mecánica de este jefe y la interacción con él.

Del jefe no pongo imagen para dejar un halo de misterio que deje al público sin dormir... Bueno, sigue en la línea modesta del resto pero sí difiere más en aspecto y tamaño.

El juego guarda la partida automáticamente en uno de tres slots, hecho que se produce al abandonar una pantalla. Esta característica es muy típica de los juegos y no quería dejarla pasar, además de que es muy apropiada para un juego de smartphone.

Ya que he mencionado que es un juego de smarthphone, también tuve que tener en cuenta esto para anticiparme a interrupciones como llamadas que se reciben mientras juegas o jugadores que quieren salir del juego con mucha rapidez. Había que hacer el juego robusto ante este tipo de sucesos.

Diré también que la ayuda iba a consistir en secuencias animadas. De nuevo por la falta de tiempo, quedó en imágenes estáticas apoyadas por iconos y textos. Creo que son suficientes pero indudablemente lo otro habría quedado mejor.

Hay muchísimos aspectos sobre los que hablar, si he mencionado estos es por mencionar algunos, no porque sean los más importantes. En futuras entradas hablaré de forma más concreta de algún otro que me parece curioso, aunque siempre quedarán cosas sin mencionar de mis trabajadas libretas y mi refactorizado código.

No hay comentarios:

Publicar un comentario