Páginas

domingo, 22 de febrero de 2015

Cinemáticas (1): El voice Acting.

El voice acting consiste en actuar a través de la voz. Todos los actores hacen voice acting, pero hay actores que solo hacen voice acting, como los que doblan personajes de películas de animación.

Quizá de entrada parezca un tema ajeno a los videojuegos, pero hoy en día los videojuegos tienen mucho contenido cinemático, y no es raro que en un momento o en otro uno se vea escribiendo unos diálogos o haciendo el script para una escena, por lo que creo que es importante estar preparado para ello.

Además y aunque no estoy aquí para hablar de mi vida profesional, se da la circunstancia de que he tenido que hacer bastantes cinemáticas, y es un tema - el cine - que me interesa mucho.

Dejo algunos vídeos de actores de voz famosos.



Ted Williams, actor de voz que pasó de vagabundo a fenómeno mediático.



Jerry Senfield, fue un famoso actor de voz especializado en trailers.
Seguro que su voz os suena.



Su estilo y la costumbre de usar la expresión "In a world"
terminaron siendo objeto de - auto - parodia.


Actores de voz de Transformers.



Y en España, el recientemente fallecido Constantino Romero.



En videojuegos, los actores de voz reciben el guión y graban sus líneas en el estudio. Después corresponde al diseñador de cinemáticas - un tipo de game designer - montar los clips de audio en una cinemática, con herramientas como uSequencer.



Me gustaría explicar muchas cosas sobre esta herramienta pero como vengo diciendo últimamente mi tiempo es muy limitado, así que iré ampliando el tema poco a poco en futuros posts.

Hasta la próxima.

domingo, 8 de febrero de 2015

Minutos musicales

Esta semana estoy ocupado y no voy a poder estar por vosotros, pero mientras tanto podéis disfrutar de una de las bandas sonoras más bonitas que he escuchado nunca.

ICO - You Were There



The island bathes in the sun's bright rays
Distant hills wear a shroud of grey
A lonely breeze whispers in the trees
Sole witness to history
Fleeting memories rise
From the shadows of my mind
Sing "nonomori" - endless corridors
Say "nonomori" - hopeless warriors
You were there
You were there
Am I forever dreaming
How to define the way I'm feeling
You were there
Countless visions they haunt me in my sleep
You were there
Though forgotten all promises we keep
Slaves to our destiny
I recall a melody
Sing "nonomori" - seasons lit with gold
Say "nonomori" - legends yet untold
You were there
You were there
Happiness follows sorrow
Only believing in tomorrow
You were there
Countless visions they haunt me in my sleep
You were there
Though forgotten all promises we keep
The island bathes in the sun's bright rays
Distant hills wear a shroud of grey
A lonely breeze whispers in the trees
Sole key to this mystery

Hasta la próxima.

domingo, 25 de enero de 2015

Un concepto de juego

Mi tiempo para dedicar al blog está disminuyendo drásticamente en estas últimas semanas, y parece que la cosa irá a más en vez de a menos, aún así hoy me había comprometido a mostrar un concepto de juego y aquí lo tenéis.




Es un comecocos que se controla escribiendo.



Por ejemplo, en esta situación, si pulsamos Ñ iríamos a la izquierda y si pulsásemos D iríamos hacia la derecha.


Y si pulsásemos DJFLSK avanzaríamos de frente y seguiríamos hacia abajo.



O hacia arriba con DJFLFS.

Llegados a este punto salta la primera alarma ¿Cómo vamos a distinguir en qué dirección ir cuando esté justo en la esquina?


Resulta que una vez estemos en la esquina, si pulsamos F el comecocos puede ir en dos direcciones, hacia atrás o hacia arriba, y si pulsamos S también puede ir en otras dos.

¿Es un mal concepto de juego? No, nos hemos encontrado con un problema, y nuestro trabajo es darle una solución.

De hecho si somos astutos - y con la práctica todos lo seréis -, encontraremos más de una.

Solución A: Prohibirlo, o sea decirle al programador que evite estas situaciones, generando combinaciones de letras que no admitan ambigüedad.

Solución B: Admitirlo, pero no mover al comecocos hasta que la dirección esté clara, y mientras tanto, mostrarle una previsualización de los caminos posibles.



Por ejemplo, en esta situación el jugador ha pulsado SK, pero hasta que no escriba A o S el juego no moverá a pacman.

Las dos soluciones son buenas en tanto que resuelven el problema, y somos nosotros los que tenemos que tomar una decisión de diseño según nuestro criterio.

En mi caso me gusta más la segunda solución, porque añade un elemento nuevo al juego con el que se puede jugar a su vez, es decir, que puedo usar eso que parecía un problema como una característica más del juego.



Por ejemplo, imaginad que diseño un nivel aposta para que pase mucho ésto. El player escribe y escribe mientras el fantasma se le acerca pero resulta que para que el camino esté claro tiene que escribir por lo menos diez letras.

O puede que las opciones parezcan excluyentes cuando no lo son, por ejemplo podríamos inventarnos un parámetro ambiguedad que marque la longitud máxima de camino que vamos a admitir hasta que el movimiento esté claro. Podríamos generar niveles cada vez más difíciles aumentando este parámetro, con lo que generamos una curva de dificultad.


En fin, espero que con ésto os quede claro en qué consiste el trabajo de un diseñador, que no solo consiste en tener ideas, sino en saber desarrollarlas y buscar soluciones creativas para los problemas para los problemas que van vayan surgiendo.

Hasta la próxima.

lunes, 5 de enero de 2015

Los Nintendos


¡Feliz año! Esta semana no hay post "currado" pero os traigo a este señor que viene a recordarnos que "Los Nintendos" son DEMONIOOOOOOOOOO y que producirán EPILEPSIA INCURABLE en su hijo.

lunes, 29 de diciembre de 2014

Interpolando plataformas con Unity



La interpolación es el proceso de ir calculando puntos intermedios entre dos o más puntos que nos vienen fijos. Es un problema bastante común en videojuegos, ya que se utiliza para calcular trayectorias de objetos como plataformas que van sobre railes.


Un método sencillo

Existen herramientas muy sofisticadas para calcular interpolaciones, como los splines, pero yo me voy a centrar en un caso muy sencillo y a la vez útil para el día a día, la interpolación lineal.

La interpolación lineal es una foma muy sencilla de interpolar, que consiste en calcular los puntos intermedios sobre una recta que une dos puntos A y B.

Para calcular estos puntos intermedios se puede empezar restando el punto final B menos el origen A, lo que nos da el vector M que va de un punto al otro.




Después se multiplica este vector por un factor entre 0 y 1. Si este factor es 0 nos da el punto inicial, si es 1 el final, y los valores entre 0 y 1 dan los puntos intermedios.




Por tanto para calcular un punto cualquiera P hay que sumar(1) al punto origen A al vector M y multiplicarlo por un factor entre cero y uno.



Sustituyendo M por B - A queda la fórmula final.



(1) Sumamos el punto origen porque hay que "colocar" M sobre el punto A, sino estaríamos interpolando alrededor de (0,0,0).


Pasándolo a Unity


En Unity lo primero sería crear un script que tuviera variables para cada uno de los puntos.


Y en el update aplicar la fórmula, incrementando el factor de interpolación a una cierta velocidad, en este caso 0.1, y cuando detectamos que "nos pasamos" volvemos a poner el factor en 0.


El resultado podría ser así.





Haciendo Ping pong

Otra opción que tenemos cuando el factor llega "al tope" es invertir la velocidad, de forma que el punto P vuelva otra vez hacia A, un comportamiento conocido como Ping Pong.

Para ello podemos declarar una variable sentido que sea 1 si vamos de A a B y -1 si vamos de B a A.


Después de incrementar - o decrementar - el factor, comprobamos que no nos estemos pasando por uno de los extremos, y si lo estamos haciendo, cambiamos el valor de la variable sentido para ir al sentido contrario.



El resultado podría quedar así.





Poniéndolo bonito

Ahora vamos a ver si podemos hacer algo con este script, al fin y al cabo somos game designers ¿no?

Lo primero sería construir un pequeño escenario, podéis usar el construction kit que os presenté hace unas semanas.


Dentro de este escenario nos creamos unas plataformas, que tendrán un punto inicial y otro final. Estos puntos nos harán de "topes".



Ahora agrupamos estos tres objetos - la plataforma y los dos puntos - creando un objeto padre al que vamos a añadir el script de interpolación. Hay otras formas de hacerlo, pero así resulta cómodo mover los objetos.



Modificamos además el script para que la velocidad no sea siempre 0.1, sino que cada plataforma pueda tener una velocidad distinta, añadiendo al script.


Y en el update sustituimos el 0.1 por la variable velocidad.


Finalmente, repartiendo con gracia las plataformas a lo largo del escenario - a lo alto en este caso - llegamos a este bonito resultado.



Como siempre, podéis descargaros el proyecto aquí.



Interpolacion_Unity4.3.4.zip


Hasta la próxima.



domingo, 14 de diciembre de 2014

El misil del Venom o no rendirse

Esta semana os voy a contar una historia. Tiene que ver con uno de los temas recurrentes en el blog: Formar el carácter.

Porque se habla mucho de que para ser diseñador hay que saber de ésto y de ésto otro, pero se habla poco de los obstáculos que hay que afrontar durante el ejercicio de la profesión, y aprender a afrontarlos es tanto o más importante que el contar con conocimientos técnicos sólidos.

Vamos, que os voy a contar una batallita.



Cuando yo era pequeño tenía un Amstrad CPC, un ordenador de 8 bits que funcionaba con cintas. Me pasé muchas tardes jugando con ese ordenador, solo o en compañía de mis amigos.



Uno de los juegos que teníamos se llamaba Venom Strikes Back. Era un juego de plataformas bastante apañado, en el que el protagonista contaba con diferentes armas y habilidades, ambientado en el universo GI Joe basado en una serie de dibujos llamada M.A.S.K.

El juego no era especialmente difícil, pero tenía un punto que parecía imposible, algo que hoy en día sería un fallo de diseño garrafal, pero que en aquella época no era tan raro encontrarse. Nosotros lo llamábamos "El misil del Venom".



Era un misil enorme que se te acercaba, y se te acercaba, y por mucho que le dispararas nunca lo matabas, ni te daba ninguna señal de que le estabas haciendo daño. Uno retrocedía y retrocedía hasta que no podía más y no tenía más remedio que dejarse matar.

Estuvimos un tiempo intentando superar "El misil del Venom", pero no hubo manera, y lógicamente pasamos a otros juegos, dejándolo como una de esas cosas "imposibles" que te encuentras en la vida.

Bueno, no exactamente.


A mí me fastidiaba no haber resuelto el enigma, así que cada cierto tiempo volvía a probar, con el mismo resultado, y después de un tiempo quizá solo lo probaba una vez al año, pero sin llegar a dejarlo.

Muchos años después, ya sin tener el ordenador, me ponía un emulador de Amstrad en el PC y jugaba a algunos de aquellos juegos, y alguna vez probaba a pasarme el Venom Strikes Back, por los viejos tiempos.
.



No sé por qué un día me fijé que siempre lo había estado intentando matar con la misma arma, o con una combinación de las dos armas de que disponía, pero por algún motivo nunca había probado solo con la otra, quizá asumiendo que todas las armas tenían la misma potencia.



Así que me fui hacia el misil, disparé todo lo que pude con esa arma, retrocedí, volví a disparar todo lo que pude, retrocedí y...



¡BUM! Ya no había misil.

Quince años después "el misil del Venom" había caído. En la soledad de mi cuarto, sin testigos, siendo ya casi ingeniero informático, muy lejos de ese crío de doce años que jugaba al Amstrad con sus amigos.

Fortitudine Vincimus, que diría un famoso explorador polar. Vencemos por nuestra resistencia, por nuestra tozudez.

Muchas personas abandonan sus sueños porque se encuentran con un "misil del Venom" en sus vidas.

No os rindáis.




viernes, 5 de diciembre de 2014

¿Unos chistecillos?

Tengo algunos tutoriales en la cocina, pero esta semana no les he podido dedicar tiempo - la vida de un diseñador es complicada -. Mientras busco el hueco y, para no olvidarnos del inglés, ¿qué tal unos chistecillos?


Tomad aire y... 




¡Hasta la próxima!