Wednesday, June 03, 2015

A veces es mejor en silencio

   Hace tiempo que siento la necesidad de aclarar algo, pero no había encontrado el momento ni la inspiración para expresarlo correctamente. Hoy, finalmente "se alinearon los planetas" y me siento inspirado como para escribir al respecto.

   Quienes siguen este blog, habrán notado que no actualizo nada desde hace ya varios meses. Tal vez incluso piensen que he abandonado el desarrollo del juego. Por fortuna, les comento que esto no es así, dado que sigo desarrollando como siempre y avanzando muy bien. Sin embargo, creo que estoy debiendo una explicación al respecto... de paso, me daré la libertad también de reflexionar acerca de un tema que considero muy interesante: "las ventajas y desventajas de la exposición de un juego en desarrollo".

   Creo que hoy en día está muy "de moda", el hecho de mostrar como un juego va desarrollándose, incluso, cuando éste lo hace lentamente, ya sea por ser desarrollado por un equipo pequeño, por ser un proyecto demasiado ambicioso, o incluso por ambas cosas. Si bien, como desarrollador de videojuegos, me resulta interesante seguir ciertos blogs de desarrollo, debo reconocer sin embargo, que al hacerlo, pierdo casi todo el interés que podía tener en jugar dichos juegos. No se si esto le pasará a mucha gente, pero a mi si que me pasa, y me parece algo bastante "revelador" en cierto modo... me explico: Imagina por ejemplo, que ves el "detrás de cámaras" de una película que saldrá dentro de 1 año, pero además... mes a mes, te muestran avances de como van haciendo ciertas escenas, el desarrollo de los personajes, etc... ¿Piensas que cuando esté lista la película tendrás el mismo interés de verla, que si te hubieses enterado de su existencia cuando ya estaba disponible? En mi caso, esto no sucede. Incluso, voy perdiendo el interés al pasar tanto tiempo viendo algo que aún no está listo. Lo más probable es que no me sorprenda en lo absoluto, una vez que el producto esté terminado.

   Hoy en día es común ver que ciertos juegos se expongan demasiado en fases tempranas del desarrollo, o incluso, se permita un acceso anticipado (early access), permitiendo también, hacer un testing más intenso y acertado. Todo esto muchas veces forma parte de una campaña de financiación (crowdfunding), que es primordial para que el estudio en cuestión tenga dinero para poder avocarse a terminar el juego (todos necesitamos dinero para sobrevivir), en dichas campañas, se suele hacer una "preventa", la cual permite a su vez, el acceso anticipado, a versiones beta o incluso alfa, del juego.

   Como muchos ya sabrán, este juego no tiene financiación externa, básicamente lo hago yo solo en mi casa sin recibir dinero por ello, lo cual me gusta mucho, debo decir, porque me siento libre de crear el juego que quiero, como yo quiero. Pero, si no necesito financiación externa para acabarlo... ¿Que sentido tiene mostrarlo/spoilearlo cuando aún no está listo para ser jugado "en todo su esplendor"? Supongamos que, dada la situación, decido proveer un acceso anticipado al mismo, de forma tal que quienes quieran jugarlo, puedan hacerlo. Vuelvo al ejemplo de la película: Imagina que ves una película... luego de verla, sientes que tuvo unas cuantas escenas que no se entendían muy bien, y que podrían ser mejoradas... te dejó un gusto un poco amargo, pero no te pareció mala del todo... incluso, se podría decir que te gustó. Ahora, imagina que cada mes, sale una versión con algo corregido, alguna escena mejor actuada, etc. Cuando esté la película completa... ¿crees que te va a gustar lo mismo, que si la hubieses visto terminada por primera vez?

   Se que mis comparaciones no son del todo justas, porque una película y un videojuego (si bien, en algunos casos no tanto) son cosas muy diferentes. Pero creo que se entiende la idea. Hacer videojuegos de buena calidad, lleva mucho tiempo, y si a ese tiempo le agregas la tarea de mostrar lo que estás haciendo, no solo vas a hacer que la gente se aburra de tu juego antes de siquiera poder probarlo o (en el caso de un acceso anticipado) que se aburra de probar pequeños cambios de un producto incompleto... sinó que también perderás mucho tiempo valioso en tratar de hacer "entretenido para afuera" algo que solo es "entretenido para adentro", como lo es, el proceso de creación de un videojuego.

   Existe un momento en el que muchos ven un juego y dicen "shut up and take my money!"... más vale que en ese momento, dicho juego ya esté disponible.

   Siéntanse libres de comentar o debatir al respecto, esto es solo una mera opinión personal y estaré encantado de leer tanto argumentos a favor, como argumentos en contra.

Sunday, February 08, 2015

Varios ajustes y algunos cambios

   Estos días he estado trabajando en muchas cosas internas del juego, pero también en otras que cambian bastante la jugabilidad (para bien!).

   Una de las cosas más significativas, fué el hecho de que decidí agregar un botón más al juego. Dicho botón es el de "ataque especial". Si se fijan en el video que hay más abajo, verán que hay una pequeña barra al lado de la cara del personaje. Dicha barra, te permite hacer ataques especiales o de escape, sin perder energía, siempre y cuando se ejecute dicho movimiento cuando la barra esté completamente llena. Estuve probando muchas formas de hacer ataques especiales, y creo que esta es la que más me gustó... por un lado, debo reconocer que me sentí un poco frustrado, porque este sistema es similar al de Streets of Rage 3... aún así, es un poco diferente, porque el ataque de escape se puede ejecutar libremente, solo que al conectarse, se pierde la barra de especial, y si no estaba llena, se resta un poco de energía también... por otra parte, en Streets of Rage 3 no importa si el ataque de escape fue conectado o no.

   Este nuevo sistema también me tienta a hacer otros añadidos que no son muy complicados de implementar, pero si afectarán mucho la jugabilidad (para bien!). Por ejemplo, al disponer de un tercer botón, ahora puedo hacer que el comando para lanzar el arma, sea más accesible... y lo es, porque ahora en lugar de hacer una secuencia extraña, se hace simplemente presionando los 2 botones normales (ataque + salto)... igual que Streets of Rage 2 & 3... otra vez. También habrán otras mejoras de las que hablaré en futuras entradas.

   Otro de los grandes cambios que hice, fué en la inteligencia artificial de los personajes. Básicamente, y dicho de forma sencilla, los enemigos se suelen "turnar" para atacar. Esto genera que muchos de los enemigos esperen su momento, dejando mas claro el panorama y permitiendo al jugador tener con quien pelear una vez que derriba enemigos, sin tener necesariamente que esperar a que los enemigos derribados se reincorporen en batalla.

   Otro detalle bastante importante también, es que ahora Gal puede conectar su combo normal entero a enemigos que se encuentren en los bordes de la pantalla (antes los enemigos se iban de rango al golpearlos y desplazarlos contra un borde).

   Con estos detalles la jugabilidad ha mejorado notoriamente, digamos que ya no se siente "culpa" al utilizar ataques especiales, porque pueden ser utilizados libremente al tener la barra de especial llena.

   Otra cosa muy simpática que sucedió estos días, es que detecté un error en mi lenguaje de script ("sebascript"), que me daba resultados ridículos, por ejemplo "5 - 1 - 1 = 5"... esto era un error en la operación de la resta que estaba tomándolo como "5 - (1 - 1)".

   Podría comentar aún más cosas, pero esta entrada sería interminable... tengo pendiente mostrar más en profundidad el enemigo "Pugicat"... ya que nunca le dí el lugar que se merece en este blog, y he estado trabajando bastante en él. Pero eso quedará para otras entradas!

   Para despedirme les dejo este video que subí, mostrando la jugabilidad de Gal, con el estado del juego actual.

Sunday, February 01, 2015

Fondos del juego... y una cosa más!

   Estos días estuve de vacaciones, pero unos días antes, estaba probando técnicas para realizar los fondos del juego.
   Tal vez muchos ya lo hayan notado, pero el primer fondo que hice para mostrar el juego, estaba hecho en gran medida usando fotos retocadas, reducidas en colores y con paletas alteradas.

   Creo que ese estilo no quedaba tan mal, pero me daba muchas complicaciones para encontrar material y para crear cosas originales... básicamente fue una prueba.

   Debo confesar que no estoy muy especializado en la creación de fondos interesantes (seguro muchos ya lo notaron), así que decidí dedicar un tiempo a encontrar una estética que pueda llevar a cabo en un tiempo razonable y con una calidad que me resulte convincente. Así que aquí está el resultado:


   Si bien es simple, a mi me gustó bastante y creo que se mezcla bien con los personajes en acción dándoles el protagonismo que se merecen (un fondo muy cargado y complejo, por más bueno que sea, muchas veces le puede quitar protagonismo a los sprites, y eso definitivamente no es lo que estoy buscando).

   Aquí pueden ver un video de como queda en el juego (con un añadido de fuego en el fondo también), y de paso también un poco de acción.



   Y sobre "una cosa más", quería decirles que veo que mucho del público de este blog proviene de regiones no hispano parlantes... les cuento que yo escribo el blog en español simplemente porque es mi lengua materna y mi idea es escribir las entradas de la forma más amena posible, eso no significa que no pueda entender comentarios o preguntas en inglés. Tal vez muchos estén usando google translate en este blog, aún así me gustaría animarlos a comentar en inglés si no saben español. Sus comentarios serán bien recibidos también! =)

   Nos vemos en la próxima entrada!

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.