TUTORIAL WORLDCRAFT:
ENTIDADES Y OBJETOS MÓVILES (II)

"Bueno", se dirá más de uno, "lo de antes está muy bien, pero, ¿cómo construir puertas que se activen con botones? ¿O plataformas que se muevan espontáneamente? ¡Una solución quiero!". Pues abróchense los cinturones, que vamos a ello.

Llegados a este punto es importante distinguir entre activadores y los objetos móviles propiamente dichos —puertas, etc—. Un activador sería un bloque convertido en entidad —ver capítulo anterior—, del tipo apropiado; por ejemplo, trigger_once. Éste tiene un atributo llamado Target, al que debemos asignarle un nombre a nuestro gusto —aquí podría ser "palanca1", para no complicarnos la vida—. Pues bien, dicho activador actuará sobre todas las entidades cuyo valor Name coincida con el Target que le hemos asignado.

Veámoslo en un ejemplo...

UNA PUERTA Y UN BOTÓN:

Lo estabais deseando, ¿verdad? Pues eso; vamos a añadir a nuestro mapa de ejemplo una segunda puerta, que se abrirá cada vez que pulsemos un botón situado junto a ella.

Será una puerta de doble hoja; así que crearemos dos bloques de 128 unidades de altura, 64 de anchura y 32 de grosor. Estarán colocados antes de la primera puerta, entre la primera luz y la segunda; y para no calentarnos la cabeza, les daremos la textura de comp1_1 a todas sus caras:

La puerta de doble hoja

A continuación convertimos estos dos bloques en entidades —ya sabéis, clic con el botón derecho del ratón y opción de Tie to Entity—; concretamente, serán entidades de tipo func_door.

Y ahora llega lo interesante; editar sus propiedades. Para empezar, ambos bloques deberían tener el mismo valor en su atributo Name. Por ejemplo, podemos ponerle algo explícito y revelador como "puertaboton", pero esto es cosa vuestra; sólo debéis aseguraros de que ponéis el mismo Name a las dos mitades de la puerta.

Y ahora, el ángulo. Cada hoja de la puerta se apartará a un lado del pasillo al abrirse. Por ello, en la propiedad Angle tendrán valores diferentes; 270 para la parte de abajo, y 90 para la de arriba:

Propiedades de las dos hojas de la puerta
Vista 2D Vista 2D
Cuadro de propiedades Cuadro de propiedades

Queda claro el asunto, ¿no? Pues ahora dediquémonos al botón.

Éste será un pequeño bloque cuadrado, colocado en la pared del pasillo, justo enfrente de la luz; unas dimensiones de 32 unidades de alto, 32 de ancho y 8 de grosor le darán un aspecto creíble... Y ya puestos, situaremos este nuevo bloque 16 unidades por encima del suelo del corredor.

Vale, ahora necesitamos texturas para él... El botón será de color marrón, así que podemos elegir para todas sus caras una textura como adoor03_6, o similar. ¿Ya está? No, no seamos horteras; la cara principal del botón debería tener un aspecto más adecuado. La textura +0button cumplirá el papel a la perfección; sólo hay que darle la escala correcta (0'65 x 0'65) y moverla un poco para que encaje como corresponde.

Como ya hicimos con la puerta, seleccionamos el bloque que hará de botón, clicamos sobre él en cualquier vista en 2D, con el botón derecho del ratón, y en el menú emergente elegimos la opción Tie to Entity. Esta vez el tipo de entidad que nos interesa es func_button.

Y ahora, editaremos sus propiedades. La más importante es Targetted object, que indica precisamente qué entidades se activarán cuando pulsemos el botón. Correcto, lo habéis adivinado; el valor que debemos escribir aquí es el mismo que el que pusimos en el atributo Name de los bloques que forman la puerta; en este caso, "puertaboton".

Speed indica la velocidad a la que se moverá el botón cuando lo pulsemos —el típico efecto de empujarlo—. Tratándose de objetos tan pequeños, valores como 5 o 10 darán una impresión realista. Ojo, no os olvidéis del Angle, que debería ser de 270, a no ser que lo que busquéis sea que el botón se deslice a lo largo de la pared al activarlo.

El botón preparado para actuar

El valor de Health debería ser 0 (cero). Un número mayor indicaría que el botón se activará al recibir disparos, en lugar de tocarlo. ¿Y cuántos disparos? Pues depende del valor que le asignemos; para hacernos una idea, un soldado de los más débiles tiene unos 30 puntos de daño... Con un valor de 10, por lo tanto, el botón se activaría con un único tiro de escopeta o un hachazo.

Delay before reset y Delay before trigger indican, respectivamente, los segundos que tarda el botón en volver a su posición original —para ser pulsado de nuevo—, y los segundos que transcurrirán antes de que la acción deseada —en este caso, abrir la puerta— suceda.

Ahora compiláis el mapa y lo probáis... Y os encontraréis el pasillo cerrado con dos puertas; la última que acabamos de hacer, que se abre con el botón, y la primera, más sencilla. Pero si habéis trasteado un poco con el mapa os habréis percatado de que —¡mierda!— una vez traspasada la puerta del botón, y cerrada ésta a nuestras espaldas, no hay modo de volver atrás...

Bien, esto es un efecto no deseado que debe ser corregido. ¿Cómo? Psé, bastaría con añadir un segundo botón, dedicado a lo mismo que el primero: abrir esta puerta problemática, pero desde el otro lado. Sin embargo, ya que aquí estamos aprendiendo el arte de los mapas de Quake, lo haremos de otro modo; usando un activador que haga que, cuando el jugador lo pise, se abra la dichosa puerta.

LA MISMA PUERTA Y UN ACTIVADOR:

Pues nada, vamos a ello. Lo primero que hay que hacer es crear el bloque que hará de activador... Antes que nada, aclararé que dicho bloque no será sólido ni visible durante la partida, con el mapa ya compilado; solamente lo veremos cuando estemos trabajando con el editor. Cuando el jugador entre en el área comprendida en su interior, la puerta se abrirá.

Así que añadimos el nuevo bloque entre las dos puertas, de manera que abarque todo el ancho del pasillo. Por lo demás, podríamos darle 64 unidades de altura, y otras tantas de ancho, aunque en este caso tampoco es algo que vaya a importar mucho.

A continuación, le asignamos al bloque recién construido la textura trigger en todas sus caras. Este paso resulta imprescindible; trigger es una textura especial, que hará que dicho brush sea invisible durante el juego y pueda funcionar como activador:

Construido el bloque activador

Lo siguiente, como podéis imaginar, es seleccionar el bloque y convertirlo en una entidad (Tie to Entity); el tipo de entidad que necesitamos aquí será un trigger_multiple.

Bien, en su atributo Target habrá que darle el valor de "puertaboton" —o sea, el mismo que empleamos antes para el botón, y el valor Name de los bloques que forman la puerta—.

Lo demás es menos importante; Delay before trigger debería ser 0 (cero), y Style no lo tocaremos y lo dejaremos en su valor por defecto. Así mismo, colocaremos otro cero en Delay before reset, para no tener que esperar entre un uso del activador y el siguiente.

Respecto al Sound Style... Normalmente al pisar un activador suena un sonido especial, o aparece un mensaje de texto. Claro que en casos como éste desearemos que el activador simplemente funcione, sin llamar la atención. Así que para que no se escuche nada fuera de lo común, para el atributo Sound Style elegiremos la opción Set message to text string; y más abajo, nos aseguraremos de que Message se queda en blanco.

Y ahora compilamos el nivel... Y ya tenemos la puerta funcionando perfectamente.

ELEVADORES:

Los ascensores son bastante fáciles de preparar. Primero construiremos el bloque que hará de elevador, en su posición de "arriba". Después lo convertiremos en una entidad de tipo func_plat y le daremos los valores adecuados...

El ejemplo más simple posible sería crear un ascensor cuadrado en una de las esquinas de la segunda habitación. Para ello añadimos un bloque de 64 unidades de lado, y 128 unidades de altura. Algo así (la textura que le he aplicado es azwall3_1):

El elevador ya construido

Ésa será la posición del ascensor cuando se encuentre en su punto más elevado; pero mientras no lo utilicemos apenas sobresaldrá un poco —pongamos 16 unidades— del suelo.

Para conseguir esto convertimos el bloque en una entidad —ya sabéis, la opción Tie to Entity— de tipo func_plat. Acto seguido le damos a su atributo Travel altitude un valor de 112; ésta será la distancia que recorrerá el elevador en su movimiento.

Así pues tenemos un bloque móvil que se elevará 128 unidades sobre el suelo de la habitación. Dado que el recorrido que le hemos asignado es de 112 unidades —el atributo Travel altitude—, resulta que 128-112=16; esas 16 unidades que faltan son las que sobresaldrá el ascensor del suelo cuando se encuentre en su posición más baja.

En fin, lo mejor es que lo hagáis tal y como he explicado, y luego juguéis el mapa para ver el efecto funcionando.

UNA PLATAFORMA MÓVIL:

En algunos mapas de Quake habréis visto plataformas que se mueven a un ritmo constante, siguiendo una ruta determinada. Es algo que puede dar bastante juego en nuestros niveles, así que explicaré de qué manera lograr este efecto.

Como casi siempre, lo más fácil de comprender es un ejemplo; por ello, vamos a crear una plataforma móvil en la primera habitación de nuestro mapa de aprendizaje. Dicha plataforma se moverá trazando un cuadrado alrededor de la columna con las antorchas.

En la imagen podéis haceros una idea de cómo funciona el asunto:

Esquema de la plataforma móvil

Bueno, entremos en materia... Por un lado encontramos un bloque convertido en entidad (en este caso, func_train), y por otro cuatro entidades violetas (de tipo path_corner), que marcan la ruta que seguirá dicho bloque. Vamos a examinarlo con detalle, fijándonos bien en los atributos de cada entidad.

Para empezar, marcada con una A, está la plataforma móvil propiamente dicha; en este ejemplo, sus dimensiones son de 64 x 64 unidades, y 16 unidades de grosor. Para decorarla he empleado la textura met5_1. Como ya he dicho, se trata de un bloque convertido en entidad, del tipo func_train.

Dónde coloquemos este bloque al construir el nivel con el editor es poco importante, porque en cuánto comencemos la partida aparecerá en la primera posición de su recorrido. ¿Y cuál es ésta? La entidad path_corner correspondiente, cuyo Name sea igual al atributo First Stop Target indicado en las propiedades de la plataforma móvil.

En el caso que nos ocupa, el atributo First Stop Target del bloque tiene el valor de "esquina1"; el Name de la entidad path_corner señalada en la imagen de antes con la B.

Lo demás funciona tal que así:

  • B: Una entidad path_corner, con los valores "esquina1" para el atributo Name y "esquina2" para Next Stop Target.
  • C: Entidad path_corner; "esquina2" en Name, "esquina3" en el atributo Next Stop Target.
  • D: Entidad path_corner; valores de "esquina3" en Name y "esquina4" en Next Stop Target.
  • E: La última esquina de la ruta de la plataforma móvil. Otra entidad path_corner, con el valor "esquina4" para el atributo Name y "esquina1" para Next Stop Target.

TELETRANSPORTE:

Otro efecto muy socorrido en los niveles de Quake son los teletransportes. Vamos a ver cómo se hacen... En realidad, considerando todo lo que hemos tratado en el tutorial hasta ahora, no tienen mayor misterio.

Carguemos el mapa de ejemplo y fijémonos en la segunda habitación que construimos. En ella, justo a la izquierda del elevador, vamos a colocar un portal; al entrar en él, nos teletransportaremos al pasillo, mirando a la primera sala, la de la columna...

Empezaremos añadiendo tres nuevos bloques, pegados a la pared de la estancia. Primero, dos pilares de 32 x 32 unidades, y otras 128 unidades de alto; estarán separados entre ellos 64 unidades. Sobre ellos hace falta un travesaño horizontal para completar la forma del portal, de 32 unidades de grosor...

Bueno, el resultado lo podéis ver en la imagen siguiente, que muestra el aspecto que tendrá la puerta dimensional cuando esté terminada:

El portal mágico

La textura empleada para los tres bloques que delimitan el portal se llama metal6_3; en sus caras interiores me he decantado por metal6_1, por darle un acabado más estético.

Y ahora, el interior... Os habréis fijado en que, en los mapas originales de Quake, las puertas para teletransportarse tienen una apariencia peculiar, con una textura gris ondulante. La nuestra, claro, no podría ser menos; aunque en realidad podemos usar cualquier textura a nuestro gusto y el teletransporte seguirá funcionando.

Cread un nuevo bloque dentro de los tres que delimitan el portal, de 16 unidades de grosor —en la imagen de arriba aparece de color violeta—. A este brush le asignaremos la textura *teleport en todas sus caras.

Detalle del bloque activador del teletransporte

No, no hemos acabado... Nos falta todavía un bloque más; el que hará funcionar el teletransporte —los otros cuatro que hemos construido hasta ahora son sólo decorativos—. Y es que debemos tener en cuenta que los brushes que sirven de activadores son usualmente invisibles durante el juego. Si utilizáramos para ello el bloque gris que acabamos de colocar, el portal aparecería vacío cuando jugásemos el nivel, y no es eso lo que se pretende.

Así que añadimos otro bloque más, de las mismas dimensiones que el anterior (128 unidades de alto, 64 de ancho y 16 de grosor), y escogemos para él la textura trigger, para no confundirnos. Después lo convertiremos en una entidad de tipo trigger_teleport. A este trigger_teleport le asignaremos un valor a voluntad en su atributo Target; por ejemplo, "teleporte1". Y por último, lo moveremos dentro del portal, de forma que se superponga con su bloque hermano de la textura gris... En la imagen anterior podemos verlo, antes de colocarlo en su emplazamiento definitivo.

Bombilla

Sólo nos quedaría especificar el destino del teletransporte; el lugar en el que apareceremos cuando entremos en el portal. Esto se hace colocando una entidad de tipo info_teleport_destination en el sitio deseado. El valor del atributo Name de esta entidad será, lógicamente, el mismo que el que pusimos en el Target del portal; en este ejemplo, "teleporte1". Por último, el ángulo que le demos al info_teleport_destination indicará la dirección en la que aparecerá mirando nuestro personaje.

Y ya está. Ahora compilad el mapa y divertíos...

Y MAÑANA MÁS...

Pues sí. Hay muchos más efectos que pueden conseguirse con entidades y objetos móviles. De hecho, las posibilidades son tantas que no tendría mucho sentido explicarlas una por una. Podemos conseguir luces que se apaguen de repente al pisar cierta zona —con un activador de tipo trigger_once y entidades Light, por ejemplo—, trampas que aplasten al jugador, monstruos que aparezcan de repente... Sólo hacen falta un poco de imaginación y de experiencia.

Quién tenga curiosidad puede editar con el Worldcraft los mapas de ejemplo que vienen junto con este manual; con ellos se puede aprender a preparar algunos efectos comunes como rayos láser, enemigos que patrullan una zona determinada hasta que nos ven, etc.


Cumple con el estándar HTMLCumple con el estándar CSSApta para cualquier navegador

Podéis copiar libremente cualquier contenido de esta página. Si se trata del texto o las imágenes, mencionad la fuente (www.arcades3d.net)...