Apolo Vs The Sun Part1

10259945_304214656369997_2835325278273842766_nIntroducción

Voy a reconstruir un videojuego que hice el año pasado, por completo, en este caso es el turno del viejo  “La desesperación de Apolo”. Este juego no me gusta como está, en casi ningún aspecto, pero tengo la sensación que el gameplay, la simple mecánica, se puede explotar.

Por ello, junté un equipo de desarrollo pequeño para reconstruirlo y empezarlo de nuevo. El grupo encarado por “Goat Mengot Home” (el jugador que encontró todas las roturas del juego) va a ser las voces, Martin Oddino, será el músico y compositor, Ema Zen el artísta gráfico y seguimos abiertos a sumar otras personas dependiendo como avance el proyecto, pero el tiempo limite que me autoimpongo es inicios de marzo, quede como quede, publicarlo y seguir al siguiente proyecto…

Backstory

pulmonear3_leyendas_y_simetriaHace unos años atrás, en la comunidad de la página oficial de Duval (ahora conocida por el gigantesco grupo de Facebook), organizaban un pequeño concurso de creación de videojuegos, siempre quise participar pero no tenía ni la experiencia ni el tiempo, pero justamente por esas razones decidí participar en la última que tuvieron.

En este último concurso la temática para trabajar nuestros juegos debía ser “Leyendas y Simetría”. Me gustaron los temas y necesitaba un reto, algo que me ponga a prueba, algo que me inspire a estudiar nuevamente programación. Por aquel entonces estaba en el proceso de pasarme del lenguaje de Gemix (un excelente pseudo codigo enfocado en la programación de videojuegos, basado en el antiguo y amado DIV Game Studio) a Construct2 (un engine de creación de juegos 2d en html5, con una larga historia y una comunidad inmensa).

La razón de este pasaje de lenguajes es que veía a Gemix cada vez más distante de mis objetivos y a Construct2 más fácil y creciente. Así que este concurso de Pulmonear sería mi primera puesta a prueba con el engine.

Con el objetivo de crear un juego, sencillo basado en “Leyendas y Simetría”, quería poner a prueba el nuevo engine, pero justamente, un juego sencillo no era suficiente, por lo que me autoapliqué una nueva condición y era “Publicado en Facebook con Highscores”.

Ya estaba mentalizado. Ahora bien, el juego. No quería hacer algo tan raro, ya que realmente no era mi objetivo ser muy original sino poder aplicar tooooodas las propiedades que pudiera darme el construct2. Toqueteando tres o cuatro “Behaviours” (es una forma de decir scripts en construct), logré que un sprite diera vueltas y vueltas y vueltas al rededor de un punto, atados por una distancia y persiguiendo al mismo tiempo mi mouse… bastante impresionante considerando que apenas tenía lineas de código y no me esforcé en nada… Pero de allí en más faltaba mucho para un videojuego.

Apollo_disney_4La simetría era obvia en este caso, los círculos, girar y girar, tratar de mantener el equilibrio de algo que debe girar al rededor de otra cosa o perder, como el ying y el yang o… el SOL! 😀 bueno ya vamos por buen camino, ¿leyendas del sol? justamente unos pocos días antes, había visto (por decimocuarta vez) la película de disney Hércules, el cual recordé que tenía una serie de dibujos animados hacía mucho tiempo, del cual recordé un capitulo 😀 el capítulo en el que salía Apolo y su poderosa carroza tirando el sol al rededor del mundo… el cual por giros de la historia del capítulo hercules trata de hacer lo mismo pero se quemaba con el sol… bueno…

No tenía tiempo ni gráficos para hacer todo en hércules con tanta historia que explicar, por lo que decidí reducirlo: Apolo escapa del sol, el sol trata de alcanzar a Apolo, si Apolo no gira al rededor de la tierra el Sol se lo come… bueno, ya tenía el “Argumento” mi “Leyenda y Simetría”…

Desarrollo

Clipboard02 En este caso no pasé tanto tiempo por el papel y lápiz, ya que estaba experimentando con construct2. Esto te sirva de advertencia lector, que si no haces una buena planificación en papel y lápiz, tan solo estas experimentando y los experimentos pueden terminar como terminó este juego: Lleno de huecos.

Los límites de la versión gratuita de Construct2 eran más que suficientes para hacer el juego completo en aquel entonces. Para aprovechar lo mejor posible ese límite de lineas de código (o Events, como se llama en construct2), hice mucho uso de los behaviours, estos concatenados le dan a construct un poder interesante al momento de prototipar juegos.

3º Mucho testing: Este juego, al estar haciéndolo al “ring raje” (una forma de decir a tocar y ver que pasa y salir corriendo por no saber qué pasa), requirió de una absurda cantidad de testeo, constante. Lo más difícil en este juego simple, fue coordinar correctamente los clicks con el movimiento constante de “la Carroza”.

4º Gráficas, los gráficos quise hacerlos lo más minimalista posible, pero entre que no sabía y no quería gastarme en gráficos, terminé haciendo una suerte de monedas que escapan de pelotas :P.

El éxito!
El éxito!

5º Publicado en Facebook, aquí vino el terror, resulta que en aquel entonces, facebook era bastaaaante restrictivo con los juegos que podías publicar, hoy incluso tiene algunas restricciones algo duras (por ejemplo debe estar publicado en una web con SSL, HTMLS) lo cual es costoso y no muy práctico para quien solo está probando un engine.

Hoy en día por suerte se “ablandaron” un poco y permiten que uses todas las funciones pasando por una prueba.

Para empezar, publiqué el juego como una aplicación (ya que si decía que era un Juego, te caían con todas las restricciones, pero por alguna razón las aplicaciones no lo tenían). Hoy podes hacerlo directamente como juego.

También en aquel entonces te obligaban a crear una página en fácebook, lo cual hoy ya no hace falta. Podes simplemente usar tu propia web o no tener web (si se trata de una aplicación de android por ejemplo).
El tema es que renegué mucho, fue bastante difícil hasta que encontré los “botones adecuados”, también me enteré de limites en el uso de Facebook con Construct2 por ejemplo para las aplicaciones de android, que por suerte hoy en día también están solucionados 😛

Tips And Tricks:

Facebook:

Hace menos de un año se veía mucho más amenazante...
Hace menos de un año se veía mucho más amenazante…

La parte que más les interesa a quienes llegaron hasta aquí es los pasos a seguir para publicar, pues les digo que es más fácil de lo que parece, en primera instancia deben estar en la developers zone de facebook. De allí van a “My Apps y Create new App” Aquí encontrarán una serie de pasos a seguir que son extremadamente sencillos.
1 Cómo les dije antes, no hace falta seguir toooodos los pasos, una vez creada la “app” de face, vas a las configuraciones y le entregas los datos que piden, el más curioso es el de copiar el App ID y App Secret, que tus juegos deben tener en sus configuraciones del codigo de face (en construct es en el plugin facebook, que tenes para rellenar esos datos).
2 Luego el Setting, donde colocas ¿dónde se juega? (recuerda que “app domain” es el dominio principal, no la dirección al juego), ya con eso alcanza.
3 Si querés usar por ejemplo los Highscores de facebook o la lista de amigos de face, vas a tener que ir a “App Details” y completar todo TODO HASTA LOS ICONOS E IMÁGENES, el vídeo es el único que no hace falta. Luego en “App Center Permisions” elegir los permisos que vas a usar por ejemplo user_friends o user_game_activities.
4 Finalmente, vas a “Status & Review”, lo activas y lo mandas a Items in review (aquí sigues los pasos, completas todas las preguntas, vas a necesitar más screenshots y tratar de ser lo más claro posible porque son bastante idiotas difíciles de convencer. Pero en un día recibís la respuesta y vas ajustando según te indican 🙂

La clave de los behaviours de construct:

es aprender a combinarlos, aprender que un “bullet” no necesariamente es una bala de disparo, sino que puede ser por ejemplo, un simple empujón del ultimo eslabón de cadena, que sumado a un “Pin”, puede generar un tironéo interesante parecido a una cadena tirando de un caballo.

El tiempo refleja vida

Así como la combinación es la clave de construct2, en la programación de videojuegos que quieran dar una sensación de vida, no importa donde lo hagas, la clave es y será siempre “Timers”, tiempos, un cuidadoso acomodo de DONDE, CUANDO y POR CUANTO TIEMPO. Programar el aparecer o suceder, frecuencias, secuencias, consecuencias y movimientos cíclicos, sinuosos o simplemente moverse un poco. Un ejemplo: en un juego por turnos programar un timer que haga hacer un suspiro al personaje cada 5 segundos, pare recordarle al jugador que la pantalla no está congelada y que su personaje está vivo.

50 Shaders of genius

be

A esto no hay que olvidarse de los Effects, conocidos como “Shaders” en lenguajes 3D, que existen en photoshop también como “Modos de fusión” en las capas. Los Effects o shaders, es una ecuación matemática compleja usando colores y pixeles, que provoca distorsiones en el resultado los pixeles, de una imagen completa o de lo que vemos en tiempo real, así pues por ejemplo un circulo celeste + Effect “Brillo” + fondo negro con poco porcentaje de azul muy bajo, genera un curioso efecto de “noche y día”, sin hacer dos imágenes y le da vida.

El tema es simplemente “probar”, porque lamentablemente este tipo de efectos especiales requieren cierta compatibilidad, en muchos casos también depende donde se van a ver, por ejemplo muchos de los effects de construct no van a poderse ver en exploradores des actualizados o androids viejos.

Continuará…

Debido a que tengo todo un mes para desarrollar la nueva versión, dejaré hasta aquí lo que fue la vieja versión, en el próximo capitulo entraremos a repasar el codigo y mejorarlo con la experiencia que tengo actualmente y la orientación que le daremos al juego.

Así que nos vemos próximamente, Adelante, héroes!


Vistas: 280

Abuelito: Desde Los ojos de Un niño

banner

fotochicosBackstory

Este pequeño juego, corto y simple. Lo desarrollé para un concurso al que ni si quiera me dejaron entrar (al parecer “Relato digital” no entra una novela gráfica y era solamente presentar historias en PDF -_-” pero bue…)

Lo más interesante de este juego es de donde se me ocurrió… (se desvanece la vista al mejor estilo de que se viene un flashback) A mediados del 2014, estaba acompañando a una amiga que tenía un puesto en una feria de artesanías. Caída la noche del último día, les ayudaba a desarmar el puesto, en vueltas de esas me toca quedarme a cuidar las cosas que estaban afuera, mientras esperabamos que llegara la camioneta para cargarlas. Mi amiga se va a buscar más cosas y quedo solo detrás de una casilla de seguridad vacía.

En el silencio de la noche (el cual es bastante ruidoso en mi cabeza), un niño aparece por mi espalda saltando una tapiesita algo baja, y se me acerca haciendo gruñidos y sujetando algo en la mano; lo miraba con desconcierto y sonriendo tratando de entender qué quería que haga o si quería darme algo… El niño se me acerca y con un rostro tranquilo (demasiado para estar con un extraño en medio de la noche) me dice -“este es mi dinosaurio, es un anquilosaurio.” ahora no solo estaba sorprendido de que el niño de la nada me explicara esto, sino que también, por su edad, me sorprendía lo bien que pronunció el nombre del dinosaurio de juguete… pero apenas empezaba.

Me entregó su dinosaurio y me contó una aventura que estaba teniendo en ese instante, el dinosaurio era “malo” y él lo estaba entrenando. Me dijo también que ahora mismo me estaba atacando (ya estaba yo dentro de su historia sin darme cuenta) y yo como gran grandote pelotudo, actuaba de que el dinosaurio me mordía, pero el niño me lo quitó de las manos y me explicó que ese tipo de dinosaurios ataca con la cola y golpea con la espalda. Repito, el niño no debió tener 10 años de edad.

Tras explicarme el comportamiento del dinosaurio me lo vuelve a entregar, así que continué con mi actuación pero esta vez, de una forma más cientificamente aprobada.

Siguó contandome de que tenía muchos otros dinosaurios, de que él era el salvador de los dinosaurios porque están todos escondidos y congelados. De que él tenía un poder especial: Podía descongelarlos… y tocó el muñeco que yo sostenía con el dedo (imaginé que ya estaba descongelado y por eso me atacaba, así que por lógica, ahora debería congelarse), por lo que reaccioné como si se congelara. Luego volvio a tocarlo y obviamente se descongeló.

Siguio contandome con los nombres reales de cada uno de sus pequeños dinosaurios. Incluso, me dijo que era poseedor de un huevo de dinosaurio que encontró bajó una piedra en su patio, no tengo idea qué habrá sido realmente… pero justamente al hacerme yo esa pregunta me creó otra pregunta:

¿Cómo puede ser que un niño que conoce tanto de dinosaurios tenga tanta imaginación con ellos? y otra vez… esa pregunta que me hice volvió a gatillar en mi interior un sentimiento de nostalgia y al mismo tiempo de pesor ¿Porqué ya no tengo esa imaginación? ¿Porqué me cuesta tanto seguirle la corriente? A mí que me siento siempre un niño, yo que creía tener en mi cabeza un universo creativo infinito… estaba aplastado y apedreado por un niño de menos de 10 años. ¿cómo seré dentro de 10 años más?… ¿cómo veré esas cosas? ¿recordaré que alguna vez fuí así?…

Desarrollo

No tengo muy documentado cómo lo hice. Tan solo les diré los pasos que seguí:

1º Elegir el tipo de juego: Para este punto lo tenía muy claro, si en el concurso pedían “historia digital”, quería hacer una aventura gráfica, pero, no contaba con mucho tiempo (1 semana) por lo que decidí reduciClipboard03rlo a un simple Point and Click.

2º Papel y lápiz: Por experiencia, sabía que para hacer un videojuego bien, hay que empezar desde el papel y el lapiz. Plantear todos los escenarios posibles (escenarios en el sentido de las opciones, acciones, interacciones y posibles dinamicas que quisiera conseguir) y luego reducirlo a lo que sea más conveniente y alcanzable.

3º Más papel y lápiz: Una vez que tengo en claro las mecanicas que voy a usar y los objetivos que quiero comunicar (sentimientos y reflecciones) armé una breve historia en modo de diagrama de flujo. Algo que noté es que no tengo tiempo de hacer “multiples caminos”, así que lo reduje a una historia lineal pero dividida en “Etapas”.

4º A programar: Definido lo que voy a hacer y la historia (pulida bastante) trato de plasmar paso por paso lo que tengo escrito. Fue fácil dentro de todo pero costó (obviamente) lograr que todo esté coordinado.

Notas de desarrollo: Solo me hicieron falta 2 variables: Instancia y Tocar. Instancia es la etapa de la historia, cada click que hacías sobre un objeto tendría una respuesta diferente dependiendo la etapa en la que se encontraba.

Tocar era para saber cuando bloquear los comandos y evitar “desparramos” de eventos.

Clipboard02El resto es bastaaaante lineal, gracias al Construct2, los eventos y las interacciones fueron fáciles de programar, dividí la hoja de eventos en 3 partes: Sistema, Abuelo y Nene. Sistema claro es para controlar todo lo referido a cosas globales o que no dependian del abuelo y del niño. Y luego Abuelo y Nene, eran para acomodar TOOOOODA la programación de simples clicks.

Lo interesante que aprendí al desarrollar este tipo de juego, el point and click, es que programaticamente no es un esfuerzo, pero para acomodar y lograr eventos y escenas interesantes hace falta mucha coordinación.

Por suerte, gran parte de esto ya lo tenía practicado cuando hacía juegos con RPG maker o el Hamster Republic, en los cuales solo se trataba de programar esas actuaciones de los personajes con tiempos y animaciones.

Clipboard02El arte, en pixel art, fue por obvias razones de que no tenía tiempo para hacer algo más complicado ni de buscar a alguien que se encargue. (es algo a pulir en versiones futuras si se dá la ocación o si alguien se ofrece 🙂 )

El pixel art fue de lo más simple que pude, colores contrastantes y cuadrados. Seleccioné una paleta muy limitada de colores para tratar de diferenciar los personajes del fondo fácilmente.

Volviendo a la historia y la imaginación del niño, quería resaltar el contraste de la realidad que uno ve y la realidad en “los ojos de un niño”, para ello exageré un poco … bueno demasiado… si quedó medio feo, el mundo del niño (que en programación solo era cambiar un sprite por otro con el boton de ojos, y agregarle un efecto de “zoom” para hacer sentir que todo es más grande desde sus ojos).

En este mundo fantástico debía diferenciar bien lo que era “vivo” de todo el resto. Así como el niño veía en el dinosaurio de juguete un personaje con actitudes e historia, también veía que eran diferentes al resto del mundo, otra cosa que sucedió mientras charlaba con el niño, en la vida real, fue que en un momento sacó un juguete de esos tipo puzle, el puzle eran varias tablitas atadas de una forma que uno podia levantar una y el resto hacían un efecto de caída siempre hacia abajo dejando la que tomaste primero, el tema es que este juguete el niño no lo veía igual que su dinosaurio, sí decía que era una serpiente, pero sin mucha “fe”.

Entonces, para lograr diferenciar estas cosas que solo él sentía con fuerza, decidí usar personajes “photoshopeados” para los más vivos (los dinosaurios y el palomactilo).

Bueno, eso fue todo. Ahora podes disfrutarlo en el playstore en el celular 🙂 es una linda experiencia. Espero sus críticas y comentarios!! 😀288179_GooglePlayBadge1_533F447D5BF55

 


Vistas: 350