Interfaz en Unreal Engine 4 – parte 4

Posted tremor_al@hotmail.com Unreal Engine 4, Video Games

Hoy veremos el ultimo tutorial sobre interfaz básica en el cual nos enfocaremos en las herramientas de construcción y de volúmenes, dejando para ya cuando estemos haciendo nuestro primer juego – más info de esto más adelante-  (para los fines de esta serie de tutoriales no tocare el tema de vegetación y creación de paisajes).

Antes de poder empezar con tutoriales sobre diseño y creación de mapas en UE4 hay que entender dos conceptos básicos sobre la geometría. Por años Unreal Engine ha usado BSPs como la principal geometría para niveles, definiendo pisos, techos, paredes y cualquier estructura en bruto; mientras que los Static Meshes eran usados para decoraciones… el problema es que ahora es difícil saber distinguir donde se deben usar BSPs y donde Static Meshes. Y te preguntaras ¿Cuál es el problema?, la razón es sencilla, el uso excesivo de BSPs en un mapa consume muchos más recursos mientras más elaborada es la geometría además de que solo sirve para hacer borradores de diseño de nivel, en cambio los Static Meshes son geometría importada que es creada en aplicaciones de diseño 3D (Maya, 3DsMax, etc.),  que necesitan tener UV maps creados individualmente para cada elemento, más la restricción de no poder editarlos dentro de UE4, su mayor ventaja sobre los BSPs es que son geometría instanciada por lo que son menos demandantes de recursos y tienes toda la libertad para especificar el tipo de colisiones que generan así como la forma en que se rende rizan, cosa que los BSPs no.

Entonces para no hacernos bolas vamos a definir los dos elementos y ejemplificar su uso según Epic.

BSP:

Técnicamente se traducen como Espacio Binario Particionado (Binary Space Partitioning en inglés) y se refiere a datos estructúralos usados para organizar un objeto en el espacio. Otro término que se usa para referirse a los BSPs es CSG, estos dos términos definen al mismo objeto y son términos intercambiables. Los BSPs fueron en sus inicios usados como la base de cualquier diseño, en la actualidad gracias a la aparición de geometría más eficiente y especializada su usa ha disminuido y ya son solo usados comúnmente para definir el diseño base de un nivel.

Su uso primordial es el de definir los caminos de un nivel así como para bloquear áreas durante la fase de prueba de diseño, ayudan a probar el pacing así como el gameplay, se les suele aplicar una capa de iluminación básica para los primeros pasos de iluminación de un nivel de prueba. Son perfectos para todos estos casos por que los BSPs no necesitan que alguien del departamento de arte intervenga durante su creación, simplemente se crea una estructura básica, se le aplica una textura base y listo.

Static Meshes:

Desde su introducción en el 2003 los static meshes han sido útiles para darle detalle a un nivel,  debido a que su geometría puede ser infinitamente más complicada que la de un BSP. Su limitación inicial fue que para desplegarse en pantalla hacían un uso excesivo del GPU, pero como actualmente las tarjetas de video han aumentado enormemente su capacidad de procesos y memoria esa limitante ya no aplica. Además de que este tipo de geometría es la única que acepta Displacement Mapping dentro de UE4 gracias a DirectX11. Sin embargo esto también significa que cada elemento debe ser modelado, texturizado y animado en una aplicación externa para luego ser optimizado para UE4. Lo cual hace que su creación cueste mucho tiempo y esfuerzo.

Ahora vamos a ver alguno lineamientos básicos para diseño de niveles, antes que nada siempre trata de mantener tus BSPs como geometrías simples, no trates de crear modelos complejos usando esta geometría por qué puede hacer que el mapa se pese mucho. Deja que los Static Meshes se encarguen del detalle, sé que es difícil pero trata de usar BSPs solo para dar la forma básica del nivel y finalmente para evitar enojarte con tu maquina… nunca pero nunca dejes espacios vacíos entre estructuras delineantes, ya que pueden llevar a errores de compilación, fuga de iluminación y demás horrores que invariablemente querrás evitar.

Habiendo terminado con el breviario cultural vamos con las herramientas de geometría

En el panel “modes” si nos vamos a la pestaña de place y después a la de BSP nos encontraremos con los modelos básicos de geometrías. Todas se explican solas. Para crear una geometría la arrastramos hacia algún punto en el viewport y listo. Ahora lo interesante de los BSps es que pueden ser editados después de creados, si seleccionamos la geometría creada y checamos el panel detalles veremos todas las opciones disponibles, unas de las más interesantes es la de poder hacer que la geometría se cóncava, teselar o aumentar lados en el caso del cilindro/cono. En el caso de las geometrías de escaleras podemos especificar la altura de los escalones así como el número de los mismos y muchas otras opciones relacionadas.

Otro punto interesante de los BSPs es que pueden ser usados de dos formas, para crear o sustraer geometría. Para los que tengan algo de experiencia con paquetería de modelado 3d estarán acostumbrados con este concepto, es básicamente una operación booleana. Al añadir un BSP a nuestro mapa, en el panel de detalles de la geometría existe una propiedad llamada Brush Type con las opciones Additive o Substrative.

Básicamente esto significa que un BSP puede añadir o quitar geometría del mapa o de otros BSP tal como se ve en la imagen. Cabe mencionar que el tipo sustraer solo interactúa con otros BSPs

Luego otro punto importante de los BSPs es que cada cara de su geometría puede tener un material distinto. Para añadir un solo material a toda una geometría primero seleccionar el material en el Content Browser y después crear el BSP arrastrándolo al viewport. En caso de querer asignar un material específico lo único que tienes que hacer es arrastrar un material a la cara de la geometría deseada en el viewport.

Dejando atrás las geometrías nos adentramos en los demás objetos que importantes para nuestros juegos. Otra vez en el panel modes si checamos la pestaña de Basic veremos una lista variada de objetos. Empecemos por los triggers.

Estos son “volúmenes” que se pueden usar para disparar eventos en cuanto otro actor entra en contacto con estos. Se utilizan básicamente en elementos específicos de un mapa como un elevador, una puerta que se abre sola o para disparar CutScenes. Luego están los otros elementos como la cámara, el player start (se refiere al punto donde va a ser creado el jugador, puede haber más de uno en un solo mapa y si no se añade a nuestro mapa entonces el jugador será creado en una coordenada arbitraria que por lo general es el punto 0,0,0). Y finalmente el target point que sirve de objeto dummie.

En la pestaña de Lights encontraremos los distintos tipos de luces, directional light es el equivalente a una luz ambiente. Luego la sky light sirve para espacios amplios ya que toma la geometría más lejana del mapa, toma su información de color y después la usa para crear un horizonte.

Luego tenemos la point light que es básicamente una esfera de luz, todo aquello dentro de su radio se verá afectado por ella y finalmente la spot light que es equiparable a un reflector en el aspecto de que la forma en que se dispersa en el espacio es por medio de un cono.

En la pestaña de visual tendremos volúmenes que afectan la iluminación y algún efecto de renderizacion.

Por ultimo en la pestaña volumes veremos el resto de volúmenes cuyo uso tiene que ver más con la lógica del juego.

Los volúmenes son áreas tridimensionales que existen dentro de un nivel, cada tipo sirve a un propósito específico. Algunos de estos son:

  • Causar daño
  • Cambiar las leyes de la física
  • Bloquear el paso de un objeto por medio de colisiones
  • Cambiar la forma en que la luz o la visibilidad son calculadas

Con esto concluimos los tutoriales de la interfaz básica. A partir de la siguiente publicación haremos un juego tipo Bullet Hell usando blueprints.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.