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!






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

Hey! Qué tal?

Esto va a ser duro pero interesante! Por primera vez me animo a escribir un pequeño diario de abordo de uno de los juegos en los que estoy trabajando, quizás uno de los más completos hasta la fecha. Día a día iré actualizando este blog con nuevo contenido, añadiendo los avances de los que haya recordado tomar una captura y contándoos nuestras divagaciones, ideas y avances hasta la fecha.


Sinopsis

Os pongo en situación. Estamos desarrollando el nuevo juego de "Portales" o.. "Dimensiones".. o.. realmente aún no nos hemos parado a pensar en el título. Se trata de un juego en el que llevarás a un equipo de 5 personajes (elegidos por ti), a completar un laberinto de dimensiones y mundos paralelos. En cada partida deberás alcanzar la dimensión número 100 pero no obligatoriamente pasando por todas las anteriores, ya que cada nivel dispondrá de dos portales a forma de meta final: Uno que te llevará al siguiente nivel y otro que te teletransportará a un nivel totalmente al azar de los 100. Todos los niveles son cortitos y creados por los propios usuarios, con sus plataformas, enemigos y obstáculos a superar. 

Como es de suponer, 100 niveles, y con posibilidad de perderte entre ellos, puede convertir este juego en una auténtica pesadilla laberíntica, así que aquí es donde entran los personajes.

Dispondrás de gran cantidad de personajes, con habilidades especiales únicas, que podrás ir desbloqueando durante el juego. Personajes que a su vez tendrán la función de "vida", ya que cada vez que uno muera, quedará inutilizado hasta acabar la partida y tras esta se penalizará con la espera de "un tiempo de resurrección" para volverlo a incorporar a tu equipo.

Las habilidades de estos personajes pretenden ser de lo más dispares: destruir algún bloque, trepar por las paredes, inmunidad al fuego, escudo protector, inmunidad a ciertos obstáculos... permitiendo así "romper" los niveles que ha creado la comunidad y a los que a ti te toca enfrentarte. Pero ojo al configurar tu equipo, ya que antes de cada nivel deberás elegir qué personaje entrará primero a la dimensión, con la desventaja que traería seleccionar a un personaje "Experto buceador" en un mundo desértico. Cuando este personaje muera, deberás elegir a otro del equipo que pueda completar con más facilidad ese nivel.

Hay muchas más características que me gustaría detallar aquí, pero ya no formarían parte de la idea principal, dicho esto, espero que estéis atentos al blog para poder ver los avances día a día.

(Click aquí para ver el post de la primera semana de desarrollo)

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

Os sigo contando en el próximo post,
Nau!