PFM: Scripting de cinemáticas con Kismet y Matinee

En los videojuegos se conoce como cinemáticas a las secuencias de video que sirven para avanzar en la trama o presentar personajes o escenarios y en ellas el jugador no tiene control sobre su personaje. Pueden ser generadas con el propio motor del juego o estar prerenderizadas. En mi caso, las cinemáticas servirán para presentar cada nivel al comienzo del mismo y usaré el motor para generarlas. Como no podía ser de otra manera, UDK provee una herramienta muy potente para la generación de cinemáticas llamada Matinee, que junto a Kismet nos proporciona todo lo necesario para incluir las cinemáticas en el nivel en el momento deseado.

Página en UDN sobre Matinee. Es una herramienta muy potente que no sólo sirve para realizar cinemáticas, sino para cualquier animación que ocurra durante el juego, como apertura de puertas, ascensores, plataformas móviles, etc.

Para este caso crearé una cinemática muy sencilla, consistente en un simple travelling de la cámara con un un fundido a negro antes de darle el control al jugador. Esto no es un tutorial propiamente sobre Matinee, por lo que no explico cómo utilizarlo, pero para aprender a manejarlo puede consultarse el enlace de UDN anterior y diversos tutoriales que hay por internet.

La secuencia de Matinee que he creado tiene esta pinta:

pfm10_02

Como se ve hay una pista compuesta por una Cámara, que será la que almacene su movimiento. La pista DirGroup es la que se encarga de cambiar entre unas cámaras y otras (en mi caso sólo habrá una) y aplicar efectos como los fundidos.

La creación de la secuencia de Matinee se realiza desde Kismet, pues una vez creado un nodo del tipo Matinee, hacer doble clic sobre el mismo nos llevará al editor de Matinee. Una vez tengamos la secuencia deseada, la tarea de reproducirla se hará desde Kismet, el sistema visual de scripting que nos proporciona UDK. Para saber más de Kismet, visita la entrada anterior.

En este caso queremos que la cinemática se reproduzca al iniciar el nivel. Durante su reproducción queremos que el jugador no pueda moverse hasta que termine. Además, daremos la posibilidad de saltárse la cinemática pulsando la tecla Espacio. Todo esto lo haremos con Kismet, concretamente con la siguiente secuencia de nodos:

pfm10_01ALT2Vemos que todo comienza en el evento Level Loaded, que obviamente se ejecuta al comienzo del nivel. Este evento activa la secuencia Matinee y activa el Modo cinemático sobre el jugador. Este modo hace que el jugador seleccionado no pueda moverse hasta que se desactive dicho modo cinemático. Cuando termina la secuencia Matinee se desactiva el Modo Cinemático y se activa la generación normal de oleadas (que vimos en el post anterior).

Por otro lado se incluye el evento Key/Button Pressed (en New Event > Input) , que se encarga de detectar si durante la ejecución de la secuencia se pulsa el botón de saltar (configurable en sus propiedades). Si se pulsa, se para la secuencia Matinee y se desactiva el Modo cinemático, pasando como en el caso anterior a la generación de enemigos.

Sólo quedará hacer un pequeño ajuste en PFMPlayerInput (si no has creado tu propio PlayerInput échale un vistazo al post sobre pausar el juego, en el que se creaba uno y se explicaba cómo asignarlo para que se utilice). El motivo es que aunque el modo cinemático impide que el personaje se mueva o gire, al parecer no le impide saltar… Lo arreglaremos de forma sencilla.

PFMPlayerInput

Simplemente sobreescribiendo la función Jump() y evitando que el personaje salte cuando la variable bCinematicMode del Controller esté activada solucionaremos este pequeño detalle.


exec function Jump()
{
    if(WorldInfo.Pauser == None && !bCinematicMode)
	{
        bPressedJump = true;
    }
}

Recompilamos el código y comprobamos el funcionamiento de la cinemática.

Evidentemente esta secuencia es muy chorra, pero la estructura para reproducir otras secuencias más sofisticadas ya está montada, sólo es cuestión de complicar la cinemática :).
Banner Blog

Anuncios

4 pensamientos en “PFM: Scripting de cinemáticas con Kismet y Matinee

  1. Pingback: PFM: Work in Progress #1: Introducing… RONIN (cinemáticas) | El Blog de Marcos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s