sábado, 9 de julio de 2016

PFM: Vídeo de demo

Hace mucho que no publico nada por aquí porque he estado muy liada terminando el PFM y además he empezado a trabajar en Gameloft, y no he tenido prácticamente tiempo.

Me alegra anunciar que el proyecto está terminado!!

Aquí podéis ver el vídeo de demo:


También he descuidado este blog porque me he creado uno nuevo en inglés a modo de portfolio: https://lauraalmon.wordpress.com/

Un saludo a todos!

lunes, 8 de febrero de 2016

PFM: Demo (Introducción)

Hace muchísimo que no publico en el blog nada relacionado con el PFM, pero eso no significa que no haya trabajado mucho en él. De hecho, me atrevería a decir que está a punto de estar terminado, aunque siempre puedo ir añadiéndole detalles. Ahora que tengo el motor de emociones prácticamente terminado, estoy empezando a desarrollar una escena (mini-juego) a modo de demo en la que el personaje principal va a tener que cambiar el estado de ánimo de los demás personajes para conseguir su objetivo.

El jugador podrá realizar diferentes acciones a la hora de interactuar con los demás: usar un objeto, hablar de forma educada o de forma grosera. De momento, estoy programando la GUI para que el jugador pueda hacer todo esto, con solamente otros dos personajes en la escena.

No quiero adelantar aún la historia del juego, pero toda la acción se desarrollará en una taberna en la que el personaje principal deberá averiguar algo leyendo la mente de los demás. Pero, para poder leerle la mente a alguien, éste deberá estar pensando en ello, así que habrá que ayudarles a eliminar sus demás preocupaciones.

jueves, 19 de noviembre de 2015

Tecnología de Juegos: Sugar Party

Sugar Party es un videojuego que hicimos 5 compañeros del máster para la asignatura de Tecnología de Juegos: Jessica Mejías como artista y Carlos Castillo, Luis Lalueza, Raquel Jarillo y yo como programadores. Luis además era el "Team Lead", y yo hice de Quality Assurance. Además, la música nos la hizo mi mejor amigo, Jorge Villar.

Es un juego multijugador de tablero del estilo de Mario Party o Wii Party, en el que hay que girar una ruleta para mover casillas (en lugar de tirar un dado) y según en qué casilla caigas puedes perder o ganar puntos o bien jugar un minijuego con el resto de jugadores. Todos los personajes y demás elementos del juego son dulces y golosinas.

Los cuatro minijuegos que hemos añadido son:

  • Blow it Up: Cada jugador tiene un globo de chicle que debe inflar pulsando lo más rápido posible el botón de acción.
  • Sweet Rain: Los jugadores están sobre una plataforma de algodón de azúcar y deben esquivar las gotas de lluvia de galleta.
  • Jellyasticity: Los jugadores están saltando sin parar sobre bolas de gominola y deben tratar de atrapar la máxima cantidad de dulces que van apareciendo en el aire.
  • Candy Count: Aparecen varios dulces moviéndose entre piruletas y los jugadores deben contar la cantidad exacta del dulce indicado.

El jugador que alcance 100 puntos, gana, y se convierte en el más dulce =)


martes, 10 de noviembre de 2015

Rendering Avanzado: Subsurface Scattering + Silhouette Shading (proyecto de investigación)

Por último, para la asignatura de Rendering Avanzado hemos realizado un proyecto de investigación. La temática era libre, siempre que tuviera que ver con todo lo relacionado con el temario de la asignatura. Nosotras quisimos investigar sobre cómo hacer que los modelos de dulces, golosinas, piruletas, etc. pareciesen más "realistas" (pero sin quitarle el estilo cartoon), es decir, que no tuvieran una apariencia de plástico. Para ello, realizamos un shader personalizado, o más bien dos shaders en uno, para tener nuestros dulces con Subsurface Scattering y siluetas.

Seguro que todos hemos acercado alguna vez la mano a una bombilla o a una vela, y hemos visto cómo la piel más fina entre los dedos se volvía anaranjada. Esto es porque parte de la luz atraviesa la piel, rebota y sale por un punto distinto.



Las golosinas y los algodones de azúcar también tienen esta propiedad, llamada Subsurface Scattering, así que se la añadimos a nuestro juego. Para implementar el shader, nos basamos en el código desarrollado por Marc Bouchard y Colin Barré-Brisebois de EA para el motor gráfico Frostbite.

Además, quisimos añadir siluetas a los modelos del juego, para darle una apariencia más cartoon. El Toon Shader de Unity3D no nos convencía, ya que aplanaba demasiado los objetos, así que también lo implementamos nosotras mismas. He aquí la comparación:



En la próxima entrada pondré el vídeo de presentación del juego y hablaré más de él, pero pongo aquí un adelanto, para mostrar cómo quedó nuestro shader personalizado de Subsurface Scattering con siluetas. Personalmente, me encanta esta imagen:


El vídeo con varias escenas del juego con el shader es el siguiente:


lunes, 2 de noviembre de 2015

Rendering Avanzado: Ray Tracing

La segunda práctica de Rendering Avanzado consistía en realizar un Trazador de Rayos (Ray Tracing), también con OpenGL y C++. Para ello, implementamos varios algoritmos y los probamos en varias escenas distintas.


  • Nuestro algoritmo de traza de rayos con tres luces de colores, sombras, reflexiones, corrección gamma y photo exposure:


  • Supermuestreo en el lanzamiento de rayos para reducir los bordes dentados (antialiasing):


  • Método Monte Carlo:

  • Niebla:

  • Subsurface Scattering (de color verde):

  • Cornell Box:




Para implementar el Subsurface Scattering, modificamos un algoritmo que creamos también para esta asignatura y que presentaré en la siguiente entrada.

martes, 13 de octubre de 2015

Rendering Avanzado: El Viaje Alucinante

Para la asignatura de Rendering Avanzado, mi compañera Jessica Mejías y yo hicimos dos prácticas y un trabajo de investigación.

La primera práctica consistía en hacer un recorrido a lo largo de una vena en OpenGL y que en algún momento se produjera una transformación. Nosotras hicimos nuestra transformación de modo que la vena se fuera dañando poco a poco y que luego, para reparar la vena con algún tipo de medicamento, tuviera lugar una criogenización.

Nuestra vena tiene forma de corazón, y consiste en un cilindro generado proceduralmente siguiendo un conjunto de curvas de Bézier enlazadas que dan forma a la vena, y por cuyos puntos pasa la cámara.


Como comenté antes, en primer lugar la vena se va dañando poco a poco, como si sufriera un deterioro fibrótico:


Luego hay un instante de ruido, supuestamente en el momento de la toma del medicamento, y entonces empieza la criogenización, muy poco a poco, hasta terminar completamente congelada. Los glóbulos blancos y rojos que están en posiciones aleatorias dentro de la vena también sufren la transformación.

Hemos utilizado ruido de Perlin seamless (sin costuras) tanto en el shader de fragmentos como en el de vértices de la vena, para dar el color y también las protuberancias de las paredes de la vena, a modo de displacement mapping. Para las transformaciones, creamos un shader personalizado que utiliza un mapa celular modificado. Todos los shaders los hemos programado usando GLSL.

El usuario puede controlar la cámara desde el teclado (modo automático o manual, movimiento, rotación, zoom), además de elegir el modo de renderizado (polígonos rellenos, modo alámbrico o puntos) y si el movimiento es lineal o corresponde a los latidos del corazón.



En el vídeo el movimiento de la cámara a veces no parece del todo fluido debido a la calidad del vídeo, pero en nuestra práctica el movimiento sí es fluido, ya que se consigue interpolando entre los puntos de las curvas de Bézier.

viernes, 21 de agosto de 2015

Simulaciones físicas

Para la asignatura de Animación Avanzada, realicé varias simulaciones físicas en C++ con Visual Studio, utilizando distintos métodos:

  • Masa-muelle y ODEs (ecuaciones diferenciales ordinarias):

  • Sólidos articulados:

  • Simulador de fluidos: