¿Olvidates tu contraseña?

Agua, ese dolor de cabeza

2013-04-25
5 comentarios

Sin agua es imposible entender la vida en los planetas, de la misma manera que sin luz es imposible entender el concepto de día y noche. El agua nos da vida, nos proporciona alimento, recursos, energía, y a los desarrolladores de videojuegos, dolores de cabeza.

El agua es un elemento complejo dentro del desarrollo de un videojuego; es impredecible, llena de interacciones con el entorno que la rodea (reflejo del mundo exterior, distorsión de la superficie bajo el agua, atenuación de los reflejos según el ángulo de percepción de la superficie acuosa, partículas flotando en el volumen de agua que no dejan pasar la luz, corrientes…) e incluso con ella misma (oleaje, salpicaduras, espuma, orillas, distorsión de la propia superficie…). Que se den tantas interacciones físicas a la hora de describir el agua es algo muy negativo para el desarrollo de este preciado líquido en un videojuego. Pues, aunque se tenga la capacidad tecnológica suficiente como para representar todas las propiedades del agua, en términos de rendimiento del juego será muy costoso, y a ningún desarrollador le gusta poner shaders (materiales) costosos que no aportan nada al gameplay.

En el caso de las superficies acuosas, no se trata sólo pues del realismo que esta vaya a tener, sino de si merece la pena a efectos de juego tener un agua tan detallada. Es por ello que, según la calidad del agua que se quiera representar, se utiliza una configuración u otra. A grandes rasgos, existen tres tipos de calidad en las superficies acuosas (sin contar elementos como cascadas o charchos): agua sin volumen con reflejos falsos, agua sin volumen con reflejos verdaderos y agua con volumen con reflejos verdaderos.

En el primer caso, se proyecta una textura de agua sobre un plano (plano real) y mediante uso de normal maps (imágenes cuyos píxeles son vectores que modifican la luz, y no píxeles de color) superpuestos entre sí, acompañado del empleo de diferentes desplazamientos, se consigue crear un efecto de distorsion sobre un reflejo ya dado. Pero, ¿cómo es posible decirle a algo que refleje algo que no es real? Muy sencillo, nuestra solución se llama cubemaps. En lugar de “envolver” la imagen que queremos que se refleje – por ejemplo, unos edificios y unas montañas – sobre el plano que actua de agua, se envuelve sobre la pantalla del jugador, y luego se dibuja sólo donde existe el agua. Aunque técnicamente pueda parecer complejo, desde el punto de vista de la optimización es muy útil, ya que utilizar siempre la misma imagen para “falsear” el reflejo significa que el procesador no necesita generar un reflejo nuevo a cada fotograma. Obviamente, esto significa que ninguna acción que realice el jugador influirá en lo que se va a mostrar en el reflejo. Este método, con el tiempo, ha quedado en desuso o marginado sólamente a elementos pequeños o aguas que no necesiten de mucho detalle, pero es sin duda un método efectivo y que ha engañado a generaciones de jugadores desde hace décadas.

Por otra parte, si el reflejo es verdadero, todo es exáctamente igual que en el método anterior; sólo que el shader de agua será exponencialmente más caro de renderizar para el procesador gráfico. Lo que sí resulta realmente difícil de realizar es, indiscutiblemente, el volumen real del oleaje. En la gran mayoría de juegos el agua es un plano sin volumen, pero cada vez es más habitual ver agua con oleaje real perceptible; es decir, olas que suben y bajan y son influenciadas por el viento. Para conseguir esto, primero es necesario tener una malla (geometría) muy subdividida para poder simular con detalle las subidas y las bajadas de volúmenes enteros de agua, para luego animar de alguna manera esta malla para que produzca su vaivén punto por punto de forma armónica y natural. Todavía se complica más pues, para animar el oleaje, no vale la animación tradicional; sino que hay que hacerlo mediante parámetros matemáticos (la mayoría de motores no aceptan imágenes en escala de grises para este propósito).

Por lo visto, en los motores de nueva generación, habrá bonanza para el agua en los videojuegos. En los pocos juegos ya mostrados se ha podido ver oleaje con espuma y salpicaduras – algo impensable hasta hace bien poco – y vehículos que modifican el oleaje (más interacción todavía), como un barco de recreo visto en un gameplay del futuro lanzamiento de Ubisoft Montreal, Watch Dogs, en el cual, el oleaje (con volumen real), se adaptaba a la forma de la nave y no se limitaba a la aparición unas partículas blancas de esquichazos detrás de la barca.

De hecho, es tan compleja la realización de superficies acuosas no falseadas (con reflejos, volumen o distorsiones reales) que existen empresas especializadas sólo en la realización de estas. ¿O es que alguien pensaba que el océano de la saga Crysis (id; Crytek, 2007) lo había realizado la propia Crytek? A nivel español, David Miranda es el máximo exponente en la realización de este tipo de shaders. Con sus demo reels impecables, ha demostrado que con mucho esfuerzo y horas a la espalda es posible generar buenos shaders para casi cualquier motor. Gente como David (en su caso especialista en shaders y postprocesados) son los que realmente hacen grande y llenan de esperanza al desarrollo de videojuegos español.

Sin embargo, muchas veces la belleza del agua en los videojuegos es ver como, con muy pocos recursos e interacciones físicas, se ha realizado un agua muy creible y realista. En Skyrim (id; Bethesda Games Studio, 2011), el agua de los arroyos rocosos (los más pequeños) tan sólo tiene distorsión, ya que ni siquiera refleja. Mediante un ingenioso método, se simula el fluir de agua espumada y esto ya es suficiente para que el ojo del jugador se imagine el resto, aunque no exista. Mención especial también a la variedad de aguas de la saga Mass Effect (id; BioWare, 2007-2012), en las que no existen dos superficies de agua iguales, sino que en función de la situación se construye el agua de una manera u otra. Esto es algo fantástico pues, en vez de generar un shader de agua adaptable a cualquier situación (normalmente caros en cuanto a rendimiento o pobres en cuando a estética), se generan shaders específicos; pudiendo, de esta manera, personalizar cada uno en función del ambiente de cada nivel.

En resumen, es muy complejo representar entes orgánicos en los videojuegos, y el agua entra dentro de este grupo. Conseguir que sea impredecible pero creíble mediante herramientas limitadas y funciones que se repiten a cada segundo o dos segundos es todo un logro para cualquier desarrollador. Porque, además de tener el conocimiento técnico, se ha de tener también el conocimiento teórico sobre cómo funciona el agua, que es infinitamente más complejo de entender que la parte técnica. Lo bueno es que hay que hacer trabajo de campo, y eso significa tomarse una buena cerveza fría en verano observando una piscina o una cala virgen en Menorca. Un trabajo muy sacrificado.

 

Inicio Foros Agua, ese dolor de cabeza

  • Imagen de perfil de Carlos CoronadoCarlos Coronado
    Super administrador
    #38488

    Sin agua es imposible entender la vida en los planetas, de la misma manera que sin luz es imposible entender el concepto de día y noche. El agua nos d
    Lee el artículo completo en http://www.zehngames.com/developers/agua-ese-dolor-de-cabeza/

    Imagen de perfil de mirlo2006mirlo2006
    Participante
    #38489

    El agua bien implementada es de esos elementos que le dan un caché gráfico a un videojuego y a mí es uno de los aspectos que más me gusta admirar, quedarte plantado enfrente de un lago bien recreado es una gozada y hablando de volumen real del oleaje, le invito (como ya comentamos, ahora entiendo la dedicatoria… 🙂 ) a que le de un vistazo a las playas del Viking, porque desde mi ignorancia en estos aspectos me parece asombroso el movimiento del agua y una de las razones de porqué conservo este mediocre juego, pero es que como comentaba antes, los videojuegos también pueden servir de retiro contemplativo, porque estar en lo alto de un risco observando el lento vaivén de esas olas es una experiencia mística….

    Imagen de perfil de Carlos CoronadoCarlos Coronado
    Super administrador
    #38490

    Es cierto que una buena agua contribuye MUCHO a la ambientación! Me he estado mirando videos del vikings así por encima en youtube y no tiene para nada mala pinta el agua de este juego teniendo en cuenta el resto de aspectos gráficos. Quizás algo exagerado el oleaje en las orillas pero para nada algo criticable. Como bien dices, contemplar un paisaje en un videojuego puede ser muy enriquecedor, y el agua siempre ayuda!

    Un Saludo!

    Imagen de perfil de RazorRazor
    Participante
    #38491

    El agua siempre ha sido uno de los elementos que más me han atraído en los videojuegos aunque, por desgracia, no se le suele dar mucha importancia que se merece. Casualidades de la vida que hace apenas un par de días me vi estos videos en los que aparecen interesantes modelos que imitan de una forma muy fiel a la realidad la respuesta del agua. ¿Veremos esto en la NextGen?


    Imagen de perfil de salore78salore78
    Participante
    #38492

    Tal cómo comentáis todos, el agua es un elemento que a la hora del gameplay puede que no sea muy importante, pero da caché al juego. Una buena recreación del agua la apreciarás como un plus de calidad en cambio, si está mal recreada, automáticamente asociarás el juego a un trabajo mal pulido del estudio desarrollador.

    Por lo que explicas, entiendo que el agua muchas veces se trata como ente aparte e individualizado del motor gráfico del juego. Por tu artículo también llego a la conclusión, puede que errónea, de que en anteriores generaciones, ya en entornos 3D, los protagonistas siempre eran alérgicos al agua y nada más tocarla ya morían por la complicada tarea que debía ser el reproducir la interacción del avatar con el elemento agua.

    Después de leer el artículo he recordado la charla con mirlo2006, ekon, tú y un servidor de ustedes que tuvimos el viernes (ahora he comprendido el tweet de ayer) y nos recordabas lo complicado que era recrear el agua y que con la nueva generación, la tarea ya no será tan complicada. ¿Sería tan difícil recrear la física de la cerveza, sobretodo bien fría? xD

    Una de las recreaciones del agua que me gustaron y recuerdo más, es la de los inmensos mares en cell shadin de The Legend of Zelda: Wind Waker (Nintendo EAD, 2002). Supongo que debe ser más sencillo recrear el agua en un apartado gráfico que utiliza el recurso del cel shading, que no en un apartado gráfico más realista.

    Estupendo y genial artículo, como todos los DEV, que esta vez sí me he atrevido a comentar. Un placer leerte y sobretodo haberte conocido.

    Imagen de perfil de NoorNoor
    Participante
    #38493

    Después de leer tu entrada he visto como 2 o 3 videos y artículos más por ahí que hablaban sobre el agua en los videojuegos. ¿Es el día del agua digital, creas tendencia o algo? XD En cualquier caso un gran artículo, como siempre. En mi caso siento debilidad por el agua de los primeros Super Mario, que más que agua parecía aire. Caía uno a pique y sin remedio.

Viendo 6 publicaciones - del 1 al 6 (de un total de 6)

Debes estar registrado para responder a este debate.