martes, 24 de septiembre de 2013

Técnicas de animación: Rotoscopia

La rotoscopia es una técnica de animación consiste en calcar o re-dibujar un fotograma teniendo otro como referencia. Normalmente suele usarse con vídeos, calcando fotograma a fotograma (aunque saltándose alguno de ellos también se pueden conseguir fantásticos resultados, con 12 fps, por ejemplo). Además, una posibilidad interesante de esta técnica es usar animaciones 3D para calcarlas y conseguir lo mismo pero en 2D, lo cual es bastante útil si sabemos animar en 3D pero no se nos da especialmente bien la animación tradicional en dos dimensiones.

Por otra parte obtenemos muchas ventajas haciendo las cosas de esta forma. Por ejemplo, partiendo de un modelo del personaje en tres dimensiones se pueden “calcar” todas las animaciones y posturas diferentes de este sin que por ello se pierda la gracia de ser un dibujo animado. Las expresiones de la cara se pueden crear usando técnicas de dibujo tradicional, en lugar de usar animación facial en 3D.

Utilizar esta técnica de animación facilita además, el mantenimiento de proporciones y tamaños en los personajes, así como el dibujo de todos los fotogramas y la aplicación de las diferentes perspectivas que se usaran, permitiendo el cambio de la posición de la cámara en los distintos escenarios donde se desarrolle la acción del juego.

En alguna ocasión he usado en mis proyectos esta forma de realizar las animaciones, sobre todo para los personajes, creando monigotes 3D con el detalle justo para tener conocimiento de donde situaré después los distintos elementos en el dibujo final de los fotogramas. El motivo principal de hacer esto es que soy más rápido usando la interpolación y esqueletos que permite la animación 3D y puedo darle un toque más simpático e interesante al pasar al dibujo en papel.




Existen también numerosos ejemplos de esta técnica en internet, películas, juegos y series de televisión. Por poner un ejemplo que recuerde fácilmente está el Anime Aku No Hana (El cual creo que no consiguió muy buenos resultados económicos), que se olvidó del diseño de personajes del Manga original y recurrió a la rotoscopia con actores reales para conseguir unos movimientos y expresiones más realistas.

martes, 10 de septiembre de 2013

Formación: Inteligencia Artificial

Después de terminar la primera parte del curso de Unity en Gametopía, hace no mucho que comencé con el módulo de Inteligencia Artificial. Hablamos por tanto de búsqueda de caminos, evasión de obstáculos y algoritmos de distintos tipos para conseguir que los personajes no controlados por el usuario dentro de nuestro juego, parezcan comportarse con inteligencia y realizar acciones en busca de cumplir objetivos concretos.

Gracias a la IA (Inteligencia Artificial), que hoy en día está bastante avanzada en el mundo de los videojuegos, podemos conseguir que nuestros personajes controlados por el ordenador hagan cosas como resolver un laberinto, encontrar la ruta más corta hacia un punto, detectar al jugador y seguirle (o huir de él), trazar estrategias de ataque y un largo etc.


Para un proyecto de videojuegos, hay que tener en cuenta que no se necesita una IA excesivamente compleja ya que, por un lado, el jugador debe seguir teniendo opciones de ganar y, por otro en ocasiones, demasiada complejidad, a pesar de lo que podamos pensar, hace que una IA parezca estúpida o con funcionamiento defectuoso.

Un ejemplo interesante al que estuve re-jugando cuando empecé esta parte del curso de Gametopia es el fantástico Pikmin. En este juego resulta divertidísimo ver como los simpáticos personajillos llamados Pikmins, siguen constantemente al protagonista (o los protagonistas, porque en la segunda entrega hay 2 y en la tercera 3) y a veces tropiezan y se pierden por separarse del grupo o acaban siendo devorados por la fauna hostil del planeta donde viven.

En fin, que por mi parte, solo algunos ejercicios más y habré terminado, y he de reconocer que he aprendido bastante de Unity, pero me queda muchiiiiiiisimo. Quizás cuando tenga hechos unos 50 juegos empezaré a tener más manejo :P


jueves, 5 de septiembre de 2013

Diseño de juegos: Complejidades en el diseño Asimétrico

Recordemos que el diseño asimétrico en videojuegos, era aquel en el que no tenemos lo mismo en el bando del jugador que en el bando enemigo, pero que a pesar de ello intenta dar las mismas oportunidades de victoria.

Me explico con un ejemplo: En un juego de lucha tenemos un jugador muy rápido pero que pega muy flojo y otro más lento que con un golpe nos hace mucho más daño. Así se pretende que el rápido, necesite alcanzar al oponente más veces (y en teoría lo hará por que es más rápido) para igualar un solo golpe de su contrario.

¿Se entiende, no?

Bien, pues este modelo tan usado y tan atractivo, contrario por ejemplo a una partida de ajedrez, que sería simétrica, por que los dos contrincantes tienen las mismas piezas con las mismas habilidades para moverse, tiene numerosas complicaciones en las que no solemos caer como diseñadores.

Ejemplo: Robot grande contra escuadrón pequeño.

Voy a usar antiguos gráficos que tenía, de juegos cancelados hace mucho. :P



Supongamos que tenemos un robot gigante en un juego de estrategia que con uno de sus disparos hace el mismo daño que 10 unidades de una tropa estándar. Por supuesto este tendría mayor coste, puede que se moviese de forma más lenta, etc. Pero vamos a simplificar. Centrémonos solo en el daño.

La teoría nos dicta que si el jugador A tiene 10 soldados estándar y el jugador B tiene un robot gigante, el combate estará equilibrado y se mataran el uno al otro, sin embargo la realidad es que el pobre robot tiene todas las de perder. Esto se puede ver con cifras:

Robot: 1 disparo, 10 puntos de daño. Tropa: 1 disparo: 1 punto de daño.
Robot: Resistencia: 10. Tropa: resistencia: 1

En este caso, como la resistencia y el daño están iguales, solo habrá oportunidad para un ataque. La consecuencia de esto es que el robot solo puede centrar sus disparos en uno de los soldados de la tropa, al que aniquilará sin problema. Pero al mismo tiempo será aniquilado por recibir el ataque de forma simultánea de los soldados (Los 9 vivos, y el muerto, que atacará al tiempo que muere).

Hagamos un pequeño cambio para dar la victoria al robot. Hagamos a todos más resistentes para que tengan que darse dispararse un poco más.

Robot: Resistencia: 100. Tropa: resistencia: 10

Considerando que la fuerza de ataque es la misma, al primer ataque, el robot se cargará a uno de los soldados, reduciendo al mismo tiempo la capacidad de ataque de la tropa, ya que ahora solo quedarán 9.

Vamos a ver cómo queda todo después de cada turno:

Turno1 – Robot: 90 / Tropa: 9 
Turno2 – Robot: 81 / Tropa: 8 
Turno3 – Robot: 73 / Tropa: 7 
Turno4 – Robot: 66 / Tropa: 6 
Turno 5- Robot: 60 / Tropa: 5...

Y así sucesivamente hasta llegar al turno final donde caerían todos los soldados, sobreviviendo el Robot con una vida de 45 (Espero no haberme equivocado con los cálculos)

Observamos con esto que el equilibrio asimétrico que buscábamos para este juego podría ser aceptable, pero no es un equilibrio completo.

Como jugadores nos damos cuenta de esto en multitud de ocasiones. Por ejemplo una estrategia típica de algunos jugadores en un RPG por turnos suele ser, en caso de que nos enfrentemos a un enemigo grande y dos pequeños, atacar primero a los pequeños. Así evitamos que cada turno nuestro personaje reciba daño de 3 personajes, ya que nos vamos quitando a los que mueren más rápido. Esto no siempre es lo más óptimo. El enemigo grande puede hacer mucho daño con sus ataques, y muchas veces nos conviene que nos dañen más veces por cada turno, pero cuidarnos en primer lugar de los ataques que más daño nos causan.

Además de los ejemplos vistos hasta ahora, está el ya comentado de luchador fuerte y lento contra luchador débil y rápido. En este caso el modo en que lo controla el usuario influye mucho en el aprovechamiento de las habilidades de los personajes, resultándole en unos casos más ventajoso el luchador rápido y en otros el lento.

¿Entonces como se consigue un auténtico equilibrio?

Para solucionar estos pequeños problemas, en caso de que queramos (porque muchas veces dan variedad, interés y personalidad al juego) la opción que nos queda es el testeo. Probar un juego para distintos usuarios e ir haciendo pequeñas correcciones ciertas variables es la única manera de ajustarse lo máximo posible hasta una perfección, difícil o incluso imposible de conseguir. Normalmente siempre habrá jugadores expertos capaces de encontrar el desequilibrio y aprovecharse de él para ganar más partidas, pero eso también forma parte de la habilidad del usuario y su capacidad para vencer a los demás.