Pasillos, puertas simples e iluminación

De LiTHiUM

Tutorial Intermedio #1 (GoldSrc)
Requisitos: Para este turorial usaremos el mapa del Tutorial Básico #3. Si no lo tienes, bájatelo haciendo click aquí.

Tabla de contenidos

Introducción

Vamos a darle un poco mas de emoción al nivel creado anteriormente. Le vamos a añadir un pasillo, un par de puertas y a crear una iluminación mas realista. Primero abre el mapa del tutorial anterior, y tras elegir la configuración del Counter-Strike, selecciona la textura de la pared que usamos anteriormente.


El pasillo y una nueva habitación

NOTA: Una forma rápida de elegir una textura ya usada en el mapa es abrir el Teture Application Mode (herramienta de texturizado) y pulsar sobre la pared que tenga la textura que queramos usar. Entonces vemos como en la herramienta de texturizado, abajo, donde pone Current Texture (textura actual) cambiará la textura q antes había por la que nosotros acabamos de seleccionar. Entonces salimos de la herramienta de texturizado y vemos como en la barra de herramientas de la derecha (la de las texturas :) aparece la textura seleccionada sustituyendo a la que había antes. Este método suena extraño, pero si cogemos la mecánica, ahorraremos mucho tiempo.

Una vez seleccionada la textura, crea un cubo de 60x128x128 (por ejemplo, el darle 60 es para que sea mas ancho que la pared, pero en realidad puede ser cualquier valor mayor o igual al espesor de la pared, en este caso mayor o igual a 16). Entonces, colócalo de forma que corte la pared simétricamente, pero fijate en que no corte el suelo:

Bloque creado y listo para cortar la pared
Aumentar
Bloque creado y listo para cortar la pared

Entonces cuando lo hayas colocado, lo seleccionas, pulsa el botón derecho del ratón sobre él, y eliges Carve (tallar, cortar) del menú desplegable. Entonces, pasado unos segundos (depende del ordenador y de la complejidad del corte entre sólidos) verás como se han creado unas divisiones en la pared. Entonces separa un poco el bloque pequeño para ver como ha quedado:

Movemos el bloque para ver el resultado
Aumentar
Movemos el bloque para ver el resultado

Ahora aprovecharemos este cubo de 60x128x128 para hacer el pasillo. Selecciónalo y escálalo hasta que quede, por ejemplo 256x128x128. Entonces ahuécalo con Hollow (ahuecar), como ya sabes, pero recuerda hacerlo con un valor de -16.

Ahora usaremos una nueva opción que es Ungroup (desagrupar). Selecciona el nuevo pasillo y pulsa el botón derecho del ratón y en el menú elige esta opción. Aparentemente no pasa nada, pero lo que hemos hecho ha sido desagrupar el suelo, techo y paredes del pasillo. Para eliminar la selección de un objeto, solo tienes que pulsar con el ratón en cualquier zona del mapa 2D. Ahora sí, selecciona la pared del pasillo que une éste con nuestra habitación y bórrala, así como su simétrica (pues luego haremos una 2º habitación). Entonces vemos como no se unen exactamente el pasillo y la habitación. Esto es debido al suelo y al techo, que tienen un exceso de +16 a cada lado del pasillo. Selecciona el suelo y escálalo hasta que coincida con las paredes del pasillo. Haz lo mismo con el techo. Quedará exactamente esto:

Resultado del escalado
Aumentar
Resultado del escalado

Entonces agrupa de nuevo las paredes, pues ahora habrá que moverlas. Haz que coincidan con el corte de la pared de nuestra habitación.

Ahora vamos a vaguear un poco. Selecciona nuestra vieja habitación totalmente (no selecciones la luz ni las salidas para los jugadores). Entonces pulsa el botón derecho del ratón y selecciona Copy (copiar). Elimina la selección de la habitación y en una vista 2D (yo suelo usar la vista de planta que es la de arriba a la derecha) pulsa el botón derecho del ratón otra vez y elige Paste (pegar). Entonces tendremos una copia exacta de la habitación. Ahora lo que tienes que hacer es rotarla 180º para hacer que coincidan el corte de la pared y el pasillo. Si no tienes calro como rotar un objeto ve al "Tutorial Básico II: "Entorno del WorldCraft 2.1"

NOTA: Cuando copies y pegues un objeto, fíjate bien, ya que casi siempre queda bien en la vista en la que lo has pegado, pero en las otras 2 no suele cuadrar :(

Cuando la hayas rotado, y cuadrado el pasillo con los agujeros de la pared, tendrás algo así:

Resultado final
Aumentar
Resultado final

Ahora si te fijas bien, veras que las texturas del pasillo no coinciden exactamente con las de los marcos donde vamos a poner las puertas. Entonces abre el Texture Application Mode (herramienta de texturizado) y ve pulsando sobre las paredes del pasillo manteniendo pulsada la tecla Control del teclado. Entonces seleccionarás todas. Fijate como tendrás que seleccionar los marcos también, ya que forman parte de la pared de la habitación, no del pasillo. Tendremos que seleccionar 9 zonas. Entonces fíjate en la herramienta de texturizado, arriba a su derecha, donde pone Shift, y veras qeu no hay ningun valor. Esto es debido a que no todas las texturas seleccionadas tienen el mismo valor de desplazamiento en el eje X. Entonces pon el valor a 0. ahora tendremos las texturas perfectamente alineadas. Haz lo mismo con la textura del suelo de las habitaciones y el pasillo, en el caso de que elijas la misma, para que no se note el cambio de solido (habitacion -> pasillo -> habitación). Ahora haremos dos cambios. Pasa una salida de un jugador a la otra habitación, da igual cual, para que quede un Terrorista en una y un Antiterrorista en otra. Ahora cambia de posición la luz y ponla en el centro del pasillo. El cambio de luz lo haremos para ver como las luces atraviesan las entidades (puertas, cajas rompibles, escaleras, etc.) debido a que el motor del Half-Life no es capaz de calcular las oclusiones de la luz ni usa iluminación dinámica en tiempo real.

Una vez tengas todo lo anterior hecho, vamos con la siguiente sección...


Las puertas

Antes de nada selecciona una textura para las puertas. Como el tamaño del marco es de 128x128, busca una puerta con esas medidas. Al usar en el filtro la cadena door (sin comillas, recuerda) obtenemos varias, de las que he elegido LAB1_DOOR01 ya que no desentona con el resto de texturas. Entonces crea un solido que será nuestra primera puerta, an una de las entradas al pasillo. Yo he comenzado por la derecha. El solido, por ejemplo, le pondremos un tamaño de 8x128x128 (el valor de 8 es para que la puerta no coincida exactamente con el ancho de la pared y quede mas realista ;). Entonces veremos como la textura de la puerta no está bien colocada. Entonces tenemos 2 formas de hacerlo:

1º - Abrir el Texture Application Mode (herramienta de texturizado) y hacerlo a ojo, mas o menos, teniendo en cuenta que siempre suele quedar la textura colocada correctamente con valores que sean multiplos de 2 (tanto positivos como negativos): ...-64,-32,-16,-8,-4,-2,0,2,4,8,16,32,64... Esta primera forma es mas fácil de entender, pero deberemos cuadrar manualmente las texturas una a una, en nuestro caso solo las dos caras y el marco inferior de la puerta (solo cuadraremos los lados visibles).

2º - Seleccionamos el objeto (en este caso la puerta) y nos vamos arriba a la barar de herramientas llamada MapOperations Bar (barra de operaciones del mapa) y pulsamos sobre el segundo botón comenzando por la derecha, que tiene escrito las letras TL (Texture Locking o bloqueo de textura). Si está hundido estará activado (lo pulsamos para desactivarlo) y si no lo está, perfecto, lo dejamos asi. Esto que hemos hecho es indicar al WorldCraft que cuando movamos el objeto, deje la textura quieta, en la posición actual. Entonces moveremos la puerta lateralmente, en este caso 64 unidades (en nuestra vista 3D veremos la mitad de la puerta en el pasillo y la otra mitad estará dentro de la pared, perfecto). ahora pulsaremos de nuevo el botón TL y moveremos la puerta hacia nuestra posición deseada. Ya tenemos la textura encuadrada en el eje X. Ahora haremos lo mismo pero hacia arriba o abajo, para encuadrar la textura en el eje Y. Como resultado, si ahora pulsamos la herramienta de texturizado, veremos que los valores eran X=-64 e Y=32. Esta segunda forma es algo mas compleja, pero la gran ventaja es que encuadra las texturas de una sola vez, dos a dos, esto es, si hemos cuadrado una cara, la otra también estará cuadrada ;)

Una vez que ya tenemos construida nuestro sólido, que será la futura puerta, ha llegado el momento de convertirlo en una puerta real, y dotarla la movimiemto y algunas características adicionales. Este tipo de puerta solo permite movimiento lateral (derecha, izquierda, arriba y abajo). Las puertas rotatorias las veremos en el siguiente tutorial.

Selecciona el solido que será nuestra puerta y pulsa sobre el el botón derecho del ratón. Selecciona Tie to Entity (relacionar con una entidad) y se desplegará ante nosotros un pequeño cuadro llamado Object Properties (propiedades del objeto). En Class(clase, tipo), dentro de Class Info (información de clase), elige la entidad func_door (función de puerta). Entonces verás que aparecen los Attributes (atributos o parámetros). Mas adelante, veremos para que vale cada uno detenidamente. De momento, solo tocaremos un par de cosillas, como el parámetro Angle (ángulo). Selecciona Up (arriba). Este parámetro indica hacia donde se moverá la puerta. En este caso elegimos arriba para que nuestra puerta se abra hacia arriba cuando nos acerquemos a ella. Ahora , para darle un poco de realismo, ve a los parámetros Move Sound (sonido de movimiento) y Stop Sound (sonido de parada). En el primero pon, por ejemlpo Pneumatic (Slidng) (sonido de puerta neumática (deslizante) en movimiento) y en el segundo Metal Slide Stop (sonido de parada de puerta deslizante de metal). Ahora nuestra puerta será mas realista. Quedará así:

Vista de la nueva puerta
Aumentar
Vista de la nueva puerta

Ahora haremos nuestra segunda puerta. Copia la primera puerta y pégala en el otro extremo del pasillo. Para nuestra segunda puerta usaremos otro parámetro mas. Como hemos copiado y pegado, la puerta conserva todas las características de la puerta original. Entonces selecciónala, pulsa el botón derecho del retón sobre ella y ve a Propierties (propiedades). De esta forma entraremos en las propiedades de nuestra segunda puerta. Como es una entidad-puerta vemos las características en el cuadro. En Attributes (atributos o parámetros) buscaremos el parámetro Lip (este parámetro sirve para dejar una puerta a medio abrir, como si se atascara). El valor que introduzcamos en este campo será el espacio que restaremos al recorrido de la puerta. Esto es, si ponemos 64, y la puerta mide 128 de alto, se moverá 64 unidades y se parará. Si ponemos 32, la puerta se moverá 96 unidades y se detendrá...

NOTA: Cuando usemos este parámetro deberemos tener en cuenta el tamaño de los personajes, pues si se deja un valor de Lip muy grande no podremos pasar por debajo ni agachándonos. El tamaño de un personaje es de 32(ancho)x32(largo)x72(alto).

Salva el mapa, compilalo, y pruébalo, para que veas como va quedando...fíjate en las puertas, y en la que se queda entreabierta...y también fijate en los fallos de iluminación... :(


La iluminación

La iluminación en el Half-Life es realista pero está anticuada, ya que es mediante lightmaps (mapas de luz) en vez de luz dinámica. Cuando compilamos nuestro nivel, el módulo hlrad.exe es el encargado de crear esos lightmaps calculando los focos de luz, las luces reflejadas, los solidos que proyectan luz y los que no, las sombras que se generan, etc. Por eso tarda tanto en ejecutarse esa parte de la compilación del mapa... ^^

Como habrás podido ver en el mapa, lo único que bloquea la luz son los solidos. Las entidades (puertas en nuestro caso) son atravesadas por la luz, y esta es la razón por la que deberemos cuidar mucho la iluminación de nuestras habitaciones, pues si no la luz atravesará las puertas y se verá desde fuera, dando una sensación poco realista. La forma de solucionar esto es colocando luces que contrarresten estos efectos de las puertas.

Podremos hacerlo mediante una ilunimación ambiental uniforme. Para esto colocaremos una luz e el techo de la primera habitación y unos focos con luz direccional en la segunda.

1º - En la primera habitación colocaremos una luz, pero esta vez en vez de usar una entidad de luz, usaremos una textura que proyecte luz. Esta técnica es muy usada por los diseñadores de mapas de VALVe. Si quieres comprobarlo, abre un mapa original con el BSPDecompiler (te lo puedes bajar en la sección de ÚTiLES). Para usar esta técnica deberemos tener en el directorio del WorldCraft un archivo llamado lights.rad. Por defecto, al instalar el WorldCraft viene este archivo, pero viene vacio. Lo que tienes que hacer es eliminar este archivo vacío, y el valve.rad (que contiene toda la información de las texturas que emiten luz) renombrarlo a lights.rad. Ahora entonces, vamos a la barar de herramientas de la derecha, a el explorador de texturas. Introducimos en el filtro la cadena li (lights, luces) y obtenemos diferentes texturas de fluorescentes de diferentes colores entre otras. Nos fijamos en el +0~LIGHT2A que es una textura de 3 tubos fluorescentes amarillos. Vemos que mide 64x32. Entonces de nuevo introducimos en el filtro la cadena met (metales) y de las texturas que nos salen como resultado elegimos CSTRIKE_ME4METL y aceptamos. Entonces creamos nuestro objeto (lampara) con la textura de metal, con el tamaño de la textura de los fluorescentes, por ejemplo 64x32x16. Lo colocamos centrado en la habitación, pegado al techo. Entonces ahora abrimos el Texture Application Mode (herramienta de texturizado) y pulsamos en la cara inferior del solido, donde pondremos ahora la textura de la lámpara. Entonces en la herramienta de texturizado pulsamos Browse (explorar) y buscamos de nuevo nuestra textura emisora de luz. La cuadramos. Entonces tendremos exactamente esto:

La luz de la primera habitación
Aumentar
La luz de la primera habitación

NOTA: Me he extendido un poco en la creación de la lámpara para mostrar otro método de texturizado. En los sucesivos tutoriales se dará por sabido ;) Además he creado una caja sólida (no es una entidad) cerca de la puerta para apreciar como bloquea los rayos de luz y proyecta sombras.

2º - En la segunda habitación colocaremos 4 solidos simulando focos de 32x32x32, pegados a las paredes, separados 64 unidades el primero del segundo. Las textura será por ejemplo la de metal usada anteriormente llamada CSTRIKE_ME4METL. En las caras inferiores usaremos la textura LITEPANEL1, que deberemos escalar a la mitad para que cuadre en nuestro sólido. Para escalar la textura, en la Texture Application Mode (herramienta de texturizado) arriba a la derecha, en Scale (escala) pone 1.00 (tamaño original) y como el solido mide 32x32 y la textura 64x64, pondremos 0.50 (la mitad). Para simular la luz (esta textura no esta en el archivo lights.rad, pues solo queremos la luz que de la entidad light_spot (foco de luz)). Entonces colocaremos 4 entidades light_spot bajo los solidos, a una distancia de 8 unidades, por ejemplo. Entonces entraremos en las propiedades de las entidades de luz para evitar iluminacion o mensajes erróneos, debido al bug antes mencionado. El resultado final será:

Resultasdo final... ;)
Aumentar
Resultasdo final... ;)

Ahora solo queda grabar el mapa, compilarlo y probarlo. Como puedes comprobar, los 4 focos si contrarrestan el efecto de la luz del pasillo, pero la iluminación por textura de la primera habitación no. La solución es que en las propiedades de la entidad luz del pasillo decrementes la intensidad de la luz. Esto se hace entrando en las propiedades de la luz, y en los Attributes (propiedades o atributos), en Brightness (brillo) tendremos los valores:

255 255 128 200

El primero es el valor R (red, rojo), el segundo es G (green, verde) y el tercero es B (blue, azul), y la mezcla de estos tres nos darán distintos colores. El último valor es el del brillo de la luz, y cuanto mas alto sea mas fuerza tendrá la luz. Si ponemos 100 notaremos la diferencia y disminuirá el feo efecto de las puertas.

Si abres el archivo lights.rad verás una relación de nombres seguido de estos 4 valores. Estos nombres son de las texturas que emiten luz. Si te parece que la textura seleccionada para la lámpara de la primera habitación da poca luz, entra en este archivo y modifica su cuarto valor, el del brillo.


NOTAS:
• Si compilas el mapa y lo juegas, verás que la luz de la entidad light_spot solo ilumina hacia abajo, con lo que las texturas LITEPANEL1 de encima de las entidades estarán a oscuras. Esto queda poco realista. Lo que has de hacer es meter la textura en el archivo lights.rad para hacer que emita luz. Abre el archivo con el NOTEPAD del Windows y bajo la última línea escribe el nombre de la textura (es LITEPANEL1, sin comillas :), luego pulsa 2 veces el tabulador para dejar un poco de espacio, y luego introduce los valores de R+G+B+Brillo. Para que quede realista y no ilumine demasiado la textura y tape el efecto foco que deseamos, pon un valor de Brillo pequeño, por ejemplo 50 o 100.
• Un truco usado para reducir el número de polígonos en pantalla es transformar los objetos emisores de luz (como las lámparas) en entidades, con la función func_wall. esto hace que la lámpara continúe siendo sólida pero no se cuente como polígono al calcular las luces y al representarlo en el juego.


En este tutorial hemos aprendido a cortar paredes con la herramienta Carve, a hacer pasillos y puertas sencillas mediante la entidad func_door y además 3 modos de iluminación: por entidad light, por entidad light_spot y por textura, y además algunos truquillos muy útiles ;)

La iluminación avanzada (rotatoria y semi-dinámica) la veremos en un próximo tutorial, así como las puertas rotatorias y la creción de zonas con agua y... ¡las famosas escaleras!


Mapa de ejemplo

Si quieres bajate el mapa creado para este tutorial, haz click aquí.



Tutorial, imágenes y mapa por vEK, 11 de julio de 2000.
Herramientas personales