viernes, 30 de junio de 2017

Cómo CREAR un JUEGO VIRAL para MÓVIL - PRIMERA SEMANA - HeyNau

Hey! Qué tal?

Toca empezar con el diario de abordo de esta aventura, no? En este post os pondré en situación con la primera semana de desarrollo del juego, desgraciadamente empiezo este pequeño cuaderno de bitácoras 3 semanas después, así que escatimaré bastante en detalles dando una visión general del comienzo del proyecto.

Tras haber hablado la idea con Jaime, el artista que forma equipo conmigo en este proyecto, y haber pulido de unaforma muy superflua la idea, me aventuro a dar los primeros pasos en el proyecto. Y claro.. por donde empezar? Qué es lo principal aquí? El personaje!

No hay un buen juego sin buenos controles, y no me refiero solo a con que botón saltas y con cual andas, cosa que ya nos trajo demasiados quebraderos de cabeza (al ser para móvil), si no a tener un buen desplazamiento, ágil, dinámico, con buena respuesta. Es horrible jugar a algo que se mueve desesperadamente lento, que se agarra a una pared y se atasca durante unas milésimas de segundo que te hacen pensar que los obstáculos no dependerán de tus reflejos, si no del maldito delay entre entrada y respuesta de los botones...

Aún con unos gráficos descargados de Don Google, el primer día conseguí hacer un controlador bastante majo, funcionaba bien y fluído, pero siempre dejando espacio al típico "bug", en este caso la velocidad de caída afectaba a la detección de colisión con el suelo. Pero para ser un previo no estaba nada mal.




Al día siguiente, ya dejando el control de lado, ya que era suficiente para ir probando, decidí empezar con el creador de niveles y su posterior generación del nivel a partir de la lectura de uno guardado. Básicamente el hacerlo "todo bonito" de tal forma que si había un tile (bloque) de tierra sobre otro, solo tuviera hierba el tile superior, vamos, unificar todos los bloques para que parecieran una única pieza en vez de pequeños recuadros independientes. De nuevo recurrí a un pack de texturas de Don Google para intentar aclarar qué es lo que buscaba precisamente. Por el momento solo era un texture pack colocado a mano, unos días después me pondría a automatizarlo.


Por si os preguntáis cómo automatizarlo, es sencillo. Básicamente el escenario mide 18px*10px, y se genera dentro de un array lineal de 180 espacios. Si el bloque que está 18 puestos atrás es igual al que estoy calculando, quiere decir que tiene un bloque encima. Obviamente también teniendo en cuenta las posiciones laterales y la inferior.

De cualquier forma, antes de empezar con esto, me vi en la necesidad de empezar a crear opciones de guardado y carga, para saber si funcionaba correctamente esa generación de bloques así que empecé a probar varios diseños que compartí por Twitter para que mis seguidores pudieran ayudarme a elegir la mejor opción. Finalmente esta fue la decisión conjunta y mis primeros pasos en la generación:


Rápidamente el juego empezó a coger forma, motivándome a probar más texturas como el agua y a crear niveles básicos. Queda bonito, no?

Sí.. quedaba bonito... Poco duró ese éxtasis ya que acababa de dejarle a mi "Yo" del día siguiente un reto bastante complicado: El Agua! Claro, el agua es sencillo.. un bloque con menos gravedad, que puedas nadar... pero ese problema apenas brillaba frente al titán que me iba a enfrentar ahora.
Cómo hago que el usuario manipule el agua!? Miles de opciones se abrieron ante mí:

• Si el usuario coloca un bloque y fluye desde ahí, como Minecraft? Pero el nivel apenas tiene 18 unidades de ancho, eso comería demasiado espacio...

• Y si pongo un bloque flotante? Pero claro... otra vez a hacer miles de sprites (imágenes) del oleaje del agua, además de que el agua flotante debería ser un oleaje suave, como de burbuja sin gravedad, mientras que un charco de agua sería más rudo. Entonces... Si la mitad flota y la otra mitad del agua está separada de la tierra?? 

• Vale, ya sé. El usuario colocará el agua y, todo lo que haya debajo se llenará hasta llegar al nivel en el que el usuario puso el primer bloque. Si rompe un bloque y permite que el agua fluya, automáticamente se nivelará.


De todas estas la opción que pensaba más viable era esta última, pero... Y si una habilidad que rompa bloques rompe el recipiente del agua? Seguirá estática? Además eso no permitiría alternar agua con lava u otros fluidos, que aunque sea ilógico, dará mucho más dinamismo a los niveles, total, cada dimensión se rige por sus reglas, no deben tener las mismas leyes físicas que conocemos.

Tras mucho debate, especialmente por YouTube y Twitter con mi comunidad, decidí recurrir a lo más sencillo. Pones un bloque y donde esté se queda. No hay más. Olas por la parte superior y, aunque no me convenza demasiado, recto y cortante por la inferior. No puedo permitirme matarme tanto para algo así a estas alturas del proyecto, quizás más adelante me plantee organizar algo con metaballs (esa especie de esferas que parecen gotas de moco flotando en el espacio).



No os imagináis cuán frustrante puede ser desarrollar el gameplay o los conceptos del juego, es interesantísimo, pero cuando vienen esos dilemas de la ergonomía del usuario, a veces te pueden traer de cabeza. Así que, nada como un buen descanso en la playa y recuperar batería para continuar con los proyectos diarios además de la creación de un juego viral para móvil!


Recordad que podéis seguirme en Twitter si no queréis perderos ni un detalle o preguntarme cualquier cosa:

Os leo en el próximo post,
Nau!






No hay comentarios:

Publicar un comentario