martes, 31 de julio de 2012

Técnicas de guión aplicadas a videojuegos: La historia dentro de la historia


Cuando creamos una obra literaria, película, videojuego o cualquier otra forma en la que narramos una historia y hacemos que el espectador la “viva” nos convertimos en el gran conocedor de dicha historia, la única persona que sabe todo lo que ocurrirá al detalle, como si lo hubiera vivido, pero ¿qué pasa cuando dentro de nuestra aventura hay un personaje que cuenta otra narración distinta sobre si mismo/a u otro personaje? Que hay una historia dentro de la historia. Todo pasa entonces a primer plano para que el usuario pueda vivirla. Esto es bastante común en videojuegos donde, además, nos encontramos un juego dentro de otro en muchisimas ocasiones.

Bioshock es un ejemplo que me viene ahora a la mente cuando pienso en juego dentro de otro juego. En este título con visión en primera persona encontramos un minijuego de puzzles cuando tenemos que hackear máquinas. El minijuego pasa a la pantalla y tenemos que resolver el problema que se nos plantea, afectando luego a la continuidad de la trama principal. (Si hackeamos la máquina nos cuestan los objetos más baratos o nos ayuda en la protección de nuestro protagonista.)







Por otro lado, si pensamos en una historia dentro de otra y seguimos hablando de videojuegos, un buen ejemplo es Eternal Darkness, donde la prota narra los textos que lee en el libro de las tinieblas y podemos jugarlas gracias a que el protagonista de la historia pasa a contarnosla en primer plano. Tomamos el control de otro personaje, en otro escenario, como si estuvieramos en otro juego diferente, aunque con las mismas mecánicas (Por que si no sería muy costoso realizar semejante proyecto)


Así que se trata de eso, de servirnos de los mismos o distintos personajes y escenarios, de las mismas o distintas mecánicas de juego, para meter la narración de una aventura dentro de la principal y/o minijuegos dentro de nuestro juego principal. Pero eso si, sed sensatos, por que el desarrollo se puede complicar mucho. Un juego grande puede ser mucho más grande y largo de crear si tiene 30 minijuegos dentro de él, pero si además no son minijuegos sino proyectos totalmente distintos, se convierte en una tarea imposible de terminar.

Por cierto, este es mi post número 200, lo cual es un éxito personal, así que tendré que ir planeando hacer algunos cambios en un futuro no muy lejano, modernizar el blog y comentar algo como celebración. (Quiza para el post 250) :P

jueves, 26 de julio de 2012

Historia, teoría y práctica del diseño conceptual de videojuegos


Traigo un libro que puede leerse gratis en la Web gracias a su autor Borja López Barinaga, un tipo que fue tester y diseñador en PyroStudios y ahora diseña juegos en Alesia Games.

Se trata de un libro sobre el diseño de juegos algo denso de leer por la enorme cantidad de datos historicos sobre computación y juegos (especialmente las primeras 150 páginas más o menos) y también por tratarse de un documento bastante técnico que habla en bastantes ocasiones (aunque por encima) de matemáticas y programación. Sin embargo, es recomendable leerlo si se tiene un poco de tiempo libre al día, ya que tiene mucho que enseñar.

¿Cómo y cuando nacieron los videojuegos? ¿Cómo empezamos a crear uno y que deberíamos saber? ¿Qué géneros hay y que elementos tiene cada uno de ellos? Son algunas de las respuestas que contesta este libro que puede leerse en esta Web.

Considero que la maquetación es muy sencilla y se echan en falta algunas imágenes más. Tanto texto seguido con citas extraidas de numerosas fuentes se hacen un poco largas, aunque por otro lado nos enriquecen en conocimientos que no vienen nada mal.

Por otro lado no se me debe olvidar que el texto esta en español, lo que lo convierte en uno de los pocos libros sobre diseño de juegos escrito en nuestro país, lo cual siempre es una buena noticia. Muchos que no dominais nada de nada el inglés tendreis la solución, y todos veremos como la industría en nuestro país sigue avanzando y por fin empezamos a tener gente que sabe y además, gente que se esfuerza por transmitir todos sus conocimientos a los que quieren empezar ahora, para que el camino les resulte más sencillo y obtengan una mejor preparación.

lunes, 23 de julio de 2012

Skills: Modelado 3D


Ya hablé hace dias de algunas técnicas o Skills de programación usados en videojuegos (muy pocos, pero ya contaré más) y ahora me toca hablar de técnicas con las que modelar en 3D y de las bases del mismo.

Lo primero de todo es definir los elementos básicos con los que trabajamos en el modelado:

Vértice: Punto de unión de todos los segmentos que formaran la “rejilla” de nuestro modelo.

Segmento: Linea que forman dos vértices.

Polígono: formado por varios puntos y segmentos que los unen en un plano. Hay poligonos de 3 o más lados pero lo ideal es trabajar con Quads o polígonos de 4 lados por su estabilidad, aunque siempre sabiendo que casi todos los motores actuales trabajan con triangulos (y que por tanto convertiran cada quad en 2 triangulos).

Elemento: Cada una de las partes polígonales independientes que compondrán nuestro objeto.

Objeto: El arte final al que queríamos llegar, compuesto por vertices, unidos por segmentos, formando polígonos que dan lugar a elementos, los cuales construyen dicho objeto. :P


Hablemos pues de “skills”, pero no en un software 3D concreto, sino en general:

Para poder modelar y así construir el arte con el que haremos nuestro juego 3D usando Low Poly (modelos con un número de polígonos limitado) usaremos una serie de técnicas base como son:

-         Cortar: Operación que consiste en dividir un polígono o forma en dos, haciendo que atraviese un segmento por su superficie. Hay muchas formas de cortar: uniendo un vértice con un segmento (en cuyo caso se corta el segmento creando un nuevo vértice), uniendo dos vértices, dos segmentos (creando dos vértices nuevos), usando un plano que atraviese la forma 3D y la corte o usando dos formas para conseguir que se una corte a la otra.


-         Extruir: Que consiste en sacar hacia afuera o dar tridimensionalidad (también se puede meter hacia adentro). Se puede hacer con polígonos, vertices o segmentos y en algunos programas 3D se puede acompañar de un escalado de polígonos como pasa por ejemplo en 3D Studio con lo que se conoce como “Bevel”. (En otros primero se extruye y luego se cambia el tamaño al polígono).


 -         Contraer: También lo vereis como “Inset” y crea un polígono más pequeño dentro de otro, generando también los vértices y segmentos que sean necesarios para unirlos y que no pierdan su forma de Quads.


-         Subdividir o suavizar: Efecto que usan software de esculpido como Mudbox para generar formas más suavizadas multiplicando su número de polígonos. Es uno de los motivos por los que se prefiere modelar con quads, por que estos consiguen que cada polígono se divida en 4, sin que pierda su forma.


-         Puente: Genera los polígonos necesarios para unir dos elementos de nuestro objeto que están separados y tienen un hueco. Este se tapará, teniendo distintas opciones para generar la unión. Con más o menos polígonos, rotandose, etc.


De momento lo dejamos aquí, esperando que si no se entiende con las descripciones, uno pueda hacerse una idea de lo explicado gracias a las imágenes.

Las bases del 3D son breves pero hay que comprenderlas. A partir de esto y del desplazamiento de polígonos y vértices a las coordenadas deseadas se desarrollan las verdaderas técnicas de modelado 3D que se usan actualmente en los videojuegos. Solo se trata de dar forma a la pieza para conseguir el resultado deseado sabiendo que podemos sacar partes nuevas, dividir otras, doblar, añadir, quitar… Como la plastilina pero más “cuadriculado” y virtual.

Hasta la próxima.

jueves, 19 de julio de 2012

Nueva revista online de Game Career Guide


GDCPDFSale solo una cada año y son muy esperadas por que son gratis (se puede descargar el PDF desde su web aquí) y por que su contenido es muy, muy valioso.

En este número de 2012-2013 encontramos, como en los anteriores, tutoriales, reportajes sobre desarrollo, los salarios medios de los diferentes roles dentro de la industría, consejos para empezar a hacer nuestros juegos y una lista de universidades y escuelas en todo el mundo donde poder formarnos.

En el número anterior (que también se puede descargar de la Web) me gustó mucho un tutorial de pixelart que había y, en el nuevo, aunque se orientan más hacia el 3D hay otras cosas bastante interesantes sobre el motor Unreal, la creación de RPGs, como hacer gráficos rápidos para prototipos… ¡Todo muy recomendable!

Por mi parte pienso leerme tooooodos los articulos enteritos y recomiendo a todo el mundo que lo haga. El material es tan interesante que al final a uno se le hace muy larga la espera y desearía que salieran más revistas como estas mucho más a menudo (e igual de gratis).

Aprender de gente que vive de esto siempre es un lujo.

- No olvidar que esta en inglés -

lunes, 16 de julio de 2012

Ténicas de guión aplicadas a videojuegos: Elipsis

La vida del protagonista de nuestra historia puede ser muy larga y disponemos de un tiempo limitado para contarla, por eso, lo ideal es centrarnos solo en las partes más interesantes o que tengan algo que aportar a la trama que llama la atención del usuario. Muchas veces nos reimos de lo sencillo que se consiguen algunas metas de los personajes en el cine o como la casualidad aparece tan facilmente en sus vidas. Hay una duración determinada en la peli y toda la historia debe suceder en ese “corto” espacio de tiempo. ¡No hay ocasión para que las cosas salgan mal casi siempre como pasa en nuestra vida!

Bien, a veces necesitamos narrar un acontecimiento muy largo para que la historia se entienda. Por ejemplo: Nuestro protagonista es un vago que ve la televisión durante más de 12 horas los domingos. Suponiendo que esto sea necesario para indicar al espectador lo vago que es el personaje, tendremos que contar de alguna forma, que han pasado esas 12 horas realizando la actividad. ¿Cómo?

La elipsis nos ayuda omitiendo partes de una escena que son obvias para la persona que la esta viendo, por que ya se imagina que es lo que pasaría durante el tiempo omitido.

Por ejemplo, en el caso anterior del personaje adicto a la tele los domingos, podemos reducir 12 horas a unos segundos si ponemos un reloj en la escena (que puede estar colgado en la pared de la casa del prota) en el que se vean los saltos de tiempo hasta completar esas 12 horas. ¿Se entiende? La escena se va cortando y hay saltos muy grandes, pero se ven en el reloj.

Lo mismo se puede hacer para explicar el paso de los meses o los dias con un almanaque, o como avanza un año dejando ver el cambio de estaciones a través de una ventana… basta con echar imaginación para poder accelerar el tiempo y “suprimir” ese periodo de vida de un personaje que no es interesante para el jugador pero que es necesario que sepa para el resto de la historia.

Otra forma de elipsis es la de “no hacer nada”, es decir, a veces ignorando una acción y no sacandola en la pantalla. Por las pistas que le dan las imágenes de antes y después, es el espectador el que la rellena con su imaginación y sabe lo que ha pasado. Se usa mucho en comics, cuando alguien se enfada con otra persona, prepara el puño y de pronto se la viñeta negra, se oye un golpe (bueno,  no se oye, es una onomatopeya)  y aparece con el ojo morado uno de los personajes. No lo hemos visto pero sabemos que ha sido un puñetazo por lo que ocurrió antes y después.


¿Cómo usamos esto en videojuegos?

Sencillamente igual que en la literatura o el cine, echandole imaginación. El hecho de tener un personaje de niño que apatece en la siguiente fase del juego siendo adulto implica un enorme paso de tiempo que hemos ignorado. Quizá tuvimos que contar un acontecimiento de cuando el protagonista era niño para que se entendiera lo que viene después. Por otro lado también podemos usar la elipsis en los videos o imágenes de introducción u omitiendo acciones, como por ejemplo en una explosión, dejando solo el sonido, el gameplay de antes y las consecuencias de dicha explosión.

Solo queda decir que hay que pensar bien como se va a usar esta técnica, por que siempre que hay saltos en la historia corremos el riesgo de que el espectador se pierda y no lo entienda, por eso debemos tener en cuenta que lo que eliminemos no debe provocar que se pierda la continuidad de nuestra trama.

domingo, 8 de julio de 2012

Gamelab 2012

Hace unos días que terminó la feria de videojuegos que se celebra desde hace un par de años en Barcelona, pero he preferido esperar a que hubiese material en la red para hablar de ella.

Gamelab es una feria por la que he ido perdiendo el interés debido a la transformación que ha ido sufriendo hacia una feria para usuarios y no tanto para desarrolladores. Cada edición se llena más de estrellas del mundo del videojuego que hacen de reclamo para que jugones llenen stands de novedades a las que echar una partida. (También he perdido interés por que se haya mudado a Barcelona, que resulta más caro y dificil para llegar desde donde vivo). Es cierto, por otro lado, que sigue habiendo talleres y conferencias interesantes y que es una oportunidad para encontrar trabajo en la industría o presentar proyectos para los cuales obtener financiación. No se, quizá es bueno su “aumento progresivo de tamaño” y me anime a ir algún año.

De las entrevistas y videos que he visto en Internet me resulta interesante alguna y discrepo con alguna otra. Por un lado tenemos a Randy Pitchford, hablando de un futuro lleno de realidad virtual y realismo salvaje, diciendo que estamos en la “edad de piedra” del videojuego. Por otro, en una entrevista, Al Lowe, creador de la serie de aventuras gráficas de Larry, nos cuenta que la mejor época para entrar en la industría fue hace 25 años debido a que la época actual tiene una competencía y una saturación de mercado que hace muy dificil entrar y aun más, mantenerse como desarrollador. Como no creo en el “crecimiento infinito” y en el “cada vez más gente queremos estar aquí por que da dinero”, evidentemente estoy más de acuerdo con Al Lowe.

No creo que hacer cada vez juegos más grandes, más caros, más técnologicos sea el futuro. Más bien creo que será algo que ayude a estallar la burbuja como ha pasado en España con la construcción y algunos proyectos faraonicos. Si creo que los apasionados de los videojuegos seguiremos haciendolos aun cuando no se gane tanto ni haya tanta gente aspirando a repartir de ese pastel. Creo en equipos pequeños con grandes ideas trabajando en un mercado bastante menos saturado que el actual. Quizá estoy un poco anticuado pero inventos como la descarga digital y los micropagos no me parecen ideados para beneficiar a los jugadores, sino para sacar más dinero del mínimo trabajo, además tampoco se está pensando en el usuario cuando se sacan nuevos dispositivos cada vez más potentes casi cada año en los que salen miles de juegos al día. (¿Conoceis a alguien que compre mil juegos diarios y los juegue todos hasta terminarlos?).

Pongo a continuación todos los videos interesantes que he encontrado (algunos en inglés), de las conferencias y entrevistas surgidas en algunos medios como Zoom.Net de rtve.

Quizá el próximo año me pase por GameLab si tengo algo de pasta para viajar y me resulta atractivo el programa de eventos y, quizá con el tiempo pueda ir hasta allí con algún proyecto para mostrar al público.

Programa Zoom.Net sobre Gamelab


Conferencia de Hironobu Sakaguchi (Final Fantasy) 


Conferencia de Phil Fish (FEZ)


Entrevista a Al Lowe (Larry)

lunes, 2 de julio de 2012

Programación: Skills

Se trata de una palabra que significa algo así como “habilidades” o “técnicas” y que usaba a menudo cuando formaba parte del mundo músical y de la cultura de los Djs de Hip hop.

Básicamente uno aprendia una serie de técnicas o skills y las combinaba para crear acompañamientos sonoros en las canciones o hacer música a partir de sonidos. Habia que practicar durante meses en muchos casos, para dominar estas habilidades y conseguir añadirlas a nuestro repertorio. Además, cuando uno mejoraba lo suficiente era capaz de inventar y desarrollar sus propias técnicas.


En los videojuegos sucede una cosa similar, tanto para programadores como para artistas, diseñadores, guionistas…, y es que hay una serie de habilidades que debemos tener en nuestro repertorio. Estas nos permitiran desarrollar nuestros proyectos y, cuando seamos lo bastante buenos, desarrollar nuestros propios métodos de solucionar los problemas que nos vayan surgiendo durante la producción.

Con el tiempo, en el Blog, me gustaría mostrar algunas técnicas que suelen ser de uso común y que se repiten en el mundillo, por lo que nos conviene conocer, ya que la forma en la que se resuelven muchos géneros o mecánicas hace tiempo que esta inventada y perfeccionada. Espero que a los lectores les sirva. A mi no me viene mal tenerlo aquí como recordatorio.

Empecemos por programación:

Animación basada en el tiempo

Cuando el framerate de un juego puede variar por que estamos ejecutandolo online o simplemente por que hay muchos cambios en pantalla con los que el procesador no puede, no conviene fiarnos de que las actualizaciones a nuestra pantalla de juego se realicen fotograma a fotograma. Por eso es muy útil usar la animación basada en el tiempo.

Explicado con ActionScript, un ejemplo sería:

Primero creamos una variable que guarde el tiempo del ultimo paso (el tiempo que tarda en ejecutarse el fotograma).

var ultimoPaso:int=getTimer();

Usaremos esto para indicar a nuestro gráfico cuanto debe moverse enun periodo de tiempo. Para ello en cada fotograma hay que realizar una serie de acciones para nuestro gráfico en movimiento.

var tiempoDiff:int=getTimer()-ultimoPaso;
ultimoPaso+=tiempoDiff;
objeto.x=tiempoDiff*.1;

En ActionScript podemos hacer eso mediante una función que se ejecute en cada evento ENTER_FRAME. Calculamos la diferencia de tiempo y preparamos la variable ultimoPaso para el paso siguiente, Luego modificamos la variable x de nuestro objeto añadiendole tiempoDiff multiplicado por 0.1 (Así, en este caso el objeto se mueve 100 pixels cada 1000 milisegundos). Si en 1 milisegundo se mueve 0.1 pixeles, se moveran 100 en 1000 milisegundos. (Una sencilla regla de tres).

Customizar cursores

Cuando desarrollamos usando motores para juegos normalmente hay un cursor definido que tiene su posición x y su posición y. Podemos usar esto para ocultar este cursor y sustituirlo por la imagen que queramos simplemente igualando en cada fotograma la posición x, junto con la posicion y, a la que tendría el cursor del ratón. Muy sencillo.

Mouse.hide();

imagen.x=mouseX;
imagen.y=mouseY;

Números al azar

Suele haber una función para generar números aleatorios en todos los lenguajes de programación. Por ejemplo en ActionScript tenemos Math.random. Esta funcion devuelve un numero entre 0.0 y 1.0, por lo que tendremos que servirnos de algunos trucos para generar, por ejemplo, la tirada de un dado que esta entre 1 y 6. Para conseguir esto multiplicamos.

var aleatorio:Number=Math.random()*6;

Como queremos numeros enteros habra que redondear

var aleatorio:Number=Math.floor(Math.random()*6);

Por último como no queremos que pueda salir el cero, le sumaremos 1 al resultado.

var aleatorio:Number=Math.floor(Math.random()*6)+1;

Como en el rángo entre 0.0 y 1.0 no se incluye el límite 1.0, el sumar 1 no es un problema, seguiremos moviendonos entre el 1 y el 6

Espero que se entienda todo. Próximamente más.