Cómo usamos los efectos visuales para crear atmósfera en nuestro CRPG, Glasshouse

El blog invitado de hoy profundiza en el mundo feudalpunk de Glasshouse, el próximo CRPG del colectivo de desarrollo de juegos FLAT28. Este título en desarrollo, anunciado en la gamescom y escrito por el galardonado escritor Giacomo Montagnoli, promete ofrecer una experiencia rica en narrativa con gráficos de alta fidelidad. Únete al artista técnico líder de FLAT28, Andrea Marinelli, para ver cómo utiliza funciones tales como iluminación volumétrica, galletas de luz y simulación de telas para construir entornos atmosféricos deGlasshouse.
Introducción: Establecimiento de objetivos de diseño
Soy Andrea Marinelli, artista técnica líder de FLAT28, con más de 12 años de experiencia en el sector de los videojuegos. Comencé mi carrera en 2013 trabajando en proyectos VR. Con el tiempo, hice la transición al desarrollo de PC y consolas, ampliando mi experiencia en múltiples plataformas y tecnologías.
Desde que me uní a FLAT28 en 2022, he formado parte del equipo que desarrolla Glasshouse. Este CRPG basado en la narrativa está inspirado en juegos como Disco Elysium y Pathologic 2. Nuestro objetivo es construir sobre esas bases y, al mismo tiempo, darle un giro único al género.
Visualmente, queríamos establecer un estilo único que fuese inmediatamente reconocible. Desde el principio, también quisimos lograr una alta calidad visual. Por eso, elegimos Unity HDRP, lo que nos permitió llevar las imágenes más allá y lograr una apariencia sorprendente. Este flujo de trabajo fue uno de los factores clave para alcanzar ese objetivo.
Y en este blog, exploraremos a qué prestar atención, qué herramientas usar y cómo dar pistas narrativas al jugador, no solo a través de luces estáticas y dinámicas, sino también aprovechando la simulación de telas y mucho más.
Identifica los elementos clave de tu escena y haz que brillen
Siempre he creído que la iluminación no solo mejora las imágenes de un juego, sino que también es una herramienta narrativa clave. La iluminación adecuada puede crear ambiente, atmósfera e incluso darles a los jugadores pistas sutiles sobre lo que está sucediendo en una escena en particular.
Algo tan simple como un cálido brillo de lámpara, un foco de luz oscilante o el parpadeo de un televisor pueden comunicar mucho al jugador sobre la historia de una habitación.
En Glasshouse, es fundamental que cada habitación se sienta coherente, pero también única. Cada uno debe contar su propia historia y revelar algo sobre el personaje que la habita.
Hay muchas maneras diferentes de lograr resultados similares, algunas más eficientes que otras. En nuestro caso, utilicé una combinación de luces mixtas y horneadas en tiempo real para obtener el aspecto que quería.

Iluminación en tiempo real
La escena de arriba muestra una habitación que claramente ha visto algún tipo de lucha: papeles esparcidos por el piso, vidrios rotos, sillas volcadas y mucho más.
La principal fuente de luz aquí es un Spot Light utilizado para simular el sol. Elegí un Spot Light en lugar de un Directional Light porque no afecta a toda la escena, lo que me da mucho más control sobre lo que se ilumina y lo hace mucho más eficaz para este tipo de casos de uso. Lo utilicé para crear un punto de interés instantáneo. El ojo del jugador se acerca inmediatamente a la ventana, donde nota que está atrincherada. Esta luz se configura en tiempo real porque quería que proyectara sombras dinámicas del jugador a medida que se mueve por el espacio. También se combina con volumétrica en tiempo real para agregar un fuerte efecto cinemático.
Para mejorar el efecto, combiné sombras en tiempo real con una cookie de luz. La cookie simula las tablas de la ventana y me permite controlar la forma y la suavidad de las sombras. Esto me dio la flexibilidad de las sombras en tiempo real sin dejar de lograr detalles estáticos precisos, como el patrón de la tabla, y evitando los bordes dentados de las sombras. Elevar la resolución de sombras del Spot Light habría aumentado los costos de rendimiento, ya que se aplicaría a todas las sombras del frame. En cambio, al utilizar una cookie de luz, podía obtener la resolución que quería solo para esa sombra específica sin afectar a todas las demás sombras de la escena.
Debido a que esta luz es en tiempo real, los rayos volumétricos también se actualizan de forma dinámica. Eso significa que podría agregar toques adicionales, como aves sprites 2D o nubes que se mueven afuera y la luz volumétrica reacciona de forma natural, manteniendo la inmersión.

Luces mixtas
Las luces mixtas se utilizaron principalmente para preservar los reflejos especulares. Nuestro juego tiene muchas superficies metálicas y reflectantes, y no quería perder esa profundidad y realismo.
Sin embargo, no podíamos permitirnos demasiadas luces en tiempo real, por lo que las luces mixtas fueron un buen compromiso. Los usamos con sombras almacenadas en caché en Awake para reducir los costos de rendimiento y mantener los detalles de sombra necesarios. Para las luces de relleno, desactivamos las sombras por completo a fin de ahorrar rendimiento sin dejar de mantener los reflejos que necesitábamos.
Puedes ver cómo activar la luz mixta resalta los aspectos especulares de las tuberías.
Luces integradas
Si bien las luces mixtas y en tiempo real son potentes, no puedes depender de ellas en todas partes. Por razones de rendimiento y, a veces, para obtener una mejor calidad general, las luces integradas eran esenciales.
Usé varias luces de área y puntos para potenciar la iluminación de rebote donde yo quería. Aunque GPU Lightmapper de Unity ya calcula los rebotes de luz y de GI, agregar unas cuantas luces cuidadosamente integradas ayudó a garantizar que el aspecto se ajustara al estado de ánimo que quería.
Por ejemplo, agregué una luz de borde alrededor de una mesa de madera en el piso. Se sienta casi directamente bajo la luz del sol, pero sin un impulso se veía plano y subexpuesto. La luz del borde hizo que estallara lo suficiente como para llamar la atención sin romper el ambiente.
Sin embargo, para evitar que la escena se sintiera demasiado estática, agregué un punto de luz en tiempo real para el televisor y utilicé el sistema Animation de Unity para crear un sutil parpadeo. Este pequeño detalle inmediatamente agrega vida y deja entrever la historia de la habitación: tal vez alguien estaba observando, tal vez sucedió algo inquietante.
Una sutil luz parpadeante para agregar algunos elementos dinámicos
Sondas de reflexión
Las sondas de reflexión son esenciales para obtener imágenes creíbles. Por lo general, empiezo con una sonda en el centro de la habitación, que cubre todo el espacio, para que la mayoría de los objetos obtengan algunos reflejos de mapa de cubos. A partir de ahí, coloco sondas adicionales cerca de objetos reflectantes específicos. Cuanto más brillante sea el material, más se beneficiará de una sonda dedicada cercana.
Incluso con solo una sonda de reflexión activada, el amarillo del fondo de pantalla se vuelve visible en los reflejos de las tuberías en la parte superior de la pantalla.
Adaptive Probe Volumes (APV)
No tenemos un ciclo de día y noche en tiempo real en Glasshouse, por lo que no se necesitaron APV para las transiciones a la hora del día. Pero resultaron invaluables en comparación con las sondas de luz tradicionales para personajes dinámicos y NPC.
Antes, las sondas de luz daban resultados lo suficientemente buenos, pero no óptimos. Los APV colocaban sondas automáticamente con una interpolación más suave, lo que mejoraba enormemente el aspecto de los personajes al moverse entre las áreas brillantes y oscuras. Esto fue especialmente importante en las habitaciones con fuertes contrastes de luz.

Simulación de tela
Para agregar más dinamismo más allá de los personajes, las luces animadas y los efectos visuales, recurrimos a la simulación de tela incorporada de Unity. Se configuró y personalizó rápidamente.
Lo usamos principalmente para cortinas y tiendas de campaña. Por razones de rendimiento, no lo aplicamos en todas partes, pero cuando el jugador interactúa físicamente con la tela (como empujar a través de una cortina) agrega mucho realismo.
Establecí restricciones para que las cortinas se comportaran de forma natural y agregué el collider del jugador al componente de la tela para que reaccionara adecuadamente al movimiento.

Un truco que me gustó mucho fue configurar el material HDRP Lit de la cortina en Double-Sided. De esta manera, las sombras y la luz en la parte frontal de la tela también se ven en la parte posterior, fingiendo una especie de efecto de dispersión de subsuperficie. Hace que la cortina se sienta más delgada y realista, como si la luz atravesara la tela.
Las sombras y la luz se renderizan a ambos lados de la cortina, imitando un efecto de dispersión de subsuperficie.
Pensamientos finales
Las sombras dinámicas, las luces animadas y la simulación de telas agregan movimiento y estado de ánimo a un entorno que, por lo demás, es estático. Con el equilibrio adecuado de iluminación integrada, mixta y en tiempo real, además de un uso cuidadoso de cookies, puedes guiar la atención del jugador, insinuar detalles narrativos y moldear el tono emocional de un espacio. El resultado puede ser inquietante, tenso o tranquilo, según las elecciones que hagas.
Lista de deseos de Glasshouse y mantente actualizado con el desarrollo del juego en el canal YouTube de FLAT28. Explora más juegos Made with Unity en nuestra página de Steam Curator y lee información valiosa de los desarrolladores de juegos en nuestra página de Recursos.
