HL2Spain.com

Bienvenido, invitado ( Identificarse | Registrarse )

 
Reply to this topic Start new topic
> Guia Optimización - Hammer 2, Cómo optimizar tus mapas al máximo.
[Rottweiler]
mensaje 14 November 2004, 16:18
Publicado: #1


.: Miembro :.


Grupo: Miembros



Mejorar el rendimiento y controlar la visibilidad en los niveles.

Cuando un mapa se compila con VVIS, se crea un sistema que controla la geometrí­a que será visible en el mapa cuando se cargue en el motor grafico del juego. El tamaño de este sistema llamado PVS (potentially visible system), afecta directamente al rendimiento del juego. En este documento se explicara algunas de las herramientas que utilizan los mappers para mejorar el rendimiento de los mapas, utilizando areaportals, hint brushes, occluders, y detail brushes. Algunas de estas herramientas que se utilizan para controlar el PVS pueden disminuir drásticamente el tiempo que toma VVIS para compilar un mapa.


Leaves (hojas)

Un mapa ya compilado esta dividido en secciones, llamadas leafs. Cada leaf es un volumen que contiene una sección de la geometrí­a dibujada. Cuando una parte de otro leaf esta visible en el leaf actual, será considerado del mismo volumen y se representara en el motor grafico. Para ver el leaf que esta representado en ese momento escribiremos €œmat_leafvis 1€ en la consola. Un wireframe de color rojo representara el leaf actual. Si te vas moviendo por el interior del mapa, podrás observar como se re-dibuja cada vez que entres en otro leaf.


Hints brushes (solidos indirectos)

Los €œHint Brushes€ son sólidos creados manualmente que se utilizan para dividir los leafs. Ya que todo el contenido de un leaf que este dentro de otro queda representado en el motor, los hint brushes se utilizaran para definir las áreas de cada leaf.

Un hint brush es un sólido con la textura tools\toolshint en una o varias de las caras. Las otras caras deveran llevar la textura tools\toolskip. La cara o caras del sólido que tengan la textura toolshint serán utilizadas como planos de corte para los leafs. Se creara un lí­mite a lo largo de ese plano cuando el mapa esté compilado. Pueden usarse varios Hint Brushes en un mismo mapa y pueden incluso interceptarse.

El uso apropiado de los Hint Brushes en mapas grandes y abiertos, puede reducir el tiempo que toma VVIS para compilar. Una gran cantidad de leafs y de gran tamaño provocara que la compilación del mapa sea más lenta. No uses los hints brushes en secciones grandes y con poco detalle, ya que no afectara al rendimiento. Un ejemplo de ello seria un espacio al aire libre, como un barranco. La colocación de un hint brush horizontal en la parte superior del barranco, crearí­a un leaf gigante en el cielo y lo separarí­a del leaf junto con el barranco.

Mirar maps\sdk_hints.vmf como ejemplo para la utilización de Hints Brushes.


Areaportals (portales de area)

Un Areaportal es una entidad que se utiliza para €œsellar€ los leafs y para controlar la visibilidad. Los Areaportals son como una puerta, o están abiertos o están cerrados. Cuando un Areaportal esta cerrado, bloquea la visibilidad de la geometrí­a que este detrás de el. Cuando este abierto la geometrí­a volverá a ser visible. Los Areaportals pueden abrirse y cerrarse dinámicamente mientras el motor del juego este funcionando.


Occluders (obstructores)

Los Occluders son similares a los Areaportals, ya que cortan la visibilidad de la geometrí­a que este detrás de ellos. Las diferencias principales son: a) Los Occluders ocultan solamente la geometrí­a de los modelos, no de sólidos, y B) los Occluders no necesitan sellarse, ya que pueden colocarse libremente. Al igual que los Areaportals, los Occluders se pueden activar dinámicamente mientras que el motor este funcionando.

Los Occluders se crean convirtiendolos a la entidad func_occluder. El Occluder debe tener asignada la textura tools\toolstrigger en las caras en las que necesiten ocultar la geometrí­a, y tools\toolsnodraw en las caras en las que no lo necesiten . Las caras que tengan la textura toolstrigger degradaran el rendimiento del Occluder.

Nota: el uso excesivo de Occluders puede disminuir el rendimiento. Cada Occluder que se coloque deve ser testeado para comprobar que oculta la suficiente geometrí­a en el mapa. Si el Occluder oculta la visibilidad de modelos grandes, mejorara el rendimiento. Si no, el propio Occluder afectara mas al rendimiento que los propios modelos.

Mirar maps\sdk_occluder.vmf Como ejemplo de utilizacion del func_occluder.


Técnicas de construcción de Geometrí­a

Los métodos que se utilizan a la hora de construir la geometrí­a de un mapa a base de sólidos pueden afectar el rendimiento. La prioridad principal para crear la geometrí­a de un mapa en Hammer, es creando los menos polí­gonos posibles. Una técnica eficaz es utilizar la rejilla (grid) de las ventanas 2D para una alineación correcta entre sólidos siempre que sea posible. De lo contrario se crearí­an cortes en la geometrí­a, ya que VBSP tiene que cortar sobre la superficie de un sólido no alineado para que rinda correctamente. Si los sólidos se alinean correctamente en la rejilla, habrá un numero menor de cortes. Tener pocos sólidos rotados sobre una superficie también disminuirá el numero de cortes.

Es de observar que VBSP siempre corta la geometrí­a en 1024 unidades según las coordenadas del Hammer. Los cortes adicionales, pueden ser evitados si los sólidos terminan en una lí­nea de 1024 de la rejilla. En el menú de opciones del Hammer (Tools/Options), en la pestaña 2D Views, deberí­a estar activado "Highlight every 1024 units" . Activando esto, se mostraran las lineas rojas de la rejilla cada 1024 unidades.

En la sección siguiente, explicaremos como los Detail brushes pueden ser una herramienta valiosa para eliminar los cortes innecesarios que produce VBSP.


Detail brushes (Sólidos de detalle)

Los Detail brushes son una clase de sólidos que se agrupan para evitar cortes indeseados y que vallan a ser colocados en una superficie grande. Para crear un Brush detail, convertiremos el sólido o los sólidos en la entidad func_detail. Los sólidos que se incluyan en el func_detail no producirán cortes en las superficies. Un ejemplo común, seria un cilindro (como un pilar),que toquen el suelo y el techo en una habitación. El cilindro cortarí­a las caras del suelo y techo de la habitación en muchas mas caras pequeñas, donde las dos partes satisfacen .Convirtiendo el cilindro en a brush_detail esto no ocurrirá. También se puede hacer lo mismo con un sólido rotado, por lo cual no se producirán cortes en VBSP.

Los Detail brushes no bloquean la visibilidad, por lo cual no pueden utilizarse para sellar un mapa ni ninguna otra área. Puesto que los Detail brushes no bloquean la visibilidad, tienen la ventaja de simplificar el sistema de visibilidad. El uso apropiado de los Hint brushes puede disminuir enormemente el tiempo que utiliza VVIS para compilar un mapa.

Los sólidos func_detail son entidades en Hammer Editor, pero después la información de la entidad se procesa mediante VBSP. Esto se hace para disminuir los requisitos de memoria para la geometrí­a. En el motor grafico, los objetos que fueron creados con func_detail, son idénticos al resto de la geometrí­a sólida del mapa.

Los objetos pequeños, complejos o que no sirvan para sellar una zona, son buenos candidatos para convertirlos en func_detail. Un ejemplo de ello serian: pilares, puertas, rocas pequeñas, cercas, ruinas, embarcaderos, etc.

Mirar maps\sdk_func_detail.vmf como ejemplo de Detail brushes para reducir los cortes.

Distancias vinculadas a la geometrí­a

Los model props tienen un máximo y un mí­nimo vinculados a la distancia de representación en el mapa, pudiéndose modificar en las propiedades de la entidad. Esto permite que el mapper fije una distancia a su voluntad, para cuando el modelo no este representado en el campo de visión, por lo cual ayudara a aumentar el rendimiento. En maquinas que utilicen DirectX 7, para mejorar el rendimiento los props (modelos), desaparecerán antes o despues independientemente del valor que pongamos en sus propiedades. El motor grafico, según el sistema que tengamos en nuesta maquina, determinara el valor máximo de representación automáticamente.

Clip and fog distance (acortamiento y distancia de la niebla)

El uso del acortamiento de distancia, puede disminuir el numero de objetos visibles y mejorar la velocidad de representación. Los diseñadores de mapas controlan la distancia en la cual se acortan "o no se dibujan los objetos". El uso de la niebla te puede ayudar a ocultar dichas zonas.


Resolución del Lightmap

El motor grafico utiliza los datos de los Lightmaps para simular las luces y sombras de la geometrí­a sólida. Incrementar la densidad del Lightmap proporcionara sombras mas pronunciadas, requiriendo ello mas recursos de memoria. La densidad y la calidad de los Lightmaps se pueden modificar para mejorar el rendimiento en base a las caras.

Para ajustar la escala del Lightmap, utilizaremos la herramienta Texture Application Tool. La escala del Lightmap se mide en luxels por unidad de la rejilla. Cuanto mas bajo sea el numero mayor será la resolución. La escala por defecto es de 16 luxels por unidad del grid (rejilla).

Una mayor resolución del Lightmap incrementara el tiempo que toma VRAD para compilar el mapa. Para que VRAD compile mas rápido y se reduzcan los requisitos de memoria, se recomienda bajar la resolución del Lightmap en las caras donde las sombras no necesiten mucho detalle. Una forma correcta para utilizar valores mas altos para el Lightmap, seria en zonas donde este totalmente oscuro (donde las sombras no sean proyectadas) o en lugares donde los jugadores no puedan acceder o estén demasiado lejos.

Mirar maps\sdk_lightmaps.vmf como ejemplo de diferentes valores del Lightmaps.


+ información: http://foros.firewar.net

Mensaje modificado por [Rottweiler] el 14 November 2004, 16:25
Go to the top of the page
+Quote Post
Xelmonth
mensaje 14 November 2004, 16:51
Publicado: #2


¿HL²?
Icono de Grupo

Grupo: Colaborador n1



muy buena guia, seguid así­ que es fenomenal.

salu2


--------------------
user posted image
Go to the top of the page
+Quote Post
Markus
mensaje 26 August 2008, 22:05
Publicado: #3


.: Miembro :.


Grupo: Novatos



Buenas, no he acabado de entender lo de el "Hint", tengo las siguientes dudas dry.gif : - importa en que cara ponga la textura "Skip"?

- Por ejemplo si hago un solido y lo carveo (le hago un agujero por dentro) para que los jugadores puedan entrar en la entrada que le ice el agujero ahi deberia de poner el hint? wacko.gif

Gracias x todo y aver si me explicais o posteais algunos ejemplos donde poner la textura Hint, sry es que no me quedo muy claro. happy.gif
Go to the top of the page
+Quote Post
 

Reply to this topic Start new topic

 

Versión Lo-Fi Fecha y Hora actual: 6 Feb 2016 - 01:05