Monday, January 19, 2015

Nuevo video de muestra (modo 3 players coop)

   Estos días estuve trabajando mucho en cosas técnicas y probando bastantes cosas con el arte del juego, pero algo que creo que nunca mencioné, es que el juego se puede jugar en modo cooperativo de a 3 jugadores simultáneos. Los jugadores pueden ser reales, o controlados por el cpu. 

   Creo que nunca había mostrado un ejemplo de eso, así que aquí va un video, que también deja ver otras cosas nuevas: un prototipo de escenario (con nuevo estilo, más simple), ahora los fondos pueden tener elementos en movimiento, ahora el contador de combos se sitúa en la parte inferior de la pantalla y hay una nueva animación para caminar de F.Norris. También se puede escuchar la voz de F.Norris, que al igual que las voces de Ricardo y de Gal, forma parte del excelente pack de voces de http://www.apphiayu.com/casting.


Nota: El video puede verse a 60fps si eligen la calidad 720p60 HD.

   Como verán, he tardado mucho en postear algo nuevo, no porque haya abandonado el desarrollo, sinó porque no había muchas cosas nuevas que puedan ser interesantes para mostrar. Como sea... en los próximos días, mostraré algunos diseños de nuevos enemigos que aún no son definitivos.
   Hasta luego!

Saturday, January 03, 2015

Una técnica útil para detectar anomalías

Aviso: antes de que sigas leyendo, me gustaría avisar que esta entrada es de un tema puramente técnico, por tanto, si estás leyendo este blog queriendo ver "algo nuevo del juego", ni te molestes en leer lo que voy a contar de aquí en más, porque como ya dije, es puramente técnico.

Estos días estuve trabajando mucho en cosas que tal vez sean un poco aburridas de mostrar. Básicamente estuve corrigiendo muchos casos de borde, ajustando aspectos finos de la jugabilidad y agregando nuevas funcionalidades a los fondos (por ejemplo, objetos animados y capa con efecto "overlay" entre otras cosas).

Aún así, hay algo que me resulta interesante contar acerca de la dinámica de trabajo que estoy teniendo.

Tal vez hayan notado en la animación de la entrada "Profundizando un poco en el gameplay", que hay un pequeño número en la parte inferior, que va creciendo frame a frame. Bueno, ese número es simplemente un contador de frames... pero alguien se preguntó alguna vez "¿para qué?"... ¿que utilidad tiene eso para mí? Justamente... ese es el tema de esta entrada.

En mi framework, cuento con un sistema propio de "replays", lo cual me permite reproducir partidas enteras a mi antojo. Esto es particularmente útil a la hora de encontrar anomalías en el juego. ¿Para que utilizo un contador de frames entonces? La respuesta es muy simple: Para ir directo a los momentos cruciales de una partida. Un ejemplo: Digamos que yo estoy probando mi juego, y sucede algo extremadamente extraño, un personaje se comporta de una manera inesperada, etc... Si no hubiese grabado un replay, no podría ver con exactitud lo que pasó, por tanto tendría que comenzar a suponer muchos casos que pudieron generar dicha anomalía... en cambio, al contar con replays, cada vez que veo una anomalía o simplemente algo "sospechoso", miro el frame en el que estaba... y reproduzco el último replay guardado unos frames antes del momento en el que detecté algo (básicamente, hago que mi framework avance los frames anteriores rápidamente y vaya directo al frame que interesa). De esta forma puedo ver varias veces (o incluso debugear) casos en los que se producen anomalías (muchos de esos casos, por suerte, fueron solo sospechas).

Debo aclarar también, que estos "replays", son más precisamente "input replays", osea que la información que guardan, es solo el input de cada frame, teclado, mouse y joysticks. De esta forma, su peso es bastante ligero... puedo correr el juego desde el principio en un modo especial, que en lugar de obtener el input desde los dispositivos reales, lo obtenga desde el replay mismo, reproduciendo exactamente lo sucedido. Esta técnica es muy usada en emuladores que graban partidas enteras, y yo creo que es prácticamente esencial a la hora de programar videojuegos... además, su implementación es muy sencilla siempre que se haga sobre un framework propio.