Los proyectos: una ciudad modular UE5


por Filipp Sparak

Hola,

Hay un momento en que tienes una idea y comienza como algo pequeño, algo contenido.
Luego pasa el tiempo y como esta idea sigue cocinándose en tu cabeza durante todo el día, le agregas más y más cosas.
Entonces sigues cocinándola, y de repente comienza a ramificarse demasiado en múltiples direcciones a la vez.
Aquí es donde te quedas con una elección: o cortas esas ramas y te estableces, o las dejas crecer un poco más.

El objetivo

Con esta pieza personal elegí esto último.
Sin embargo, al principio era pequeño y contenido, solo una manzana de la ciudad, me dije a mí mismo, pero luego, cuanto más edificios seguía agregando al fondo para llenar lo que era la vista en ese momento, más me daba cuenta de que esta era la oportunidad perfecta para intentar lograr algo que nunca había intentado antes.
Una ciudad funcional real con suficientes detalles como para apuntar a proyectos cinemáticos o de perspectiva en primera persona y para rematar con interiores únicos precisos a la estructura del edificio en el que se encontraban.

La preparación

Así empezó.
Con un conocimiento limitado del aspecto técnico de las cosas, el rendimiento para el nivel de calidad visual que quería lograr, la instanciación, la partición del mundo o incluso una estimación aproximada del tiempo que quería asignar a este entorno, tampoco estaba seguro de cuántos bloques sería capaz de colocar y finalmente llevar a la línea de meta antes de que mi computadora se negara a computar más.

Lo mejor que podía hacer en este punto era establecer algunas reglas para que al menos fuera más fácil dar marcha atrás, rehacer, cortar y optimizar cosas en el futuro:

  • Los edificios modulares y los módulos de carreteras con métricas estrictas y adhesión a la cuadrícula me permitirían concentrarme en ensamblar rápidamente grandes volúmenes del paisaje urbano sin perder tiempo tratando de alinear las cosas.
    La gran desventaja de este enfoque es que a menudo los ensamblajes completamente modulares tienden a producir resultados rígidos y en bloques, por lo que debe tenerlo en cuenta desde el principio y reemplazar los principales infractores con módulos más grandes de aspecto más natural, por ejemplo.

  • Otra cosa que decidí desde el principio fue cómo se lograría la textura. Con la cantidad de módulos y accesorios que vendrían, no quería tener que modificarlos individualmente, así que tendría que introducirse una biblioteca de materiales que se pudieran convertir en mosaicos, que se aplicarían a todos los módulos y accesorios del proyecto.
    Sin embargo, al principio, una colección de materiales básicos de colores era suficiente.
    Sabía que los mosaicos no serían suficientes, así que se introdujo la pintura de vértices para ciertos tipos de materiales.
    Otra cosa para ayudar a acentuar los detalles geométricos era una máscara RGB que se hornearía para cualquier activo o un grupo de activos a través del segundo canal UV y luego se aplicaría sobre los mosaicos para resaltar los bordes, rellenar las áreas cóncavas y ayudar a romper la monotomía con manchas y gradaciones de color, todo para obtener un resultado detallado y con radios.

  • Como Nanite acababa de introducirse en Unreal Engine, tenía curiosidad por saber lo potente que es realmente esta nueva herramienta.
    Teniendo en cuenta que no tendría tiempo para crear geometría de baja poli y que el objetivo era tener tantos detalles geométricos como fuera posible de todos modos, pensé que todos los nuevos activos que se introducirían tendrían solo su geometría real para soportar todos los detalles.
    Sin mapas normales horneados, solo vértices sin procesar y eventualmente calcomanías de malla.
    Dicho esto, necesitaba mantener los detalles y los tamaños de bisel consistentes en toda la biblioteca de activos, así que me decidí por un ancho unificado para los biseles; reutilizaría objetos pequeños como pernos, manijas, remaches, etc.; y tendría un personaje 3D en mi escena de 3ds Max cerca del kit que estaba modelando actualmente en todo momento para mantener las proporciones consistentes también.

Hipo

Estos puntos clave ayudaron a suavizar mucho la producción, pero aún así no estuvo exento de problemas. A pesar de haber trabajado antes en proyectos de juegos con mapas de ciudades abiertas (y eso definitivamente me ayudó a visualizar mejor todo el entorno y me dio respuestas de antemano a preguntas en las que inevitablemente me quedaría atascado en algún momento), todavía me estaba acercando a algo de esta escala en solitario por primera vez en mi vida.
Sin partir de una base que normalmente obtendrías de un diseñador de niveles, me di cuenta en un momento de que la altura de mi techo es demasiado baja, las carreteras se están volviendo demasiado estrechas para ser utilizadas de manera realista como tales o para acomodar automóviles estacionados a los lados sin bloquear el tráfico potencial.
Entonces, a medida que levantaba los muros y ensanchaba las carreteras junto con mover edificios fuera del camino a través de lo que ya eran un par de docenas de bloques, me di cuenta de cuán profundo era el pantano en el que realmente me metía.

Vision and Pipeline

Afortunadamente, tenía un buen trabajo en ese momento que me permitió tomarme mi tiempo con esta pieza. Con los problemas críticos resueltos, por un tiempo fue solo modelar kits de construcción, propagarlos, ver cómo se combinan con otros kits, luego pasar a los primeros accesorios grandes, etc.
Esencialmente, el enfoque fue ir de grande a pequeño, verificar qué otro elemento crucial aún falta y reducir aún más la lista.
Como todo el proceso con The Projects fue bastante único en el sentido de que podía mantener en mi cabeza la imagen que quería lograr al final y no tenía un equipo al que propagarla, no requería bloqueos elaborados para diseños de calles, módulos, estructuras, accesorios, etc.
Con lo que me conformé fueron algunos bocetos generales para mantener el lenguaje de diseño uniforme y luego un montón de fotos de varias calles y edificios.

Volviendo al modelado, después de completar algunos kits modulares iniciales, comencé a agregar un grupo terminado de activos tras otro a un lugar que antes estaba completamente vacío, lo que era similar a agregar piezas a un rompecabezas en lugar de un enfoque iterativo más tradicional, esencialmente omitiendo por completo la etapa de bloqueo en este punto.
Las ventajas de este flujo de trabajo son un gran ahorro de tiempo debido a que no te distraes viendo un montón de activos sin terminar en la escena y teniendo que decidir en cuál trabajar a continuación y luego solo acercándolo un poco al estado final de todos modos.
En cambio, cuando ves que falta un grupo de activos que cumplen una función particular en el entorno (como un kit de contenedores grandes y botes de basura), lo modelas y texturizas, lo integras, lo propagas y luego ves qué más falta.
Enjuaga y repite.
Con suficiente práctica y una comprensión clara de hacia dónde quiere llevar su proyecto, ahorra mucho tiempo y elimina tener que dar vueltas en círculos entre un montón de cosas sin terminar realmente nada.
Establezca un nivel objetivo de calidad y finalización para sus activos y cúmplalo.
Esta barra aumentará naturalmente poco a poco con cada nuevo grupo de activos que cree mientras mantiene un nivel constante de calidad en todo el proyecto.

Este enfoque no se adaptará a todos ni a todos los estilos de proyecto, sin embargo, si se siente cómodo con sus herramientas y habilidades de gestión, si planea que su entorno sea grande y tenga una gran biblioteca de activos, creo que podría valer la pena intentarlo.

Interiores y prefabricados

A medida que la parte exterior comenzó a desarrollarse con kits cada vez más completos, una biblioteca de materiales en constante crecimiento y algunas iteraciones más de iluminación, cambié mi enfoque en los interiores para ponerlos a la altura.
El enfoque general fue similar a los exteriores, donde pasaría de grande (diseño modular) a pequeño (accesorios; follaje).

En un momento me di cuenta de que la iluminación dentro de los edificios es un problema creciente.
Si bien el estado del exterior estaba bien, los interiores no propagaban suficiente luz.
Junto con eso vino otro problema donde todos los edificios de la vista, que eran exactamente los mismos prefabricados que en el área activa del mapa, comenzaron a volverse un poco demasiado pesados ​​para el rendimiento por tener todos ellos incluyendo geometría interior.
Para combatir esto separé todos los interiores de sus cascos en sus propios prefabricados.
Se creó otro prefabricado para que sirviera como una tapa opaca para cerrar las ventanas y puertas ahora abiertas de aquellos edificios que no requerían un interior.
Esto me permitió hacer la vista más clara, mientras seguía propagando cambios a los cascos de los edificios allí.
Tenga en cuenta que el objetivo de este proyecto era obtener el resultado más bonito sin asignar mucho tiempo a la optimización, por lo tanto, este enfoque resultó valioso.
Los prefabricados en esta situación son actores de nivel empaquetados (PLA) anidados dentro de una instancia de nivel.
Los PLA se utilizan para instanciar mallas estáticas de una manera no destructiva, sin embargo, ese es el único tipo de actor que puede tener allí, por lo que luego coloca calcomanías, follaje y planos en la instancia de nivel, que se convierte en su prefabricado terminado.

Otra cosa que se hizo con respecto al problema con la iluminación interior fue agregar un Volumen de posproceso (con una prioridad mayor que la del PPV no delimitado del exterior) a cada prefabricado interior que trazaría cuidadosamente su forma para que cuando la cámara esté dentro del edificio, habría áreas mínimas donde el PPV interior no lo afectara.
El PPV interior tendría su exposición y otros valores de posproceso ajustados para que funcionara simultáneamente con el PPV exterior anulando los mismos valores enumerados anteriormente sin tener que cambiar realmente ninguno de ellos en el PPV exterior.

En algún momento durante la producción, el rendimiento comenzó a volverse un poco lento.
Tener cada activo solo en el esquema de Partición mundial se estaba convirtiendo en un problema para los drawcalls y la velocidad de cuadros en este punto, por lo que las mallas estáticas tuvieron que dividirse en PLA aproximadamente en los límites de una manzana de la ciudad.
Se creó una instancia de nivel adicional, que albergaría a los otros actores en el área, como planos, autos y ciertos arreglos.
Después de convertir todo a la nueva configuración, pude volver a tener todo el mapa cargado a la vez y aún así sentirme lo suficientemente cómodo con la velocidad de cuadros para continuar trabajando en el nivel.

Concluyendo

En este punto, no quedaban muchas cosas por hacer: se tuvieron que crear más calcomanías para agregar interés a las superficies a través de mugre, grafitis, etc.; se tuvieron que hacer atlas de follaje y mallas; se necesitaban activos de basura para dar una sensación descuidada y abandonada; efectos visuales básicos para agregar más ruptura y dinamismo a la escena.
Luego creé todas las cosas enumeradas al igual que todos los demás activos en el proyecto con Photoshop, Substance Painter, Substance Designer y 3ds Max.

Después de los ajustes finales de iluminación y 2,5 años de trabajo, la ciudad finalmente estuvo completa.

Gracias por leer y mucha suerte en tu próximo proyecto!

Filipp Sparak – Todos los enlaces:

Últimos artículos

Buona la Prima - Episodio 58

Nuevo episodio de Buona la Prima de Turin Toolbox: Pietro Faccio y Sergio Rocco revelan los secretos de Unreal Engine entre estrategia, innovación y diseño de juegos.