TUTORIAL WORLDCRAFT: INTRODUCCIÓN
Este tutorial pretende explicar los aspectos básicos del uso del editor de mapas Worldcraft —
conocido como Hammer en sus versiones más avanzadas—. Aquí nos centraremos en los niveles
para el primer Quake; aunque el editor, según la versión que estemos empleando, puede
funcionar con otros juegos como Quake 2, Hexen 2..., y Half Life o Counter Strike en el caso de
Hammer.
Cuando hablo de "los aspectos básicos" me refiero precisamente a eso; a cómo funciona el
programa, cómo trabajar con brushes y entidades, cómo construir habitaciones simples... Esto es
más que suficiente para crear nuestros primeros niveles. Y a partir de ahí, con imaginación y un
poco de práctica se puede hacer casi cualquier cosa.
Si habéis creado mapas para Doom o Duke Nukem 3D, pero nunca habéis trabajado con juegos
en tres dimensiones reales, olvidad todo lo que sabéis. Worldcraft tiene realmente poco que ver
con ellos, y conceptos como "sectores" o "líneas" aquí no significan nada. Claro que quienes sí
cuenten con esta experiencia —por ejemplo, con UnrealEd— ya tienen parte del camino hecho...
¿Y qué necesitamos para ponernos a trabajar?
Pues lo primero, evidentemente, una copia de Worldcraft. En este tutorial yo he empleado la
versión 1.6 completa —que podéis conseguir en redes P2P o en páginas web como
http://www.arcades3d.com—. Hay también versiones shareware circulando por ahí, pero algunas
tienen sus funciones bastante recortadas, por lo que quizás no sean buenas opciones. Por lo
demás, el editor Hammer, que no deja de ser una evolución de Worldcraft, también debería
servir.
Lo segundo, una copia de Quake instalada en nuestro ordenador —elemental, querido Watson—.
Sin esto no haremos nada... Creo que Worldcraft puede trabajar con la versión shareware de
Quake —no estoy seguro de ello, la verdad—, pero vale la pena disponer del juego completo, que
además es muy fácil de conseguir en la red.
Y poco más, en realidad. Worldcraft funciona con los controladores DirectX de Windows, pero
esto no será un problema a no ser que estés usando un ordenador prehistórico...
NOTAS SOBRE ESTE TEXTO
Para escribir este texto me he basado en "The Official Worldraft Editing Page", un completo
manual en inglés. De hecho, cualquiera que sea un poco observador se dará cuenta enseguida
de que los contenidos están ordenados de la misma forma. Los mapas de ejemplo que
acompañan el tutorial son todos míos, a excepción de "Quake Tricks" (qtricks.map), un viejo
nivel de demostración creado en 1996 por Remco Stoffer que considero muy instructivo.
Por último, la "nota legal" de rigor...
Podéis modificar, distribuir o colgar en la web este manual a vuestro antojo, y sin que sea
necesario ningún permiso por mi parte. Si veis algún detalle que debe ser corregido, o deseáis
añadir alguna sección, o retocar los mapas de ejemplo..., podéis hacerlo tranquilamente. En tales
casos me gustaría que me enviaseis las copias modificadas por email, más que nada por tener
una versión actualizada del texto; pero tampoco es algo que me quite el sueño.
Y ya está bien de cháchara; ahora, a trabajar con el Worldcraft...
TUTORIAL WORLDCRAFT:INSTALACIÓN Y CONFIGURACIÓN
Bueno, esto no tiene mayor dificultad, pero para los más novatos puede no resultar demasiado
intuitivo; por si acaso lo comentaré aunque sea un poco por encima.
Así que hemos descargado una copia de Worldcraft, bien de Internet, bien de alguna red P2P —
Emule, Kazaa, etc—. Lo que tendremos será probablemente un sencillo instalador de Windows;
nada misterioso, de momento. El programa podemos instalarlo en cualquier carpeta a nuestro
gusto, dado que no resulta necesario que se encuentre en la misma que Quake.
Una vez hayamos instalado el Worldcraft hay que configurarlo, así que lo ejecutamos por primera
vez. Nos encontraremos con una pequeña ventana, que incluye seis pestañas: General, 2D
Views, 3D Views, Textures, Game Configurations y Build Programs. Quizás esto pueda cambiar
un poco entre las diferentes versiones, pero básicamente es así. En mi caso —usando Worldcraft
1.6—, la ventana de configuración se presenta con este aspecto:
Y bien, ¿qué hacemos aquí?
Bueno, comencemos modificando las opciones de la pestaña General. En ella realmente hay
poca cosa que tocar. En principio podemos cambiar el valor de Undo levels; esta opción regula
cuantas veces podremos deshacer cambios y volver atrás cuando estemos trabajando en un
mapa. No os recomiendo poner valores altos si no disponéis de mucha RAM, pues pueden surgir
errores de falta de memoria durante el uso del Worldcraft. Así, 10 Undo Levels son más que
suficientes para permitirnos una edición cómoda y sin fallos; yo en concreto uso solamente 2.
Lo siguiente que nos interesa es la pestaña Textures. En ella especificaremos qué archivos de
texturas usaremos en nuestros mapas —suelen ser ficheros de tipo .WAD o .WAL, dependiendo
del juego con el que queramos trabajar—.
Llegados a este punto, conviene mencionar un detalle. Las texturas de Quake están
almacenadas dentro de los archivos de datos del juego —PAK0.PAK y PAK1.PAK, dentro de la
carpeta QUAKE\ID1—, y como es la primera vez que arrancamos Worldcraft, tendremos que
extraerlas y crear el fichero .WAD correspondiente. Esto puede hacerse de diversas maneras,
pero el modo más sencillo sin duda es pulsar en el botón Extract Textures —ver la imagen
anterior—.
Luego sólo nos queda añadir el archivo .WAD que hayamos creado, pulsando sobre Add
WAD/PAK. Podemos emplear varios de estos archivos; así, por ejemplo, en la captura de antes
vemos uno llamado textures.wad —las texturas originales de Quake, extraídas como he
explicado arriba—, y otro con el nombre de nuevas.wad —que son texturas creadas por mí para
usar en mis mapas—.
Por último, y antes de que lo intentéis: los ficheros .WAD de Doom, Heretic y similares NO
funcionan con Worldcraft.
Ahora vamos a la pestaña de Game Configurations.
En el primer campo —un menú desplegable llamado Configuration— elegiremos el juego que
vamos a usar; en este caso, Quake. Worldcraft puede trabajar con varios, dependiendo de la
versión que utilicemos, y cada uno tiene su configuración independiente; con este menú
podremos seleccionarlas.
A continuación, en Game data files pulsamos el botón Add y escogemos el fichero de datos que
empleará Worldcraft para nuestros mapas. Hay varios, uno para cada juego soportado por el
editor, y todos ellos estarán en la carpeta dónde lo hayamos instalado; así que esto realmente no
tiene mayor problema. Para Quake, el archivo correspondiente será quake.fgd.
Por último, deberemos especificar el Game Directory —la carpeta en la que está instalado Quake
—, el RMF Directory —la carpeta en la que guardaremos los mapas de Worldcraft sin compilar—,
y el Palette File —el archivo .PAL que contiene la paleta usada en las texturas del juego—. Éstos
últimos vienen incluidos con Worldcraft, y elegiremos el apropiado para el juego con el que
vayamos a trabajar —quake.pal, quake2.pal, etc—.
Por si os habéis perdido, esto es así:
Bueno, ya casi estamos terminando.
En la pestaña Build Programs deberemos especificar la ruta de los archivos ejecutables que
Worldcraft necesita tener localizados. Como antes, en el menú desplegable Configuration
seleccionamos el juego con el que deseamos a trabajar. Y a partir de ahí, de arriba a abajo,
tenemos:
Game: El archivo ejecutable del juego en cuestión; para nosotros, QUAKE.EXE.
BSP Program, LIGHT Program, VIS Program: Se trata de las tres utilidades necesarias
para compilar nuestros mapas —o sea, convertir nuestro trabajo en el editor en un nivel
ejecutable en el juego—. Vienen incluidas con Worldcraft, dentro de la carpeta Q1tools.
Place compiled maps in...: La carpeta dónde guardaremos los mapas ya compilados. Lo
usual es usar Quake\ID1\maps, que es la localización que emplea el juego por defecto.
Las pestañas 2D Views y 3D Views contienen opciones que regulan diversos aspectos del
funcionamiento del editor. Su importancia es secundaria, y los valores que ya vienen
establecidos nos servirán perfectamente en la mayoría de las situaciones.
En todo caso, podríamos habilitar la aceleración gráfica en las 3D Views, si no viene ya activada
por defecto. Esto mejorará el rendimiento del programa, aunque puede dar problemas en las
máquinas más viejas.
Y con esto, ya tendríamos configurado el Worldcraft y listo para usar. A partir de aquí, comienza
lo interesante... Pero será en el próximo capítulo: "La Interfaz".
TUTORIAL WORLDCRAFT: LA INTERFAZ
Bueno, ya hemos terminado con la configuración del Worldcraft. Así que, sin más preámbulos,
ejecutemos el editor. A continuación abrimos el menú File y seleccionamos New..., como si
fuésemos a comenzar a construir un nuevo mapa.
Y aquí comienza el horror. Botones, ventanas cuadriculadas, nuevos menús... No hay que dejarse
llevar por el pánico; todo esto intimida la primera vez, pero es más fácil de lo que parece.
Comenzaré por explicar a grandes rasgos qué es cada cosa:
Como véis, la mayor parte de la ventana está ocupada por las vistas; en ellas es dónde
trabajaremos directamente en nuestro mapa, añadiendo bloques, entidades y demás... Al igual
que en la mayoría de programas de diseño en 3D, tenemos cuatro de ellas; cada una representa
el escenario que estamos construyendo visto desde un ángulo diferente. Yo he construido un
bloque para hacer esta explicación más fácil de comprender. Pero en vuestro caso, lógicamente,
las cuatro vistas estarán vacías.
Tenemos lo siguiente:
3D: Aquí veremos nuestro mapa en tres dimensiones, con los bloques —brushes— que
hemos añadido hasta el momento y sus respectivas texturas, las entidades que hemos
colocado... Lo único que no aparece reflejado es la iluminación; esa luz uniforme que
vemos aquí no es la que tendrá el mapa durante el juego.
X-Y: La típica vista desde arriba empleada en planos de viviendas, mapas, etc. Si habéis
creado niveles para Doom o Duke Nukem 3D, esto no tiene el menor misterio.
Y-Z y X-Z: Y dos vistas laterales, que nos serán muy útiles para comprobar las alturas de
lo que estamos construyendo. Si os fijáis en el bloque de ejemplo de la captura de
pantalla anterior, no debería ser difícil distinguir una de la otra.
A la izquierda de la ventana, en la mitad superior, vemos una barra vertical que contiene varios
iconos —marcada en la imagen con una A—. Éstas son las herramientas fundamentales para la
construcción de nuestros mapas; con ellas añadiremos bloques y entidades, aplicaremos
texturas, y muchas otras cosas.
Veámoslo con detalle:
Seleccionar: Su nombre ya lo dice... Cuando este icono esté activado,
podremos seleccionar con el ratón cualquier objeto del mapa que estemos
editando.
Zoom: En las vistas en 2D, ampliará o reducirá la zona del mapa que
deseemos. En realidad no sirve de mucho; las teclas E y D hacen la misma
función, y con más comodidad.
Cámara: Cuando deseemos movernos por la vista en 3D para ver nuestro
trabajo desde distintos ángulos, usaremos esta opción. Cuando no esté
seleccionada, la posición de la cámara no podrá cambiarse.
Entidades: Pues eso; para agregar entidades a nuestros mapas —para
entendernos: monstruos, fuentes de luz, etc— activaremos esta herramienta.
Bloques: Fundamental; los bloques sólidos que formarán la arquitectura de
nuestros mapas —llamados también brushes— los iremos creando con este
botón.
Aplicar textura: Cuando lo pulsemos, aplicaremos la textura elegida —
aparece a la derecha de la ventana— sobre todas las caras del bloque que
tengamos seleccionado.
Aplicar texturas una por una: Si lo que queremos es asignar texturas cara
por cara —de modo que un mismo bloque pueda tener varias— emplearemos
este botón en lugar del de arriba. Su uso lo comentaré más adelante.
Cortar bloques: Esta opción da mucho juego, aunque de momento no es nada
que deba preocuparos. Con ella podemos cortar un bloque a partir del plano
que deseemos. Útil para crear formas irregulares —rocas, una columna rota,
etc—.
Editar vértices: Una herramienta muy útil para dar a los bloques las formas
que queramos. Nos servirá para mover sus vértices a nuestro antojo, o incluso
dividir caras, etc. Eso sí, hay que manejarla con cuidado.
Al lado de estos iconos que acabo de describir tenemos otros, agrupados en una línea horizontal
que queda justo debajo de los menús del editor (aparecen marcados con una B en la captura de
pantalla anterior). La mayoría de ellos no serían imprescindibles, pero cumplen funciones que
nos harán el trabajo más fácil.
Y son los siguientes:
Cambiar vista: Pues sí, para eso sirven; cambian la vista de la ventana
en la que estamos trabajando, entre planta (xy), alzado (yz) y perfil (xz).
Hacia el principio de este capítulo ya expliqué cómo funcionaba esto.
Vistas en 3D: También podemos escoger el modo en que aparecerá
nuestro mapa en la vista 3D. De izquierda a derecha, tenemos gráficos
vectoriales, bloques de color sólido o bloques con texturas. Por supuesto,
esta última opción es la más realista.
Cuadrícula: Los botones con los que ajustaremos la cuadrícula de las
vistas en 2D. El de la izquierda la activa o desactiva; los otros dos sirven
para reducir o aumentar su escala.
Carve: Una herramienta delicada, que veremos más adelante... Abre un
boquete en un bloque sólido, con la forma del bloque que tengamos
seleccionado en ese momento.
Grupos: El botón de la izquierda agrupa varios bloques en una sola
unidad; necesario, por ejemplo, para objetos móviles complejos. El otro
actúa al revés, dividiendo un grupo de bloques.
Selecciones: Ninguno de los tres tiene mayor importancia, realmente.
El primero "esconde" los bloques y objetos seleccionados —ojo, los
esconde para que no molesten, pero no los borra—. El segundo igual,
pero con los no seleccionados. Al tercero lo conocen en su casa a la hora
de comer.
Edición: Bueno, aquí no hay que calentarse mucho la cabeza. Estos tres
iconos tienen las típicas funciones de "cortar", "copiar" y "pegar"...
Vamos, casi como en cualquier programa existente hoy en día en
nuestro planeta.
Varios: El botón de la derecha —tl— tiene su interés; estando activado,
al mover un bloque moveremos también las texturas con él, con lo que
no habrá que volver a alinearlas. Los otros dos regulan el funcionamiento
de las selecciones en las vistas 2D, y en general son bastante inútiles.
Ejecutar el mapa: Compila el nivel que estamos construyendo y carga
Quake para que podamos verlo en acción. En la captura de pantalla del
principio de esta sección lo he señalado con una C.
Y por último, nos queda el extremo de la derecha de la ventana del Worldcraft, aunque esto se
resume pronto.
En la esquina superior vemos el cuadro de selección de texturas (D). Así, la textura que hayamos
elegido ahí se aplicará sobre los bloques seleccionados cada vez que pulsemos en el icono de
"Aplicar textura". La opción de Texture group sólo debería preocuparnos si estamos usando
varios archivos de texturas, caso que no es el habitual.
En el centro tenemos los Visgroups (E), una herramienta de Worldcraft para hacer más sencilla la
edición —o eso pretende—. En mapas ya crecidos, con centenares de bloques, llega un momento
en que es difícil ver lo que estamos haciendo, sobre todo en las vistas en 2D. En estos casos,
podemos agrupar los bloques a nuestro antojo, en visgroups diferentes, de modo que cada grupo
aparecerá en el editor representado con un color diferente. El problema de esto es que su
manejo no resulta muy intuitivo que digamos..., vamos, al menos a mí no me termina de
convencer.
Y finalmente, en la esquina de abajo tenemos el panel de los "prefabricados" —F—. Usualmente,
cuando añadamos un nuevo bloque a nuestro mapa, éste tendrá forma de cubo; es la opción por
defecto. Pero en ciertas circunstancias querremos cambiarlo, cosa que haremos con estas
opciones.
En el menú Objects elegiremos qué tipo de bloque deseamos añadir. Además de los
omnipresentes cubos, podemos trabajar con cilindros o conos. En Faces especificaremos el
número de caras que tendrán.
La utilidad de Create Prefab sólo la puedo adivinar, puesto que a mí sólo me ha servido para que
se me cuelgue el Worldcraft. Supongo que se usará para guardar formas complejas que hayamos
creado —por ejemplo, una puerta—, que más tarde podremos añadir cómodamente como si de
un cubo más se tratase... No creo que sea muy diferente a los Prefabs del UnrealEd.
Y bueno, por el momento ya está. Todo esto puede intimidar un poco, pero la mejor forma de
aprenderlo es tocándolo... Cosa que haremos en el próximo capítulo.
TUTORIAL WORLDCRAFT: NUESTRO PRIMER MAPA
¡Por fin! Llegó la hora de la verdad...
En este capítulo explicaré cómo construir un pequeño mapa de ejemplo; en realidad, algo
sencillo y un tanto patético, pero que os servirá para que comprendáis el funcionamiento básico
del Worldcraft. Sí, una habitación cuadrada con una columna en medio; no es gran cosa, pero
por algún sitio hay que empezar.
Así que arrancamos el Worldcraft, y en el menú File seleccionamos New (nuevo mapa). Y nos
encontraremos con el panorama que ya expliqué en el apartado anterior; las vistas, los iconos y
demás.
Quake se basa en una geometría aditiva. Así, imaginemos un enorme espacio vacío, negro y
muerto como un abismo sideral; éste es nuestro punto de partida cuando comenzamos a
trabajar con Worldcraft. El nivel lo construiremos añadiendo bloques sólidos —llamados brushes
— que formarán su arquitectura; el suelo, paredes y puertas, o incluso el cielo en las áreas que
simulan exteriores no son más que eso, brushes. Bien pensado, esto parece bastante lógico,
pero también es cierto que otros motores —Unreal y derivados— parten del principio contrario.
CÓMO CREAR UN BLOQUE (BRUSH):
Bien, basta de charla.
Ya he dicho que vamos a comenzar con una habitación cuadrada. Y estará formada por seis
bloques; uno para el suelo, otro para el techo, y otros cuatro para las paredes.
Primero, comprobad que la cuadrícula representa 64 unidades; esto se ve en la esquina inferior
derecha de la pantalla, en un letrerito que dirá Snap: on grid: 64. 64 es el valor por defecto; en el
mundo de Quake, 64 unidades representan más o menos la altura de nuestro personaje —
vamos, unos dos metros, supongo—. Por espacios más pequeños es posible que no podamos
pasar...
Si por alguna razón el valor de la cuadrícula es diferente, ajustadlo a 64 unidades con los
botones apropiados —sí, los que están en la barra horizontal de arriba—.
Una vez hecho esto, seleccionamos en la barra de herramientas —vertical, situada a la izquierda
— el botón de añadir bloques... O sea, el del cubo gris; si dejamos el ratón sobre él, aparece una
etiqueta que nos lo describe como Block tool. Ahora vamos a la vista en 2D que corresponde a
XY, o sea, el plano desde arriba de toda la vida; suele ser la de arriba a la derecha.
Dejando pulsado el botón izquierdo del ratón, trazamos un cuadrado que medirá ocho
cuadritos de lado —esto es, 512x512 unidades de Quake—. Así mismo, comprobaremos en las
otras vistas 2D que no tenga más de un cuadro de alto... Los puntos blancos que lo rodean sirven
para cambiar sus dimensiones, como si fuese una ventana del escritorio.
¿Y bien? No aparece nada en la vista 3D... Evidentemente, porque todavía no hemos creado
nada. Para ello, una vez le hayamos dado al cuadrado las medidas deseadas, movemos el
puntero del ratón dentro de él y pulsamos la tecla [INTRO]...
Y ahora sí, tenemos un nuevo bloque; esto será el suelo de la habitación.
Antes... Y ya construido.
MOVIÉNDONOS EN LA VISTA 3D:
Probablemente lo veremos en la vista 3D, con una textura marrón bastante fea. Aunque es
posible que tengáis que cambiar el modo gráfico en que funciona esta vista; hay tres —líneas,
colores sólidos y texturas—, que se activan con los iconos de la parte superior de la pantalla,
junto a los de la cuadrícula.
Quizás queráis examinar el nuevo bloque más de cerca, pero, ¿cómo mover "nuestros ojos" por
la vista en 3D? En realidad es muy sencillo. Antes que nada, activaremos la opción
correspondiente en la barra de herramientas de la izquierda; esto es, el icono rojo de la cámara.
Luego, en la vista en 3D podremos hacer los siguientes movimientos, dejando pulsadas las teclas
correspondientes:
Botón izquierdo del ratón: Giraremos al mover el ratón, cambiando la dirección en la
que estamos mirando.
Botón derecho del ratón: Desplazamiento lateral.
Botón derecho del ratón + [MAYUSC.]: Si movemos el ratón hacia arriba,
avanzaremos; si lo hacemos hacia abajo, retrocederemos.
COMPLETANDO LA HABITACIÓN:
Bueno, tenemos un bloque, pero necesitamos otros cinco para conseguir una habitación cerrada.
De hecho, ningún mapa funcionará si sus bloques no lo dejan perfectamente cerrado; y no hablo
de funcionar mal, sino de no funcionar. Así que hay que ir construyendo con cuidado de no dejar
ningún hueco que se abra al vacío exterior.
Ahora crearemos el techo de nuestra habitación. Trazamos un nuevo bloque con el ratón, como
ya hicimos antes —¡no os olvidéis de activar el icono del cubo gris!—. Este bloque tendrá las
mismas dimensiones que el anterior (8x8 cuadritos), y estará colocado en el mismo sitio... Sólo
que otros seis cuadritos más arriba.
Tal que así:
Y ahora las paredes.
Empezaremos creando, a izquierda y derecha de los bloques que ya tenemos —en la vista 2D
"desde arriba"—, dos nuevos brushes. Cada uno de ellos tendrá diez cuadros de largo, uno de
ancho, y ocho de alto. Y el resultado se va pareciendo cada vez más a una caja...
Como ya habréis adivinado, la faena se remata con otros dos bloques que llenen los huecos
restantes, cuyas dimensiones serán de ocho cuadros de longitud, uno de anchura y otros ocho
de alto. Con esto la habitación quedará perfectamente cerrada...
Y éste es el modo en el que funciona la arquitectura de Quake; añadiendo bloques para construir
espacios cerrados. Se pueden crear áreas más o menos complejas, con decenas de brushes y
formas variadas, pero el principio básico es éste.
Y ahora, contemplemos nuestra modesta creación:
Una vez comprendida esta idea básica, comentaré que hay otro método para conseguir el mismo
resultado, aunque a mí personalmente no me parezca muy cómodo. Se trata de construir un
gran bloque sólido, cuyo volumen será el que buscamos para nuestra habitación, y luego hacerlo
hueco con una combinación de teclas.
Así, trazaríamos un cubo grande, del modo que ya sabemos. Una vez hecho, lo seleccionamos —
la barra de herramientas de la izquierda, la flecha roja de arriba del todo—; el bloque brillará en
rojo en todas las vistas.
A continuación, pulsaríamos [CTRL] + H; aparecerá una pequeña ventana, preguntándonos por
el grosor que tendrán las paredes resultantes del bloque que vamos a vaciar. En el ejemplo de la
derecha, tendríamos una habitación cúbica con muros de 32 unidades de grosor —la mitad de
los que hemos creado nosotros con el modo "tradicional"—.
De una forma u otra, el resultado final viene a ser el mismo; seis bloques delimitando una
habitación cuadrada. Éste último método resulta más rápido que el anterior, pero menos
flexible... Al final, hacer las cosas de una forma o de otra depende de las preferencias de cada
cuál.
TEXTURAS:
Bueno, hay que admitirlo; nuestra habitación es marrón y sólo marrón; o sea, fea de cojones.
Vale que Quake no ofrece un gran repertorio de colores en sus texturas, pero esto puede
mejorarse... Y a ello vamos.
Empezamos con el suelo, al que le daremos una bonita textura de azulejos. Primero, lo
seleccionamos en la vista 3D —para esto, activamos el icono de la flecha roja, y lo marcamos
con el botón izquierdo del ratón—. A continuación, en el panel de selección de texturas —arriba,
a la derecha— clicamos sobre el botón llamado Browse.... Nos aparecerá una ventana, con una
lista de todas las texturas del juego; nosotros sólo tendríamos que elegir la deseada —en este
caso, por ejemplo, afloor3_1— con un doble clic.
Y por último, pulsamos sobre el botón de "aplicar texturas" de la barra de herramientas de la
izquierda; el icono del cubo verde, tal y como se aprecia en la imagen. Con él, asignamos la
textura elegida a todas las caras del bloque —o bloques— que tengamos seleccionados.
Hagamos lo mismo con el techo... Pero esta vez elegiremos una textura que sugiera un material
tosco y antiguo; por ejemplo, city4_2, un feo enlosado marrón, quedará bien.
Y ahora las paredes. Para ellas, podríamos escoger una de las sucias texturas metálicas que
aparecen en los últimos episodios del juego; probemos con metal4_4... Vale, el resultado no es
para tirar cohetes... Pero aquí sólo estamos practicando.
De momento, nos hemos limitado a asignar texturas a bloques completos; cosa muy sencilla,
pero también indiscriminada y poco práctica. ¿Y si queremos editar las caras de los bloques una
por una? Antes o después nos veremos obligados a hacerlo, por simple y ridícula que sea la
decoración de nuestro mapa. Pero, ¿cómo? El botón de "Aplicar texturas una por una" —justo
debajo del que acabamos de utilizar— tiene la solución.
Primero, vamos a crear algo decorativo, que nos dé una excusa para emplearlo. ¿Qué tal un
escalón de 32 unidades de alto a lo largo del perímetro de la habitación, junto a las paredes? No
debería ser difícil; sólo hace falta reducir la escala de la cuadrícula (de las 64 unidades de antes
a 32) y crear los cuatro bloques necesarios.
Algo así:
A la parte de arriba del escalón le daremos un aspecto de "metal con remaches"; y al escalón
propiamente dicho, algo un poco más morboso y llamativo... No sé, unas calaveras, por ejemplo.
Sí, llegó el momento de usar el botón de "aplicar texturas una por una". Cuando lo hagamos,
aparecerá un cuadro de diálogo con diversas opciones para trabajar con nuestras texturas: scale
(escala), shift (desplazamiento), rotation (ángulo)... En fin, casi todas se explican por sí mismas.
Mientras este cuadro de diálogo —llamado Face Properties— esté activado, trabajaremos del
siguiente modo: con el icono de la cámara nos moveremos por la vista en 3D, de la forma
acostumbrada; y con la flecha roja —"seleccionar"— marcaremos las caras de los bloques que
queramos modificar. Para esta última tarea disponemos de algunas combinaciones de teclas que
nos facilitarán mucho las cosas:
Botón izquierdo del ratón: Seleccionar una cara.
Botón izquierdo del ratón + [CTRL]: Permite seleccionar/descartar varias caras, una
por cada pulsación del ratón. Vamos, como si estuviéramos marcando archivos en el
Explorador de Windows.
Botón izquierdo del ratón + [MAYUSC.]: Selecciona todas las caras del presente
bloque.
Botón derecho del ratón: Aplica la textura indicada en el cuadro de diálogo —con su
escala, ángulo, etc— sobre la cara elegida.
Botón derecho del ratón + [MAYUSC.]: Aplica las opciones que hemos especificado en
el cuadro de diálogo, pero esta vez sobre todas las caras del bloque que seleccionemos.
Pues volvamos al escalón... Como ya dije, a la superficie de arriba le correspondía una textura
metálica con remaches; la met5_1 es ideal para ello. Así que la seleccionamos en el cuadro de
diálogo —botón Browse... para que aparezca la lista—, y después la aplicamos sobre las caras
correspondientes con simples pulsaciones del botón derecho del ratón. ¿Bien, no?
Otro método alternativo —y más lento— hubiera sido seleccionar todas las caras que
deseábamos editar —usando el botón izquierdo del ratón + [CTRL]—, luego buscar la textura
met5_1 en el cuadro de diálogo, y por último aplicarla pulsando el botón Apply. Pero bueno, lo
mismo da.
Los bordillos de los escalones, en cambio, iban a tener una textura de calaveras... Bueno,
metal4_2 quedará bastante bien. Así que seleccionamos los cuatro bordillos, elegimos la textura,
la aplicamos, y... ¡Horror! ¿Y las famosas calaveras?
Aquí lo que ha pasado es que en el escalón ha aparecido solamente la mitad inferior de la
textura... Pero esto puede remediarse fácilmente, moviendo la textura de modo que se dibuje la
otra mitad, la que nos interesa en este caso. Para ello basta con asignar a la opción Y, dentro de
Shift —desplazamiento—, un valor de 32.
Y ahora sí; ya tenemos el resultado que buscábamos. Metal con remaches arriba, calaveras en el
bordillo. Vayamos a por más...
UNA COLUMNA EN EL CENTRO
Nuestra habitación queda un poco sosa, pero ya va cogiendo forma... Aun así, podríamos
añadirle algo más antes de darla por terminada; algo tan socorrido como una columna, por
ejemplo.
Lo primero, como ya habréis adivinado, es seleccionar la herramienta de añadir bloques; o sea,
el cubo gris. A continuación, trazamos en el centro de la habitación un cuadrado de 64x64
unidades —como tenemos la cuadrícula a 32 unidades, esto se traduce en dos cuadritos de lado
—. De alto le podríamos dar otros doce cuadritos..., sí, lo justo para que llegue del suelo hasta el
techo.
¡Quietor, cobarde de la pradera! No pulses el [INTRO] todavía; una columna cuadrada no tendría
ninguna gracia. Así que la crearemos cilíndrica —bueno, más bien octogonal—. En la esquina
inferior derecha de la pantalla veremos las opciones que nos interesan. En Categories
seguramente leeremos Primitives, cosa que está bien. Bajo, en Objects, seleccionamos Cylinder
—cilindro—; con ello se activará el tercer cuadro, Faces —caras—, al que asignaremos un valor
de 8.
Y ahora sí; ya puedes pulsar [INTRO] para crear el nuevo bloque.
Cuando lo hayamos hecho lo veremos en la vista 3D, posiblemente decorado con la textura de
las calaveras. Claro que esto no es lo que deseamos para nuestra columna. ¿Quizás un material
parecido al mármol? Bueno, probemos con la textura column1_2, que tiene buen aspecto.
A estas alturas, deberíamos tener en pantalla algo así:
COLOCANDO ENTIDADES:
Una habitación cuadrada, un escalón decorativo, una columna... Todo esto está muy bien, pero
un mapa necesita más cosas para ser jugable. Sí, me estoy refiriendo a las entidades.
¿Y qué es una entidad?, me preguntas mientras clavas tu pupila en mi pupila azul. Pues
entidades son los objetos que le darán vida a nuestros niveles. Los monstruos, por ejemplo, son
entidades. Los puntos de inicio de los jugadores, también. E incluso algo tan básico y necesario
como las luces.
Precisamente vamos a empezar con ellas. Todo nivel de Quake requiere fuentes de luz. El brillo
uniforme que vemos en la vista en 3D del Worldcraft no es real; por lo tanto, si jugarámos
nuestro mapa sin añadir luces, lo único que encontraríamos sería..., nada. Sólo un manto de
oscuridad impenetrable.
Así que colocaremos aunque sea un par de antorchas... Activamos pues el icono de crear
entidades —se halla justo encima del cubo gris que usamos para los bloques—. Esta acción se
reflejará en las vistas en 2D, puesto que cuando el puntero del ratón se mueva por ellas lo hará
convertido en un hacha con una cruz.
Y ahora elegimos el tipo de entidad que queremos crear. Así, miramos en la esquina inferior
derecha de la pantalla; la opción Categories tendrá el valor de entities. En el segundo recuadro
—Objects— seleccionamos light_torch_small_walltorch; puede costar un poco encontrarlo, puesto
que la lista desplegable es larga y no sigue un orden alfabético.
Las antorchas deberían quedar pegadas a la columna, así que esto requerirá un poco más de
precisión; reduzcamos la cuadrícula a 8 unidades, y acerquémonos a la columna en la vista en
2D. Ahora pulsamos el botón izquierdo del ratón, y aparecerá un cuadrito verde que podremos
mover a nuestro antojo...
Dicho cuadro indica el lugar dónde vamos a crear la entidad. Así que lo movemos junto a la
columna, tal y como se ve en la imagen de la izquierda; ya de paso tendremos en cuenta su
altura, y lo dejaremos a 128 unidades —o sea, dieciséis marcas de la cuadrícula— sobre el suelo.
Y una vez colocado a nuestro gusto, pulsamos [INTRO]...
Y ya hemos añadido una antorcha —en el editor veréis un simple bloque morado—. Ahora
hagamos otra justo en el lado opuesto de la columna... Y con esto ya tendríamos iluminada la
habitación.
Podríamos modificar las propiedades de cada antorcha —la intensidad de su luz, etc—
seleccionándolas, pulsando el botón derecho del ratón sobre ellas y echando un vistazo a las
Properties —la última entrada del menú emergente que aparecerá—. Pero bueno, lo dejaremos
para más adelante.
Ya me imagino que estaréis ansiosos por ver en funcionamiento este maravilloso mapa... Pero
para ello, primero hay que colocar un punto de inicio para el jugador —lógico, ¿no?—.
Esta entidad se llama info_player_start, y la colocaremos en una esquina de nuestra estancia; en
la vista en 3D aparece como un prisma brillante de color verde. Hay que tener cuidado y situarlo
a la altura apropiada; o sea, ni incrustado en el suelo —cosa que provoca extraños resultados al
correr el mapa—, ni volando por los aires.
Bien, echemos un vistazo al editor:
Vale, y con esto ya tenemos un pequeño nivel de prueba listo para jugar... Bueno, todavía no;
antes hay que compilarlo, para conseguir un archivo .BSP que Quake pueda entender
directamente. Cosa que veremos en el próximo capítulo de este apasionante tutorial capaz de
dormir a las ovejas...
TUTORIAL WORLDCRAFT: COMPILANDO EL NIVEL
Esto suena muy técnico, ¿no? Pues no; en realidad es muy sencillo. Nuestro mapa, tal y como lo
tenemos en el Worldcraft, no puede ser manejado directamente por Quake; así que hay que
"traducirlo" a un formato que sea comprensible para el juego.
Lo comprobaremos fácilmente; sólo hay que ver que Worldcraft y otros editores similares usan
distintos tipos de archivo; .RMF, .MAP —que es común para todos—, .3DT... En cambio, los mapas
de Quake ya compilados y listos para jugar tendrán invariablemente el formato .BSP.
Volviendo a nuestro nivel —la habitación que creamos en el capítulo anterior—; ¿qué hay que
hacer para compilarlo? En primer lugar, clicar sobre el botón de "Ejecutar el mapa", situado en la
barra de herramientas de arriba, y a la derecha del todo. O bien pulsar [F9]; ambos pasos llevan
al mismo sitio.
QBSP, LIGHT, VIS:
Bien, cuando lo hagamos nos aparecerá un cuadro de opciones llamado Run Map, con algunas
tonterías que pueden sonar a chino la primera vez... En realidad, cada uno de los tres apartados
que vemos en la ventanita —QBSP, Light, Vis— hace referencia a un aspecto de nuestro nivel,
que admite opciones de compilación propias.
Así, tenemos:
Run QBSP:
Esto es lo más básico, puesto que QBSP se encarga de compilar la geometría del mapa
—bloques y entidades— y de generar el correspondiente archivo .BSP. Si desde la última
vez que lo compilamos sólo hemos hecho cambios en las entidades, podemos usar la
opción Entities only para ahorrar tiempo.
Run Light:
Su nombre ya lo dice; calcula la iluminación de nuestro nivel, teniendo en cuenta las
entidades de luz que hemos colocado, las superficies en las que ésta incide, etc. Si no lo
activamos, nuestro nivel se compilará con el brillo uniforme de la vista en 3D del
Worldcraft, cosa bastante fea. Por último, la opción Extra hace la iluminación más suave
y precisa; cuesta más tiempo compilarlo de este modo, pero mejora mucho la apariencia
del mapa.
Run Vis:
Vis determina qué áreas del mapa son visibles desde cada lugar; de modo que cuando
juguemos, Quake sólo dibujará los bloques adecuados. Esto sirve para acelerar los
niveles y hacerlos jugables; no es realmente necesario para nuestras pruebas, pero sí
deberíamos pasarlo —con la opción Full— cuando tengamos la versión definitiva del
mapa.
Bueno, como vemos en el cuadro hay otras opciones, pero son menos importantes. Así, en
Additional game parameters especificaremos los comandos con los que Quake probará el mapa
—por ejemplo, nocdaudio, skill 1, etc—. Esto no sirve de nada si la opción Don't run the game
está activada; en tal caso, se compila el mapa y luego nosotros cargaremos el juego por nuestra
cuenta.
Por lo demás, Save visible objects only tendrá alguna función desconocida para los mortales... Se
supone que tiene algo que ver con los Visgroups. Aunque tanto da; viene desactivada por
defecto y no se la echa en falta. Del botón de abajo a la izquierda —Expert— también podéis
olvidaros tranquilamente.
Y éste sería nuestro mapa, ya compilado y ejecutándose en Quake:
PROBLEMAS HABITUALES:
Normalmente todo irá bien y sin contratiempos... Y sin embargo la compilación puede fallar por
diversos motivos. Así que comentaré los más frecuentes, para ahorraros algún que otro dolor de
cabeza.
Huecos, o leaks:
Esto suele ser lo más obvio. Si hemos construido el mapa de forma descuidada, es posible que
hayamos dejado algún hueco abierto al vacío exterior... En estos casos el fallo aparecerá al
compilar con QBSP —y Light y Vis no llegarán a ejecutarse—. Para arreglarlo, no quedará otro
remedio que revisar cuidadosamente nuestro nivel, en busca del maldito agujero.
Lo mejor es prevenir, añadiendo bloques de forma limpia y ordenada. En concreto, deberíamos
controlar que la opción Snap to grid —la primera dentro del menú Map— está activada, y
asegurarnos de que los bloques que delimitan el mapa se tocan entre ellos y lo cierran
perfectamente.
Texturas con escalas extrañas:
Cuando aplicamos texturas en nuestros mapas, tenemos la opción de asignarles una escala a
nuestro gusto. Esto es muy útil, por ejemplo, para encajar una textura en una cara que no se
corresponda con sus dimensiones originales. Lo usual es emplear las escalas más
convencionales —0'5 x 0'5, 0'25 x 0'25, etc—. Pero con algunas texturas, escalas rebuscadas —
0'35 x 0'6...— pueden dar problemas.
Probablemente el error aparecerá al compilar con QBSP. Al menos suele ser fácil de solucionar,
puesto que uno casi siempre recuerda en qué parte del mapa tuvo que hacer contorsiones con
las texturas...
Falta de recursos:
Esto no debería ser un problema hoy en día, pero aun así... Worldcraft es un programa pesado, y
acapara vorazmente los recursos del ordenador. Esto resulta especialmente cierto con QBSP y
Vis; compilar un mapa grande puede requerir más de 100 MB de memoria. Los ordenadores
actuales cumplen sobradamente con este requisito; pero de todos modos, si queréis evitaros
errores, no compiléis vuestro mapa mientras navegáis con Mozilla, bajáis tonterías con el Emule
y escucháis música con Winamp.
También hay que tener en cuenta que, con niveles de cierto tamaño, la compilación puede llevar
su tiempo. Por ejemplo, en mi ordenador —un AMD a 1 GHz con 256 MB de RAM— un mapa de
unos 1200 bloques tarda una media hora en compilarse, usando las opciones Extra para Light y
Full para el Vis. O sea, que no os desesperéis si el proceso es lento; los primeros aficionados, con
sus modestos Pentiums, tuvieron que esperar a veces muchas horas...
Herramientas inadecuadas:
Worldcraft incluye las tres utilidades necesarias para compilar nuestros mapas: QBSP, Light y Vis
—consultad el segundo capítulo, Instalando y Configurando Worldcraft—. Sin embargo, es posible
que se trate de versiones antiguas, que se nos queden cortas a la hora de trabajar con niveles
grandes o intrincados. Podemos encontrarnos pues con que QBSP o Vis no terminan su labor por
algún motivo desconocido, aunque nuestro mapa no tenga ningún error aparente.
La solución pasaría por conseguir en Internet versiones más recientes de estos programas. Por
ejemplo, un buen sustituto para QBSP es TXQBSP; y de Light y Vis circulan por la red ediciones
actuales y muy mejoradas. Aquí mismo, en Arcades 3D, podéis descargar un archivo comprimido
con variantes modernas de QBSP, Light y Vis.
TUTORIAL WORLDCRAFT: TRABAJANDO CON TEXTURAS
En este apartado hablaré de forma detallada sobre la aplicación de texturas. Algunos detalles ya
han sido comentados en capítulos anteriores, pero no está de más repasarlos aquí... Y así, de
paso, todo lo que conviene saber para trabajar con texturas queda reunido en una única sección.
SELECCIONANDO UNA TEXTURA
Bueno, esto no tiene misterio. Current texture indica —lógicamente— el nombre de la textura
que está seleccionada en el momento actual. El menú desplegable nos muestra una lista
vertical, con las últimas texturas que hemos empleado; bajo ellas, separadas por una línea
horizontal, aparecen todas las demás. Claro que para ver todas las texturas disponibles, lo más
cómodo es clicar en el botón llamado Browse.... En la ventana que aparecerá podremos
examinarlas a nuestro gusto, y seleccionar la que deseemos con un doble clic.
Por último, Texture Group indica las texturas que se mostrarán en las listas. All Textures se
refiere, evidentemente, a todas las disponibles en los archivos WAD que carga el Worldcraft (ver
el capítulo Instalando y Configurando Worldcraft). También podemos ver sólo las texturas que
aporta cada fichero WAD en concreto, escogiéndolo en el menú emergente.
BOTÓN DE APLICAR TEXTURAS:
Una vez elegida la Current texture, como hemos comentado justo arriba, ésta se aplicará a todos
los bloques que creemos. También podemos asignar esa textura a un bloque determinado; basta
con seleccionarlo y usar el botón correspondiente. Ahora, no olvidéis que de este modo
aplicamos la textura a todas las caras del bloque elegido.
APLICAR TEXTURAS UNA POR UNA:
Como ya vimos anteriormente —en el capítulo Nuestro primer mapa— también es posible
modificar las texturas en caras individuales, en lugar de hacerlo con bloques completos. Para
ello, clicaremos en el botón apropiado de la barra de herramientas de la izquierda, o bien
pulsaremos [MAYUSC.] + A. Nos aparecerá el ya comentado cuadro de Face Properties.
Mientras este cuadro esté abierto, podremos seleccionar las caras deseadas en la vista 3D —con
la herramienta de la flecha roja activada—, y cambiar las propiedades de sus texturas a nuestro
gusto. Aunque esto ya se ha explicado más atrás, no está de más recordar las posibilidades que
tenemos para elegir las caras y modificarlas:
Botón izquierdo del ratón: Seleccionamos una cara.
Botón izquierdo del ratón + [CTRL]: Permite seleccionar o descartar varias caras,
una por cada pulsación del ratón.
Botón izquierdo del ratón + [MAYUSC.]: Selecciona todas las caras del presente
bloque.
Botón derecho del ratón: Aplica la textura y las propiedades indicadas en el cuadro de
diálogo sobre la cara elegida.
Botón derecho del ratón + [MAYUSC.]: Aplica las opciones que hemos especificado en
el cuadro de diálogo, pero esta vez sobre todas las caras del bloque que seleccionemos.
Como vemos, el cuadro de Face properties nos ofrece algunas opciones interesantes para sacar
el máximo partido de las texturas del juego. Evidentemente, los Quake 2 Parameters no nos
interesan ahora; pero lo demás, sí.
Scale:
Indica la escala con la que aplicaremos la textura. Lo habitual es que tanto X como Y valgan 1'00
—lo que representa la textura en su tamaño por defecto, o sea, con una escala del 100%—. Pero,
por ejemplo, si queremos colocar una textura de 128x128 en una superficie más pequeña, de
64x64 unidades, la escala pertinente sería de 0'5 en X e Y.
Lo recomendable es usar las escalas más convencionales: 0'5 x 0'5 (50%), 0'25 x 0'25 (25%)..., y
andar con cuidado con los valores atípicos. Tal y como he explicado en el capítulo Compilando el
nivel, escalas extrañas —del estilo de 0'4 x 0'85, 0'33 x 0'7, etc— pueden causar errores de
compilación, al menos si se usan con determinadas texturas. Pero si al final nos decidimos por
emplearlas en algún rincón difícil, vale la pena compilar el mapa para comprobar que todo
funciona bien.
Por último, queda comentar que con valores negativos se cambia la orientación de la textura.
Así, si asignásemos a una cara una escala de 1'00 x -1'00, su textura aparecería invertida. Por
ejemplo:
x=1'00, y=1'00 x=1'00, y=-1'00 x=-1'00, y=1'00
Shift:
Como ya vimos en Nuestro primer mapa —a la hora de construir el escalón con calaveras—, esta
propiedad es fundamental para alinear texturas. El valor X indica el desplazamiento horizontal de
la textura en cuestión, y el valor Y el vertical. Tampoco merece mayores explicaciones; el efecto
es bastante obvio y lo iremos viendo mientras probamos diversos valores...
Rotation:
Sirve para girar la textura en el ángulo deseado —de entre 0 y 360 grados, lógicamente—. Esto
puede resultar útil en ciertas circunstancias, y además da mucha libertad a la hora de decorar
nuestros escenarios; de hecho, jugando con esto se pueden conseguir curiosos resultados.
Un par de ejemplos:
Rotation: 0'00 Rotation: 90'00
Hide Mask:
Un botón situado en la mitad inferior del cuadro de Face Properties. Su función es la de
desactivar el filtro de color rojo que señala los objetos que tenemos seleccionados. Nada que
deba preocuparnos habitualmente, pero en ciertas ocasiones puede venir bien.
Ojo, esto elimina el brillo rojo en las caras y bloques seleccionados, y les devuelve su aspecto
habitual; pero estos objetos siguen estando marcados. Recordad pues desactivar esta opción
cuando hayáis acabado de retocar esa textura tan delicada...
BOTÓN TEXTURE LOCK:
Esta opción nos resultará de mucha utilidad para mover bloques cuyas texturas tengamos ya
alineadas, sin que éstas se desordenen de nuevo. Por defecto está desactivada, y la posición de
las texturas de cada bloque cambiará según el lugar en el que lo coloquemos. Si la activamos,
las texturas quedarán siempre fijas en el bloque con su alineación actual.
Esto no tiene ningún efecto práctico en el juego; se trata simplemente de una posibilidad que
nos da Worldcraft para hacer más cómoda nuestra labor..., y que a veces ahorra bastante
trabajo.
LÍQUIDOS Y TEXTURAS ESPECIALES:
Como ya sabréis, en el mundo tenebroso de Quake hay balsas de aguas pestilentes que
podremos explorar buceando, y peligrosos pozos con lava de los que no saldremos vivos. Incluir
algo de esto en nuestros mapas es bastante sencillo. Basta con asignar a un bloque determinado
alguna de las texturas especiales, creadas para tal efecto; agua, ácido, lava y demás líquidos. En
el juego, este bloque no será sólido, y todo lo que quede en su interior aparecerá sumergido bajo
las aguas.
Por último, quedaría comentar que las propiedades de cada líquido en concreto no se pueden
cambiar. Así, por ejemplo, no es posible crear ácido que no queme, ni modificar el daño que
sufriremos al caer en la lava. También es importante recordar que todas las caras del bloque en
cuestión deberán tener la misma textura.
Y ya puestos, tampoco se pueden colocar juntos —o sea, de modo que se toquen— bloques que
representen fluidos diferentes. Esto causará errores al compilar el mapa.
Y MÁS TEXTURAS ESPECIALES; EL CIELO:
Hay que reconocer que el motor de Quake no es precisamente versátil a la hora de representar
paisajes exteriores, y hace falta bastante talento para conseguir buenos resultados. Pero bueno,
bien utilizados pueden mejorar mucho la atmósfera de nuestros mapas; patios, rejas que miran
al cielo, cortos paseos al aire libre..., son detalles que dan variedad y realismo al escenario, y
siempre se agradecen. Para crear áreas exteriores sólo necesitaremos tener en cuenta algunos
conceptos básicos.
En realidad, los cielos que vemos en los mapas de Quake no son más que bloques a los que se
les han asignado texturas apropiadas para ello. Como sucede con los fluidos, que ya hemos
comentado arriba, estas texturas les confieren algunas características especiales.
Así, un bloque con texturas de cielo aparecerá siempre dibujado con el máximo brillo,
independientemente de las luces que coloquemos en la zona. Estas texturas son animadas —
nubes que se mueven, por ejemplo—, y el motor se encarga por su cuenta de darles la
perspectiva de lejanía necesaria.
CONTROLANDO LOS EXCESOS:
Bueno, lo que queda por comentar tiene una importancia más bien relativa. Desde que salió
Quake hasta ahora, la potencia de los ordenadores se ha multiplicado por diez, y han aparecido
puertos —como GLQuake o Dark Places Engine— que han eliminado muchas de las restricciones
originales del motor del juego. Aun así, hay algunos detalles que deberíamos tener en cuenta, a
pesar de que hoy por hoy hayan perdido parte de su sentido.
No existe un límite definido al número de texturas que podríamos emplear en un mapa. No
obstante, conviene mantener una cantidad razonable, o podemos encontrarnos con dos
problemas. El primero, una pérdida de rendimiento del juego, dado que el motor tiene que
procesar sobre la marcha las diferentes texturas que iremos encontrando a lo largo del
escenario. Y el segundo, a más texturas mayor tamaño del archivo .BSP resultante, y mayores
requerimientos de memoria RAM para poder jugar.
Como ya he dicho, estas restricciones en un Pentium IV no deberían notarse demasiado..., pero
bueno, no todos tenemos uno de estos. Y de todas formas, sí es muy importante reparar en estos
detalles si estamos creando un mapa para jugar en deathmatch. Los niveles grandes y
detallados son más exigentes con los recursos del ordenador, y ello, en una partida por Internet,
puede traducirse en lags elevados y un juego poco fluido.
TUTORIAL WORLDCRAFT:NUESTROS AMIGOS LOS BRUSHES
Los bloques —también conocidos por su nombre de guerra en inglés, brushes— son el
componente básico de la arquitectura de nuestros mapas. Y en este capítulo hablaremos un poco
más en profundidad sobre cómo manipularlos y trabajar con ellos. Porque podemos hacer mucho
más que limitarnos a añadir formas cuadradas...
CAMBIAR EL TAMAÑO, GIRAR, DEFORMAR:
Pues sí, éstas son las opciones que tenemos. Evidentemente, deberemos estar trabajando en el
modo de añadir de bloques —sí, el consabido icono del cubo gris—, y haber seleccionado uno.
En esta imagen —sacada del tutorial en inglés que tienen en www.planetquake.com— se
aprecian muy bien estos tres modos de modificar los bloques. No es que me guste copiar sin más
contenidos de otros sitios, pero esta vez creo que valía la pena:
De izquierda a derecha, cada cuadrado muestra un modo de trabajo. Así, vemos cómo cambiar
las dimensiones del bloque, cómo hacerlo girar sobre sí mismo, o cómo deformarlo, inclinando
sus caras y dándole aspecto de trapezoide.
Pulsando el botón izquierdo del ratón dentro del bloque seleccionado cambiaremos la forma
de trabajar con él. Esto se reflejará en los puntos blancos que aparecen rodeándolo, que
adoptarán distinas posiciones en cada caso. Basta con dejar apretado el botón izquierdo del
ratón sobre uno de ellos para modificar el bloque a nuestro antojo.
CORTANDO BLOQUES; LA HERRAMIENTA CLIP TOOL:
Se trata de una de las herramientas más útiles y potentes de Worldcraft, hasta el punto de que
cuando nos acostumbremos a usarla no sabremos vivir sin ella. Sí, el botón de "Cortar Bloques"
será uno de nuestros mejores amigos cuando queramos conseguir formas geométricas un poco
elaboradas.
¿Y cómo trabajar con ella? Pues es realmente sencillo. Lo primero, seleccionamos el bloque —o
los bloques, puesto que puede trabajar con varios— que deseamos modificar. Y a continuación
activamos el modo de "cortar", clicando sobre el icono correspondiente de la barra de
herramientas.
En cualquiera de las vistas de trabajo, trazamos con el ratón una línea que cruce el bloque, tal y
como deseamos cortarlo... Éste aparecerá dividido en dos partes. Una de ellas brillará en color
blanco, indicando lo que nos quedaría cuando efectivamente hagamos el corte; la otra, que no se
muestra resaltada, es la porción del bloque que eliminamos.
Bueno, veámoslo en imágenes:
Antes de cortar... Y después.
Cuando la parte destacada en blanco sea la que deseamos, sólo nos queda efectuar el corte
empleando la tecla [INTRO]. Esto es importante, puesto que hasta que no pulsemos dicha tecla
no haremos en realidad ningún cambio en el bloque seleccionado.
Clicando sucesivas veces con el botón izquierdo del ratón sobre el icono de "Cortar Bloques"
podemos escoger distintos modos de corte. Así, es posible quedarnos con la otra parte del
bloque:
Antes de cortar... Y después.
O incluso podríamos dividir el bloque en dos, sin eliminar nada...
En resumen, se trata de una herramienta potente y versátil, que nos da muchas posibilidades a
la hora de trabajar con la geometría de nuestros mapas. Por ejemplo, viene muy bien para crear
formas irregulares —rocas, etc—, simplemente haciéndole unos cuantos cortes aleatorios a un
bloque cúbico.
MANIPULAR VÉRTICES:
Otra opción interesante que nos brinda Worldcraft es la de mover individualmente cada vértice
de un bloque determinado. Esto nos da mucha libertad a la hora de crear formas complejas y
adaptar los bloques a nuestras necesidades.
Así que seleccionamos el bloque que queramos modificar, y clicamos en el icono de "Editar
vértices", situado en la barra de herramientas de la izquierda, el primero empezando por abajo.
Inmediatamente veremos los vértices que lo componen —marcados con cuadritos blancos—, y
las aristas —cuadritos amarillos—. Nos encontraremos con algo así:
En la vista en 2D. En la vista en 3D.
Como ya habréis adivinado, para mover un vértice basta con arrastrarlo con el ratón,
manteniendo pulsado el botón izquierdo. Lo mismo se aplica a las aristas —puntos amarillos—:
Moviendo un vértice. Moviendo una arista.
Como se aprecia en las imágenes anteriores, el punto correspondiente al vértice o cara que
estemos moviendo en un momento dado aparecerá marcado en rojo.
Y otro aspecto importante de la edición de vértices: podemos añadir nuevos, lo que en la
práctica supone dividir una cara de nuestro bloque en dos mitades. El método es seleccionar la
arista que nos interese —punto amarillo—, y pulsar a continuación [CTRL] + F.
Por ejemplo, aquí lo podemos ver:
A: Seleccionamos la cara que deseamos dividir —la de la izquierda—.
B: Pulsamos [CTRL] + F. Aparece un nuevo vértice, y la cara se divide en dos partes
iguales.
C: Ahora podemos modelar el bloque a nuestro antojo...
Por último, comentaré un pequeño detalle. Antes de que os lancéis a crear brushes extraños,
añadiendo montones de vértices nuevos y dándoles formas imposibles, hay que tener en cuenta
que no todo es válido. Hay ciertas formas que causarán fallos visuales durante el juego, o que
incluso el QBSP no compilará (ver el capítulo Compilando el nivel).
A grandes rasgos, se podría decir que las concavidades presentan problemas. Un ejemplo simple
lo tenemos en la imagen de la derecha; en este caso, el bloque azul no produce errores de
compilación, pero posiblemente cause algún pequeño defecto visual cuando juguemos el mapa.
Este tipo de formas —aberturas, huecos, ángulos interiores, etc— siempre resulta mejor
construirlas juntando varios bloques.
En el manual de Quakeworld tratan el asunto de una forma más clara y tajante. Así, imaginemos
una línea que atraviesa un bloque determinado de parte a parte. Si esta línea hipotética cruza
más de dos caras del mencionado bloque, éste podría considerarse inválido o problemático. Esto
sólo ocurriría en bloques con formas similares al azul del ejemplo, con entrantes y salientes... En
cubos o columnas es imposible que una línea recta atraviese más de dos caras; geometría
elemental, vamos.
SUBSTRACCIÓN O CARVING:
Sí, el famoso carve, amado y odiado a la vez por los creadores de mapas... Esto consiste en
sustraer —eliminar— de un bloque determinado el volumen ocupado por otro, que es el que
tenemos seleccionado. Así, aquí participan dos brushes; uno que agujerea, y otro que es
agujereado —vale, es una explicación chapucera, pero se entiende, ¿no?—.
Bueno, como siempre, un buen ejemplo vale más que mil palabras —en él, después de efectuar
el carve Worldcraft dividiría automáticamente el bloque azul en varios brushes, para mantener
siempre una geometría correcta—:
A: Nuestros dos protagonistas serán el bloque cuadrado de color azul y el cilindro rojo. Con
éste último crearemos un hueco en el centro del primero.
B: Empieza la diversión; así que movemos el cilindro rojo hasta que éste atraviesa el bloque
azul, como se ve en la figura...
C: Y ahora pulsamos sobre el icono mágico de "substraer" (carve), que tenemos en la barra de
herramientas de arriba, la horizontal. Retiramos el cilindro a un lugar dónde no moleste... Y ya
tenemos el resultado; un agujero en el bloque azul con la forma del cilindro.
Un invento magnífico, ¿verdad? Nadie lo duda; las posibilidades que ofrece esta herramienta a la
hora de crear escenarios extraños y retorcidos son ilimitadas. Pero como todo en esta vida, el
carve tiene sus "daños colaterales".
Hay que trabajar con mucha precaución con él, y usarlo sólo cuando no haya más remedio. Es
muy frecuente que la geometría creada de este modo produzca errores al compilar el mapa,
supongo que debido a las limitaciones del motor de Quake y a las del propio Worldcraft. Por lo
tanto, mi consejo es que evitéis utilizarlo siempre que os sea posible; al fin y al cabo, la mayoría
del trabajo puede hacerse con otros medios...
TUTORIAL WORLDCRAFT: NUESTRO PRIMER MAPA II(SALAS, PASILLOS, ESTRUCTURAS)
¿Recordáis nuestro anterior mapa de ejemplo? Sí, el que creamos unos capítulos más arriba; la
habitación cuadrada con el pilar en medio... Bueno, pues ahora vamos a mejorarlo un poco;
crearemos una segunda habitación y un pasillo que las conecte. Esto implica cambiar el tamaño
de unos cuantos bloques y añadir otros nuevos, y os vendrá muy bien para acabar de entender
el funcionamiento básico del Worldcraft.
Así que pongámonos manos a la obra.
¡QUIERO SALIR DE AQUÍ!
Primero abrimos el editor y cargamos el ya mencionado mapa; sí, la habituación cuadrada y su
famoso pilar. A estas alturas está más visto que los capítulos de El Equipo A, pero puede ser útil
recordarlo para orientarnos mejor. Así que echemos un vistazo a la faena, tal y como la dejamos:
El pasillo se abrirá en la pared de la izquierda; así que hay que abrir un hueco en ese muro
impenetrable... Y sin usar el carve, que no es muy fiable para estas cosas. Por lo tanto, el método
es el siguiente:
Lo primero, fijamos la escala de la cuadrícula en 64 unidades. A continuación seleccionamos el
bloque correspondiente —o sea, el que forma dicha pared—, y reducimos su tamaño, arrastrando
desde arriba —como ya se explicó en Nuestros amigos los brushes — hasta que sólo mida cuatro
cuadros de longitud. El resultado es que ahora gran parte de ese lado de la habitación se abre al
vacío exterior.
El próximo paso consiste en crear otro bloque de idénticas proporciones (cuatro cuadros de
largo y uno de ancho), pero emplazado en la esquina de arriba. Esto podemos hacerlo
manualmente, clicando en el icono de "crear bloque" y dándole las dimensiones y texturas
oportunas; o bien, mucho más fácil, copiando el que ya hemos preparado. Así que, como lo
tenemos seleccionado —y si no, lo hacemos—, basta con pulsar la tecla [MAYUSC.] mientras lo
arrastramos a la posición que nos interesa, como si sólo quisiéramos moverlo... Y mágicamente
aparecerá un segundo bloque en el lugar indicado.
Sea cuál sea el método, ahora deben haber dos bloques, uno a cada lado, que sólo dejan un
hueco en el centro abierto al vacío exterior. Bien, ese hueco será la entrada al futuro corredor.
Sin embargo, sucede que es demasiado alto... El pasillo que deseamos construir tendrá unas
dimensiones cotidianas, nada del otro mundo, para que el soldadito de Quake no se sienta
abrumado al recorrerlo. Así que necesitamos un tercer bloque que tape parte de ese espacio, y
deje libre solamente la entrada de lo que será el corredor... Así leído, todo esto parece
complicado, pero visto en imágenes el proceso se nos revela en toda su sencillez:
Como veis, nada del otro mundo; se trata de ir añadiendo y modificando bloques hasta lograr el
resultado deseado..., en este caso, deberíais obtener algo parecido a la imagen D.
Y ahora continuaremos construyendo el pasillo en sí.
EL CORREDOR DE LA MUERTE
Lo primero que necesitamos es un brush para el suelo, que además nos servirá para ir dándole al
pasillo unas dimensiones concretas. ¿Que cuáles son éstas? Bueno, diez cuadros de longitud y
dos de anchura no quedarán mal... También podemos colocarlo un cuadro más alto que el suelo
de la habitación; y de este modo el jugador tendrá que subir un par de escalones para llegar
hasta él. Por ejemplo:
A continuación añadimos dos bloques más, que serán las paredes laterales del corredor.
Podemos seguir trabajando como hasta ahora, con la cuadrícula de 64 unidades —no es algo
muy refinado, pero para lo que estamos haciendo ahora basta—, o reducirla a 32, para hacer los
bloques más estrechos... Esto va a gusto del consumidor.
En realidad la colocación de los distintos bloques que cierran un espacio no importa demasiado,
siempre que ese espacio quede efectivamente cerrado. Así, aquí podríamos poner los dos
brushes que harán de paredes a ambos lados del suelo, o sobre él —en éste último caso el
pasillo quedará más estrecho, y si utilizamos bloques de 64 unidades de grosor ni siquiera habrá
pasillo—. En este ejemplo, evidentemente, nos conviene más la primera solución.
Como se aprecia en las imágenes anteriores, para las paredes he decidido utilizar la cuadrícula
de 32 —y por eso son más finas que el suelo—; pero tampoco es un detalle que tenga mayor
importancia.
Y por último, el techo. Éste podríamos situarlo a la misma altura que el dintel de la entrada al
pasillo... Y de este modo obtendremos un corredor cuadrado, de 128 unidades de anchura y
otras 128 de altura; en la vista 3D del Worldcraft puede parecer muy poca cosa, poco más que
una galería para ratas, pero se trata de una sensación engañosa.
Y ahora, a colocar texturas... Lo ideal sería que no desentonaran mucho con la habitación que ya
hicimos en su momento, pero bueno, cada cual tiene sus gustos.
Yo me he decidido por darle a las paredes del pasillo el mismo aspecto que lucen las de la sala
(textura metal4_4); cosa que, ya de paso, también he hecho con el escalón que conduce al
corredor. Para el suelo, unas sucias baldosas metálicas como las que vemos en la textura cop2_1
se me antojan una buena elección. Y para el techo, también metal corroído, pero más oscuro; por
ejemplo, cop2_5.
En mi ordenador, la cosa se ve tal que así (las líneas azules corresponden a los bloques
empleados en el pasillo; suelo y techo aparecen en rojo porque están seleccionados):
UNA SEGUNDA HABITACIÓN:
Sí, el extremo del corredor, tal y como lo hemos dejado, se abre al negro vacío exterior... Pero
esto es así porque a continuación añadiremos una segunda sala, de proporciones similares a la
que ya creamos en Nuestro primer mapa. Después de haber construido el pasillo esto no debería
presentar ningún problema; la forma de trabajar, al fin y al cabo, no deja de ser la misma.
Como ya he mencionado arriba, ambas habitaciones tendrán el mismo tamaño. Y de hecho, a la
hora de añadir los bloques necesarios las opciones de "copiar" y "pegar" pueden ahorrarnos algo
de trabajo.
Empecemos seleccionando el suelo de la primera habitación. Luego pulsamos la tecla
[MAYUSC.], y arrastramos el bloque con el ratón —manteniendo pulsado el botón izquierdo—
hasta el otro extremo del pasillo, dónde irá la nueva estancia. Cuando el bloque elegido se
encuentre en el lugar deseado, soltamos el ratón y..., ¡sorpresa! Ya tenemos una réplica exacta,
textura de baldosas incluida.
Este nuevo suelo aparecerá bastante por debajo del nivel del pasillo —habrá una diferencia de
64 unidades entre ambos—, así que podemos subirlo 32 unidades. Con esto quedará un escalón
similar a los que hay en la primera habitación:
Podemos realizar la misma operación para crear el techo, colocando una copia del bloque del
suelo en la posición correspondiente. Bueno, para cambiar un poco haremos esta segunda
habitación un tanto más baja que la primera; así que el techo quedará esta vez a solamente 64
unidades por encima del corredor.
¿Y las paredes? Pues nada, las colocaremos siguiendo el método acostumbrado. Las cosas sólo
se complican un poco con la pared en la que se sitúa la salida del corredor; aquí necesitaremos
tres bloques, como ya vimos al principio de este capítulo, cuando creamos en la primera
habitación la entrada del pasillo. Otra alternativa sería hacer más altas paredes del corredor, y
más grueso el techo de éste, de tal modo que el hueco existente entre la salida del pasillo y el
techo de la habitación quede tapado... De todas formas, a mí me gusta más la primera opción.
Como siempre, hay que tener cuidado para que la sala que estamos construyendo quede
perfectamente cerrada. Pero a estas alturas es algo que ya se da por supuesto, ¿no?
Bueno, pues aquí podéis ver lo que hemos ido haciendo hasta ahora:
Evidentemente, esto no puede quedarse así: necesitamos unas texturas que estén en armonía
con el resto del escenario y que luzcan creíbles. Y a eso vamos a dedicarnos en este momento.
Para las paredes, podemos decantarnos de nuevo por la textura metálica que hemos ido usando
hasta ahora, metal4_4; vale, no es muy original, pero se trata de un mapa de ejemplo,
¿recordáis? Pues eso; usando el botón de "aplicar texturas cara por cara" está hecho en un
periquete. Basta con seleccionar una de las paredes del pasillo, y copiar su textura a las de la
habitación con simples pulsaciones del botón derecho del ratón.
Respecto al techo... Bueno, tampoco nos calentaremos mucho la cabeza; la textura city4_2, que
ya empleamos en la primera habitación, no queda nada mal; y de todas formas, nadie se va a
fijar en ella.
LUCES...
Pues no, no hemos terminado todavía... Antes de ponernos a compilar el mapa con entusiasmo,
hacen falta fuentes de luz que iluminen las nuevas áreas que hemos añadido. Y ya de paso,
también modificaremos las antorchas que pusimos en el capítulo de Nuestro primer mapa,
puesto que la estancia quedaba demasiado oscura.
Bueno, empecemos por el principio. Seleccionemos las dos entidades que corresponden a las
antorchas —usando [CTRL] + el botón izquierdo del ratón—, situadas a ambos lados de la
columna. Una vez marcadas, clicamos sobre cualquiera de ellas, en las vistas en 2D, con el botón
derecho del ratón. Del consabido menú emergente que aparece, nos interesa la última opción:
Properties. Y obtendremos un cuadro de diálogo, cuya función es la de permitirnos modificar las
características de las antorchas.
En este caso, su intensidad de luz, que es lo que nos interesa:
Probablemente, el atributo Brightness tendrá un valor de 200, que es el que suele asignarse por
defecto a los focos de luz recién creados. Podemos aumentarlo hasta 300, por ejemplo. Valores
más altos quizás se traduzcan en una luminosidad demasiado estridente para esa habitación...,
pero ¡hey!, allá cada cuál con sus gustos.
Por otra parte, en Appearance podemos escoger entre distintos tipos de luz. El valor por defecto
es normal, que hace referencia a una luz fija, sin variaciones de intensidad; se trata del que
emplearemos habitualmente. No obstante, existen otros tipos de iluminación. Por ejemplo, los
valores que contienen la palabra pulse hacen referencia a luces oscilantes; strobe implica
parpadeos regulares...
En el caso de nuestras antorchas, lo ideal sería dejar el valor de Appearance en alguna de las
opciones flicker. Y mejor todavía si asignamos a cada una un valor distinto. De este modo, una
de las antorchas tendría en su Appearance la opción Flicker A, y la otra se quedaría con Flicker B.
Así conseguimos el resultado más realista posible; dos fuentes de luz que centellean
aleatoriamente, y cada una a su ritmo..., vamos, lo que se espera de dos antorchas.
La segunda habitación también necesita luces. Pero ahora probemos algo diferente; ¿qué tal dos
antorchas, una a cada lado de la entrada? Y uno de los efectos más recurridos en los mapas de
Quake; ¿por qué no colocarlas dentro de un par de pequeñas jaulas de metal? Con ello, de paso,
se consiguen crear contrastes de luz muy sugerentes. También es un buen modo de disimular
una arquitectura demasiado simple, dado que las sombras de las jaulas proyectadas en las
paredes llenan el decorado de una forma muy efectiva.
Parece difícil, pero con lo que ya sabemos a estas alturas del tutorial podríamos hacerlo sin
problemas. Para dejar las cosas más claras, en esta imagen se aprecia qué es lo que se pretende
aquí exactamente:
¿Interesante, no?
Bueno, daré unas cuantas indicaciones para que el resultado en vuestros mapas sea el más
parecido posible al del ejemplo. Así, cada una de las dos entidades que representan a las
antorchas está emplazada a 96 unidades del suelo de la habitación (el de baldosas), y a 64
unidades de la entrada del pasillo. Para situarlas en su lugar con exactitud vais a necesitar
reducir la escala de la cuadrícula (grid), dejándola en 8 unidades.
Respecto a las "jaulas", pues ya lo veis; se trata simplemente de unos barrotes cruzados de color
azul. Miden 8 unidades de grosor y les he asignado la textura wmet3_3. ¿Y cómo están
construidas? Pues realmente no hay mucho misterio; varios bloques cuadrados, reunidos para
componer la forma deseada. En concreto, son siete para cada "jaula", como puede apreciarse en
el esquema que aparece a la izquierda.
En realidad la única dificultad que tiene esto es que se trata de una labor que requiere un poco
de precisión; pero nada que no pueda remediarse con un buen zoom y una cuadrícula lo
suficientemente pequeña (de 8 o incluso 4 unidades).
Una vez completada la primera jaula, sentiréis la tentación de comenzar con la segunda, sin
más... ¡Pues no! Usemos la cabeza..., y las fantásticas opciones de "copiar" y "pegar" que nos
ofrece el Worldcraft, que para eso están.
Esto puede resumirse en dos pasos. Primero, seleccionamos los siete pequeños bloques que
forman la primera jaula, y los agrupamos. Esto puede hacerse de varias formas. Por ejemplo,
clicando sobre ellos con el botón derecho del ratón, en una de las vistas en 2D, y seleccionando
Group en el menú emergente que aparecerá. O bien, utilizando el icono de "Agrupar" de la barra
de herramientas... Sea como sea, los bloques agrupados se comportarán de ahí en adelante
como un único brush.
Y segundo, copiamos el grupo de bloques al lugar deseado, como ya hicimos en su momento
para construir la segunda habitación. Ya sabéis, el secreto está en arrastrarlo con el botón
izquierdo del ratón mientras mantenemos pulsada la tecla [MAYUSC.].
Por último, nos queda el pasillo. ¿Qué hacer con él? Pues yo he decidido colocar una serie de
pequeñas luces en el ángulo que forma el techo con una de sus paredes, separadas a intervalos
regulares. La idea es más o menos ésta:
Bien, ¿cómo están hechos esa especie de triángulos? Pues mire usted, para estas cosas tenemos
la herramienta de cortar bloques o Clip Tool, que ya vimos anteriormente —en el capítulo de
Nuestros amigos los brushes—.
Cada una de las cuatro lámparas es en realidad un bloque cuadrado de 32 x 32 unidades, y
otras 16 unidades de grosor. A este brush se le corta la parte sobrante, de tal modo que nos
queda un nuevo plano diagonal, mirando hacia el pasillo. Nada que requiera grandes esfuerzos:
Luego sólo hay que repartir a intervalos regulares varios de estos bloques, a lo largo de todo el
pasillo. En el ejemplo son cuatro, colocados a una distancia de 128 unidades unos de otros.
Respecto a las texturas, he utilizado wizmet1_2 como base y sliplite en el plano diagonal, el
que se supone que contiene las luces en sí. A esta última textura le he dado una escala reducida
(0'50 x 0'50) para que encaje a la perfección.
Ahora hay que añadir una entidad para cada foco de luz, de tipo light. Los situaremos muy cerca
de la cara inclinada de los bloques correspondientes, pero sin que lleguen a tocarlos. Algo como
lo que se ve a continuación, en la siguiente imagen:
En efecto, los cubos morados son las entidades de tipo light que necesitamos aquí; al contrario
que las antorchas que hemos utilizado hasta ahora (light_torch_small_walltorch), se trata de una
fuente de luz genérica, que no muestra ningún objeto concreto al jugar el mapa.
A estas luces podemos asignarles un valor de 150 a su atributo Brightness... Y lo demás
dejémoslo en sus valores por defecto. El resultado será una iluminación tenue en todo el
corredor.
ALGUNOS RETOQUES:
¿Habéis compilado ya el mapa? ¿Lo habéis probado? Es un poco gris y bastante soso, pero no
está mal, ¿no? Bueno, probablemente os habréis percatado de un defecto incómodo; los
escalones que conducen de ambas habitaciones al pasillo resultan demasiado altos, y hay que
subirlos a saltos. Y es que 32 unidades son cerca de la mitad de la estatura del marine de
Quake... Así que hay que remediar esto.
Podría hacerse de muchas formas, pero la más obvia quizás sea añadir algunos pequeños
bloques de 16 unidades de alto, a modo de escalones suplementarios; por ejemplo, maderos
que alguien hubiese dejado ahí para moverse con más facilidad, como se hace en las entradas
de algunos garajes y cuadras con bordillos grandes.
Para esto, la textura wizwood1_5 queda estupendamente, y se integra bastante bien con el
entorno circundante; aunque precisamente en lo que respecta a texturas de madera Quake da
mucho dónde elegir. En principio sólo harían falta tres de estos maderos; dos en los escalones
que conducen de la primera habitación al pasillo, y uno en la segunda sala. Como siempre, mejor
una imagen que mil palabras:
Y ahora sí; ya podemos correr fácilmente de una punta a otra del mapa... Compiladlo de nuevo, y
nada, a disfrutarlo. Podríamos añadir algún enemigo, pero estoy seguro de que a estas alturas ya
conocéis el modo; basta con colocar entidades del tipo monster_... dónde deseemos.
Pues hasta aquí este capítulo. Si habéis comprendido todo lo anterior, ¡enhorabuena! Ya sabéis
casi todo lo necesario para construir mapas de Quake; a partir de aquí, el asunto es ya cuestión
de imaginación y "horas de vuelo". Por magnífica que sea la arquitectura de un nivel, al final el
asunto se reduce a jugar con bloques y luces.
Sólo quedaría tratar algunos aspectos sobre las entidades, que nos permitirán construir puertas,
elevadores y otras estructuras móviles... Y esto será en los siguientes capítulos.
TUTORIAL WORLDCRAFT:ENTIDADES Y OBJETOS MÓVILES (I)
Hasta ahora hemos aprendido una parte, la más sencilla, de lo que puede hacerse con entidades;
colocar luces, monstruos, etc. Pero hay más. ¿Cómo construir puertas? ¿Juegos de palancas?
¿Ascensores...? Pues esto es lo que veremos a partir de ahora.
Antes de seguir, una pequeña explicación teórica. En los capítulos anteriores hemos trabajado
con bloques y entidades por separado. Pero para crear nuestros objetos móviles tendremos que
hacer algo nuevo; convertir bloques en entidades —en realidad, la traducción literal sería "atar
bloques a entidades", cosa que, al menos para mi gusto, suena muy confusa—.
Esto es sencillo; preparamos a nuestro gusto el bloque —o grupo de bloques— que queramos
transformar, lo seleccionamos y, en cualquiera de las vistas en 2D, pulsamos sobre él con el
botón derecho del ratón. En el menú emergente escogemos la opción Tie to Entity..., y ya lo
tenemos. En fin, ahora lo veremos en un ejemplo.
CREANDO UNA PUERTA:
Volvamos a nuestro feo mapa de pruebas, el de las dos habitaciones conectadas por el pasillo.
Vamos a colocar una puerta, que se abra cuando nos acerquemos a ella.
Para ello, creamos un bloque de 32 unidades de grosor, justo en el centro del corredor; dicho
bloque lo cerrará completamente, desde el suelo al techo. A continuación, podemos asignarle
una textura metálica; yo, por ejemplo, me he decantado por comp1_1:
Sí, se ve macizo e imponente... Pero bueno, a lo que vamos; ahora seleccionemos el brush que
acabamos de construir. Aparecerá marcado en rojo, como de costumbre —ver la imagen de
arriba—. Luego, como ya comenté al principio de este capítulo, clicamos sobre él con el botón
derecho del ratón, de modo que aparezca el menú contextual... Y en él seleccionamos la opción
de Tie to Entity.
Esto no termina aquí, vaya. Ahora tendremos un cuadro de diálogo, en el que deberemos
especificar las propiedades de la entidad que vamos a crear con este bloque.
¿Dijimos una puerta, no? Pues lo primero es modificar el valor de la etiqueta Class, en la pestaña
Class Info. Por defecto, éste será func_wall, que haría referencia a un bloque normal, sin
características especiales; evidentemente no nos interesa, así que lo cambiamos por func_door,
un poco más arriba en la lista emergente...
Y mágicamente nos aparecerá una lista con las propiedades de esa puerta que podemos ajustar,
como ya hicimos anteriormente con las antorchas (véase el capítulo anterior, Nuestro primer
mapa II: Salas, pasillos, estructuras).
Bien, como la puerta se abrirá hacia arriba, en el recuadro de Angle ponemos el valor Up; aquí
también se admiten valores numéricos (de entre 0 y 360), y de hecho podríamos usar 90 o 270 si
quisiéramos que la puerta se apartase hacia un lado del pasillo; pero ahora no nos interesan.
El atributo Name lo dejaremos en blanco; en realidad sólo deberíamos preocuparnos por él si
quisiéramos que la puerta se abriese con un botón o un activador, y no es éste el caso. Speed
indica la velocidad a la que se moverá nuestra puerta, en unidades por segundo; un valor entre
100 y 150 sería bastante adecuado.
En Sound escogeremos el sonido que hará el bloque al desplazarse. No hay mucho dónde elegir,
es cierto, y teniendo en cuenta que la nuestra será una puerta metálica, machine quedará muy
convincente. Otro sonido que probablemente daría buenos resultados es el llamado screechy
metal.
Delay before close indica precisamente eso; el tiempo que la puerta permanecerá abierta antes
de volver a cerrarse. El valor por defecto es de 4 (cuatro segundos), pero podemos cambiarlo a
voluntad.
Hay otros atributos interesantes, como Damage inflicted when blocked —ideal para aniquilar a
jugadores desprevenidos—, o Message when triggered —muestra un mensaje en pantalla al
activar el objeto móvil en cuestión—; pero ya los comentaremos más adelante. Ahora podéis
compilar el mapa y ver nuestra puerta en acción...
AJUSTANDO EL MOVIMIENTO; EL ATRIBUTO LIP:
Os habréis dado cuenta que antes, al preparar nuestra puerta, hemos pasado de puntillas sobre
un atributo llamado Lip, del que no he comentado ni media palabra... No obstante tiene su
importancia, así que aquí explicaré brevemente cuál es su cometido.
Bien, Lip nos servirá para modificar la distancia a la que se desplazará nuestro bloque móvil —
una puerta, un elevador, etc—. Si, como es habitual, tiene un valor de 0 (cero), éste recorre
una distancia equivalente a su propio tamaño.
¿Qué quiero decir? Sencillo. Nuestra puerta anterior era un bloque de 128 unidades de alto y
otras tantas de ancho, por lo que su movimiento normal serían precisamente 128 unidades —
en verdad son unas pocas menos, dado que las puertas suelen quedarse sobresaliendo
ligeramente de las paredes o techos adyacentes—. Pero esto puede cambiarse.
Por ejemplo, asignándole a Lip un valor de 32, la puerta se desplazará 32 unidades menos de lo
que lo haría normalmente. Con un valor de 64 serían 64 unidades, lo que en la práctica
equivaldría a dejar abierta la mitad del pasillo solamente. Podríamos utilizar números negativos
(-32, -64, etc), con el efecto contrario; añadir movimiento extra.
¿Y si tuviéramos una puerta rectangular de 128 unidades de altura y 64 de ancho? Con un valor
de 0 en Lip sucedería lo siguiente: si dicha puerta se abriera hacia arriba o hacia abajo, se
desplazaría 128 unidades —un poquito menos, en realidad—. En cambio, si se abriese
lateralmente, serían 64.
En fin, no se trata de una opción muy intuitiva, pero tampoco resulta difícil entender cómo
funciona. Y si no, siempre queda el clásico "ensayo y error" hasta lograr los resultados deseados.
PUERTAS DOBLES:
Y ahora os preguntaréis, ¿y las puertas de doble hoja? No entrañan mayor dificultad; se trata de
dos puertas simples, como la que acabamos de construir, que se abren en ángulos opuestos. No
hace falta nada más; las entidades de tipo func_door activan automáticamente a otras de la
misma clase que se encuentren junto a ellas. No obstante, esto podría evitarse editando sus
propiedades; en la pestaña flags, activamos la casilla Don't link.
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 estábais 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:
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
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 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:
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):
É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:
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:
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.
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.
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.
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:
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 construímos 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":
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:
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.