TUTORIAL WORLDCRAFT: LISTA DE ENTIDADES

A continuación tenéis una lista con las entidades presentes en el motor de Quake. Puede seros muy útil cuando ya tengáis unos conocimientos básicos del editor y busquéis conseguir efectos más elaborados para vuestros niveles. Tampoco os olvidéis de los mapas de ejemplo que incluye este tutorial, que pueden resultar un buen complemento a lo tratado aquí.

Bien, las entidades se muestran por orden alfabético:

air_bubbles:

Poca cosa. Su función se limita a emitir de forma continua pequeñas burbujas ascendentes durante el juego. Pueden ser interesantes en escenarios subacuáticos, pero por lo demás no tienen mucho uso.

Sonidos ambientales:

Se explica por sí mismo, ¿no? Tenemos los siguientes:

  • ambient_comp_hum: Sonido de computadoras.
  • ambient_drip: Líquido que gotea.
  • ambient_drone: Ruido de maquinaria.
  • ambient_fluoro_buzz: Chispazos eléctricos.
  • ambient_light_buzz: Similar al anterior.
  • ambient_suck_wind: Susurro del viento.
  • ambient_swamp1: Croar de ranas.
  • ambient_swamp2: Variante del sonido anterior.
  • ambient_thunder: Truenos...

event_lightning:

Se trata del rayo con el que destruimos a Cthon —el monstruo del primer episodio—. Su funcionamiento no es tan complicado como parece...

Lo primero es colocar alguna entidad de tipo event_lightning en cualquier lugar del mapa —sí, en cualquiera, da lo mismo el sitio concreto—, y darle un atributo Name; por ejemplo, "rayo". Entonces creamos los brushes que harán de electrodos; esto es, los dos puntos entre los cuales aparecerá el rayo. Estos electrodos son dos bloques convertidos en entidades de tipo func_door; en su atributo Name deberemos introducir un valor único y que no haya sido activado en todo el nivel.

También hay que dar a ambos electrodos un valor de "lightning" en target... Pero vaya, parece que este atributo no existe en las entidades de tipo func_door, ¿no? Pues nada, lo creamos. En las propiedades de los dos electrodos, clicamos sobre el botoncito Smart Edit. Luego en add, y en el campo Key escribimos target, y lightning en Value.

Una imagen para que no os perdáis:

Cuadro de propiedades

Por último, hay que poner algún activador —un botón, un lugar en el que pises, etc— que actúe sobre la entidad event_lightning que pusimos antes. Por ejemplo, podría ser un trigger_multiple cuyo Target fuese "rayo" —el Name del event_lightning que hemos mencionado más arriba—.

El rayo aparecerá entre ambos electrodos, siempre un poco por debajo de su extremo inferior —unas 12 unidades, si no me equivoco—. Consultad el mapa de ejemplo si tenéis dudas.

func_bossgate:

Esta entidad aparecerá a no ser que el jugador posea las cuatro runas. El ejemplo más notorio lo tenemos en el Quake original, con esa porción de suelo que desaparece cuando hemos completado todos los episodios, dejando vía libre para ir a por Shub-Niggurath.

func_button:

Pues eso, un botón para activar eventos. Es necesario especificar el ángulo en el que se moverá el botón cuando lo pulsamos.

  • Target: El nombre de la entidad que activaremos con el botón.
  • Targetname: El nombre del botón.
  • Killtarget: Elimina la entidad especificada —esto es, cuyo valor Name coincida con lo puesto aquí—.
  • Wait: Número de segundos que transcurrirán hasta que el botón vuelva a su posición original. Un valor de -1 indica que el botón quedará pulsado y no podremos usarlo de nuevo.

func_dm_only:

Un teletransporte que sólo aparece en las partidas deathmatch.

func_door:

Esta entidad es básica y la vamos a utilizar mucho para construir objetos móviles..., y no necesariamente puertas; se le pueden dar muchos más usos —por ejemplo, ascensores que descienden desde una posición elevada, etc—.

  • Targetname: Nombre de la puerta, si deseamos que se active mediante un botón, etc. Si lo dejamos en blanco, simplemente se abrirá cuando el jugador la toque.
  • Lip: Distancia —en unidades— que restamos al movimiento habitual de la puerta. Esto está explicado con detalle en el capítulo Entidades y Objetos móviles (I).
  • Health: El daño que habrá que hacerle a la puerta si queremos que se abra con disparos.

Tampoco hay que perder de vista los flags que pueden asignarse a la puertas, para modificar su comportamiento:

  • Start_open: La puerta se encuentra abierta, y al activarla se cierra.
  • Door_dont_link: Las entidades func_door adyacentes no se activarán al hacerlo ésta —por defecto lo hacen; véase la puerta de doble hoja que construimos en el capítulo anterior—.
  • Gold_key: Se requiere la llave dorada para abrir la puerta.
  • Silver_key: Se requiere la llave plateada para abrir la puerta.
  • Toggle: La puerta hace un movimiento cada vez que sea activada. Por ejemplo, pulsamos un botón y se abre, lo volvemos a pulsar y la cerramos, etc.

func_door_secret:

Esta entidad crea una puerta secreta, que sólo puede abrirse de dos modos: mediante un activador, o causándole daño con disparos. Tiene algunas opciones —flags— que la hacen distinta de la entidad func_door normal:

  • Open_once: La puerta sólo se activará una vez, quedándose abierta para el resto de la partida.
  • 1st_left: Al abrirse, la puerta se mueve primero hacia la izquierda.
  • 1st_down: Al abrirse, la puerta se mueve primero hacia abajo.
  • No_shoot: La puerta sólo se abrirá mediante un activador, y no mediante disparos.
  • Always_shoot: La puerta se abrirá al dispararle, aunque también existan eventos que lo hagan —botones, etc—.

func_episode_gate:

La entidad aparecerá si el jugador posee la runa apropiada. Esto se usa, por ejemplo, en el Quake original para bloquear la entrada a los episodios que ya hemos completado. Hay que señalar que el efecto empieza a funcionar no cuando consigamos la runa en cuestión, sino al empezar a jugar un mapa determinado.

Los flags se explican por sí mismos:

  • E1: Aparece tras conseguir la runa del primer episodio.
  • E2: Aparece tras conseguir la runa del segundo episodio.
  • E3: Aparece tras conseguir la runa del tercer episodio.
  • E4: Aparece tras conseguir la runa del cuarto episodio.

func_illusionary:

Se trata de un bloque que parece sólido, pero no lo es. Útil para conseguir efectos extraños como paredes falsas, trampas camufladas, etc.

func_plat:

Lo usaremos para crear ascensores que, partiendo de la posición más baja, nos conducen a algún lugar elevado; ya construimos uno en el capítulo Entidades y Objetos móviles (II). Ojo, si lo que deseamos es lo contrario —una plataforma que descienda— deberemos utilizar una entidad de tipo func_door con los valores apropiados (véanse los mapas de ejemplo).

Cuando estemos trabajando en el editor construiremos el func_plat en su posición elevada. Su atributo height indicará, en unidades, la distancia recorrida durante su movimiento. El punto de partida del elevador se calcula restando la altura especificada en height a su posición en el editor.

func_train:

Como ya vimos en el capítulo Entidades y Objetos móviles (II), se trata de la entidad necesaria para hacer plataformas que se muevan siguiendo una ruta determinada. Dicha ruta se especifica mediante entidades de tipo path_corner, que son precisamente los puntos entre los que se desplazará el func_train.

Sus atributos más importantes son los siguientes:

  • Targetname: Si le asignamos un valor, la plataforma se quedará detenida en el primer path_corner de la ruta, y no comenzará a moverse hasta que activemos el evento correspondiente —que puede ser un botón o cualquier otro activador—. Si lo dejamos en blanco, la plataforma se moverá sin interrupción durante toda la partida.
  • Target: Indica el primer path_corner de la ruta de nuestra plataforma móvil. Obligatorio especificarlo.

func_wall:

Un bloque sólido como cualquier otro. La gracia está en que podemos podemos hacer que aparezca o no en distintos niveles de dificultad, o en partidas deathmatch... Lo que en la práctica nos permitiría modificar nuestro nivel según el estilo de juego.

info_intermission:

Inserta una cámara que será usada para la pantalla de puntuaciones que encontramos al finalizar cada mapa. Veamos su uso con detalle, porque no es nada obvio.

El lugar en el que coloquemos la entidad info_intermission será la posición de la cámara. No obstante, también hay que especificar la dirección en la que estará mirando..., y esto se hace añadiendo un atributo llamado mangle, que tendrá tres valores numéricos separados por espacios; nos referiremos a ellos como "x y z":

El atributo Mangle
  • x es el primero de los tres números, e indica el ángulo vertical de la cámara. Valores positivos hacen que mire hacia abajo, y negativos hacia arriba. Un cero hará que la cámara apunte hacia adelante, sin desviaciones.
  • y nos servirá para controlar su dirección; los valores aquí funcionan exactamente igual que el atributo Angle de cualquier otra entidad; a saber, 90 se refiere al norte, 180 al oeste, etc.
  • z, por último, nos servirá para inclinar la cámara a un lado o a otro, para conseguir vistas diagonales. Un valor positivo la inclina hacia la derecha, otro negativo hacia la izquierda. Si le asignásemos, por ejemplo, 90, veríamos el escenario como si la cámara estuviese tumbada de lado.

Si hay varias entidades de tipo info_intermission en el mismo nivel, el juego escogerá una aleatoriamente para la pantalla de estadísticas. Si no hay ninguna, se tomará como cámara el punto de inicio del jugador.

Si tenéis dudas, echad una ojeada al mapa de ejemplo, "camara.map".

info_null, info_notnull:

Poco importantes, se emplean en luces dirigidas —cosa que no he explicado en este tutorial, entre otros motivos porque no conozco su uso—.

Entidades info_player_*:

Esto incluye varios tipos de entidades utilizados para marcar los puntos de inicio de los jugadores. Así, tenemos los siguientes:

  • info_player_coop: Punto de partida de cada jugador para partidas cooperativas; pueden —y deben, en realidad— haber más de uno.
  • info_player_deathmatch: Puntos de partida de los jugadores de partidas deathmatch; deben ser varios, repartidos por el mapa como creamos conveniente.
  • info_player_start: Posición del jugador en partidas en solitario; no hay que colocar más de uno.
  • info_player_start2: Se usa como punto de retorno, una vez que el jugador ha completado un episodio.

info_teleport_destination:

Esta entidad marca el lugar en el que aparecemos tras usar un teletransporte. Podéis echarle una ojeada al que preparamos en el capítulo de Entidades y Objetos móviles (II).

Objetos del juego (entidades de tipo item_*):

Aquí podemos encontrar un amplio repertorio de entidades, que representan los distintos objetos y bonus que encontraremos en nuestras partidas de Quake; armaduras (item_armor, etc), llaves (item_key1 e item_key2; plata y oro, respectivamente)...

Algunos pueden parecer dudosos. Así, item_sigil hace referencia a una runa —de qué runa en concreto se trata, lo especificaremos en sus flags—. Item_weapon indica un "arma genérica"; se trata de una entidad interna del motor de Quake que no debemos usar en nuestros mapas.

Y por último, las llaves. Ambas —plateada y dorada— pueden tener varios estilos; las hay medievales, tarjetas electrónicas futuristas, y rúnicas. Escogeremos uno de los tres seleccionando, en el menú Map del Worldcraft, la opción de Map Properties...

Luces (entidades de tipo light_*):

Pues eso, las fuentes de luz imprescindibles para que nuestros mapas no sean negros como el fondo de un pozo. Hay un tipo de luz genérica —light—, y otros que incluyen ciertas características concretas:

  • light: Luz genérica, foco invisible.
  • light_flame_large_yellow: Fuego amarillo grande.
  • light_flame_small_yellow: Fuego amarillo pequeño.
  • light_flame_small_white: Fuego pequeño de color blanquecino.
  • light_fluoro: Foco invisible, emite un murmullo eléctrico.
  • light_fluorospark: Foco invisible, produce un chisporroteo que simula el de una luz estropeada.
  • light_globe: La luz parte de un brillante globo amarillento.
  • light_torch_small_walltorch: Antorcha pequeña.

Cada uno de estos tipos de luz puede tener distintos valores en sus atributos. De ellos, targetname es opcional, y nos servirá para que hacer que algún evento actúe sobre la luz en cuestión; útil, por ejemplo, para añadir luces que se apaguen al pulsar un botón, etc.

Por otra parte encontramos el atributo style o appearance, que nos permite modificar el comportamiento de la fuente de luz. Tiene un valor numérico, a escoger entre los siguientes:

  • 0: Luz normal.
  • 1: Parpadeo rápido aleatorio (primera variante).
  • 2: Luz oscilante, lenta, intensa.
  • 3: Oscilación - parpadeo (A)
  • 4: Parpadeo regular, rápido.
  • 5: Luz oscilante suave.
  • 6: Parpadeo rápido aleatorio (segunda variante).
  • 7: Oscilación - parpadeo (B)
  • 8: Oscilación - parpadeo (C)
  • 9: Parpadeo regular, lento.
  • 10: Fluorescente: parpadeo aleatorio, chisporroteo de luz rota.
  • 11: Luz oscilante lenta, que nunca llega a la oscuridad total.

Por último, mencionaré la posibilidad de colocar luces apagadas al comienzo de la partida, y que no se enciendan hasta que no se active cierto evento. Para hacer que una luz esté apagada por defecto, hay que activar el flag de Initially dark.

Consultad el mapa de ejemplo sw_luz.map si queréis comprobar cómo funcionan los eventos con luces...

Monstruos (entidades de tipo monster_*):

¿Obvio, no? Con estas entidades colocaremos diversos enemigos que necesita todo mapa de Quake. Como detalle especial, el zombi —monster_zombie— se convertirá en un engendro crucificado si le activamos el flag de crucified.

Podemos hacer monstruos que patrullen un área determinada, combinándolos con entidades de tipo path_corner; el método es similar al que ya vimos en el capítulo de Entidades y Objetos móviles (II), cuando preparamos la plataforma móvil. En este caso, el atributo target del enemigo que nos interese deberá tener el mismo valor que el Name del primer path_corner de la ruta que seguirá.

En el mapa de ejemplo monstros.map tenéis un par de interesantes eventos activados mediante monstruos —un pilar que baja al eliminar a los cinco soldados, etc—. Si queréis saber cómo funcionan, examinadlos, prestando atención a los atributos de las entidades.

misc_explobox, misc_explobox2:

barril

Contenedores explosivos —como los que aparecen en el E1M1 del juego original, sin ir más lejos—.

misc_fireball:

Una pequeña bola de fuego, que emite luz y puede causar daño al jugador.

misc_noisemaker:

Emite diversos ruidos... Nada demasiado útil, realmente.

misc_teleporttrain:

Se trata de la bola espinosa que da vueltas en torno a Shub-Niggurath —quienes no hayan llegado al final de Quake no sabrán de qué estoy hablando—. Probablemente funcionará de forma semejante a los bloques de tipo func_train o a los monstruos que patrullan; esto es, siguiendo una ruta trazada por entidades de tipo path_corner.

path_corner:

La entidad necesaria para definir las rutas que seguirán los func_train —plataformas móviles— o los enemigos en sus patrullas. Sus atributos son los siguientes:

  • targetname: El nombre del path_corner en cuestión.
  • target: El siguiente path_corner del recorrido.
  • wait: El tiempo en segundos que el monstruo u objeto móvil esperará antes de dirigirse al siguiente path_corner. Si su valor es -1 se detendrá.

trap_shooter, trap_spikeshooter:

El trap_shooter disparará clavos a un ritmo constante, en la dirección indicada por su atributo angle; no necesita ser activado. La entidad trap_spikeshooter, en cambio, disparará solamente cuando reciba algún evento —un botón, un jugador cruzando un bloque activador, etc—.

Por lo demás, el tipo de disparo que harán ambas entidades puede cambiarse en sus flags. En algunos escenarios nos interesará más que, en lugar de los consabidos clavos, disparen rayos láser.

En el mapa trampas.map veréis este efecto en acción...

trigger_changelevel:

Cuando el jugador toque esta entidad el mapa terminará. El atributo map indica el nivel que se cargará a continuación —hay que introducir el nombre del archivo .BSP—.

trigger_counter:

Se trata de un contador que, tras ser activado x veces, activa a su vez otro evento. Se utiliza en juegos de palancas complejos, que requieren varios pasos antes de completarse; por ejemplo, una puerta que no se abrirá hasta que se pulsen tres botones.

Sus atributos más importantes son los siguientes:

  • targetname: El nombre del trigger_counter que recibirá los eventos de botones y activadores.
  • target: Cuando el trigger_counter haya sido activado las veces necesarias, se activará el evento especificado aquí.
  • count: El número de veces que hay que activar el trigger_counter para que actúe.

Por otra parte, si activamos el flag llamado nomessage, los típicos textos del estilo de only one more to go... no aparecerán —lo habitual es que sí que lo hagan—.

trigger_hurt:

Cuando el jugador entre en contacto con este bloque-entidad sufrirá x puntos de daño. Podemos especificar cuánto exactamente en su atributo dmg o damage.

trigger_monsterjump:

El monstruo que lo pise dará un salto en la dirección especificada por el atributo angle. Las propiedades speed y height controlan el impulso que tendrá dicho salto hacia adelante y hacia arriba, respectivamente.

Activadores (en general; trigger_once, etc):

Ahora veremos las tres entidades genéricas —creadas a partir de bloques— que tenemos para activar eventos, cuyo uso deberíamos conocer bien. Son las siguientes:

  • trigger_once: Un activador que sólo funciona una vez.
  • trigger_multiple: Activa un evento, que podremos repetir cuantas veces queramos durante la partida.
  • trigger_onlyregistered: Activa un evento, pero sólo si estamos jugando la versión completa de Quake. No se me ocurre ningún motivo para usarlo, la verdad.

Y los atributos que podemos configurar:

  • targetname: El nombre del presente trigger.
  • target: El evento que será activado.
  • killtarget: Cuando el trigger se active, la entidad que especifiquemos aquí será eliminada.
  • delay: Los segundos que tarda la acción indicada en target en tener lugar.
  • wait: Sólo para el trigger_multiple; el intervalo de tiempo, en segundos, que debe transcurrir antes de que el activador vuelva a estar operativo.
  • health: En caso de querer activar el trigger con disparos, el daño que debe sufrir antes de actuar.
  • message: Texto que aparecerá en pantalla cuando el trigger haya sido activado.

trigger_push:

Impulsa al jugador en la dirección especificada en el atributo angle. Esto se usa, por ejemplo, en el nivel E3M5 de Quake para conseguir el efecto de los tubos de aire —jugad el mapa si no sabéis de qué estoy hablando—. El atributo speed indica la fuerza que tendrá dicho impulso. El flag push_once, por otra parte, hará que esta entidad actúe sólo una vez.

trigger_relay, trigger_secret:

El primero —trigger_relay— tiene las mismas propiedades que un activador genérico como los que hemos visto un par de párrafos más arriba, pero sólo puede ser activado por otra entidad, y no directamente por el jugador. El segundo —trigger_secret— actúa también como un trigger normal, pero al activarse puntúa como un secreto descubierto. Exacto, se utiliza para marcar los rincones secretos de cada nivel.

trigger_setskill:

Cambia el nivel de dificultad de la partida. Utilizado, por ejemplo, en el escenario de presentación de Quake.

trigger_teleport:

Teletransporte —ver el capítulo de Entidades y Objetos móviles (II), en el que se explica el efecto con detalle—. Se utiliza junto con una entidad de tipo info_teleport_destination, que indica el punto de destino.

En los flags tenemos un par de opciones interesantes. Por ejemplo, si activamos player_only el teletransporte sólo podrán usarlo los jugadores, y no los monstruos. Por otra parte, silent hace que el efecto sea totalmente silencioso..., indicado para sorpresas desagradables.

Armas (entidades de tipo weapon_*):

No hacen falta explicaciones sobre esto, ¿verdad? Pues eso, las entidades que representan las diferentes armas de Quake; la escopeta de dos cañones, el lanzagranadas, 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)...