Proyección isométrica:

Creando mundos en 3D

INTRODUCCIÓN

El mundo en el que vivimos está formado físicamente por tres dimensiones. Alto, ancho y profundidad son las que definen nuestro entorno (la del tiempo se la dejamos al señor Hawking). En el ámbito estricto de la informática, en cuanto a gráficos, tenemos únicamente dos dimensiones alto y ancho ya que las pantallas son planas, resultando muy complicado representar imágenes en tres dimensiones.

Fotograma 3D generado por ordenador de la película Tron de 1982

Aunque desde hace años existe hardware dedicado a generar imágenes 3D, esto no es más que una implementación física con la que se realizan todos los complicados cálculos necesarios, eso si, a una velocidad cada vez más elevada conforme avanza la tecnología. Por eso, antes de la aparición de estas tarjetas gráficas dedicadas todo se calculaba a mano, es decir, con código de programa. Y antes de la aparición del moderno hardware 3D esto estaba reservado únicamente a potentes equipos dedicados, que realizaban todas las tareas con bastante esfuerzo y tiempo. Un ejemplo típico de ello son las imágenes generadas por ordenador en películas de hace años, como por ejemplo Tron de 1982, con una buena calidad para la época, pero fácilmente superable hoy en día, incluso en un entorno doméstico no profesional.

Por supuesto las máquinas de 8 bits son capaces de realizar toda la parafernalia de cálculos necesarios para ello, pero con una potencia y unos límites ridículos que provocaría unos enormes tiempos de ejecución al generar escenas tan complicadas. Todo ello sin contar, en comparación, con sus tristes calidades gráficas.

Pero no todo está perdido. Si nos limitamos a representar una proyección 3D con cámara fija, en la que no varía el ángulo de visualización, se pueden generar gráficos 3D con más o menos potencia. Para hacerlo tenemos dos posibles técnicas:

Toroide realizado con técnica de malla

1- Calculando los vectores: Como en cálculo se defienden relativamente bien la mayoría de los micros de 8 bits, estos pueden representar ciertas formas en 3D con lo que se conoce como técnica de relleno de malla, en las que unas líneas unen los vértices (vectores) calculados por el programa que representará la superficie del objeto como si de una alambrada se tratara. El límite estará en la velocidad de los cálculos de la CPU y del sistema gráfico. Normalmente no existe algún tipo de ayuda para el dibujado por parte del motor gráfico, aunque estas sean técnicas muy básicas, debido a que antiguamente resultaban muy caras implementaciones hardware de este tipo, motivo por el cual no se incorporaban habitualmente en los sistemas domésticos; todavía quedaba mucho tiempo para que se comercializaran adaptadores gráficos con estas características, hacia finales de los 80 y principios de los 90 en plataformas de 16 bits. Únicamente disponen de unas Primitivas los MSX2 y poco más (sin contar otros de 16 bits como Commodore Amiga o los PC con las primeras VGA), pero como su velocidad no es muy elevada tampoco desarrollan una gran potencia; por eso a penas fueron explotados comercialmente.

2- Gráficos predibujados: En este caso los diseños están creados en formato plano bitmap o similar, permitiendo colocar cada porción de estos en el lugar correspondiente de la pantalla. Así a modo de "collage" se va formando la imagen con estos patrones, tiles en inglés, a los que se les ha dotado de la perspectiva adecuada, como si de un juego de construcción se tratase. Esta técnica ha sido la más utilizada en videojuegos durante mucho tiempo antes de la aparición del hardware especializado, ya que es igual a la de gráficos en 2D tradicional (conocida como "técnica de patrones") debido a su mayor velocidad, sobre todo en aquellos sistemas que tienen cierto apoyo del hardware como MSX o Comodore 64. Algunas consolas también estaban basadas en esta tecnología, como la NES o la Master System.

El segundo tipo será nuestro caso. Voy a mostrar como crear un escenario 3D con proyección isométrica usando para ello la técnica de patrones. Pero antes de continuar debo aclarar algunos conceptos básicos.

1.- ISOMETRÍA: IMÁGEN 3D SIMULADA

Cuando escuchamos la palabra "isométrico" enseguida pensamos que se trata de un concepto muy complicado. Y en cierto modo lo es. La isometría, o más correctamente proyección isométrica, no es más que una de tantas técnicas de representación de un escenario 3D sobre un plano.

Para explicar esto hay que saber que nuestra visión ocular tiene una percepción cónica de la imagen. Esto quiere decir que la perspectiva de la visión real dibuja en el terreno unas imaginarias líneas, conocidas como líneas de fuga, que convergen en nuestros ojos formando un cono frente al observador.

Visión cónica

Esto provoca que los objetos más alejados se vean más pequeños y los más cercanos parezcan más grandes. Sabiendo esto se puede crear una técnica que permite plasmar un dibujo en perspectiva sobre un plano simplemente marcando de antemano las líneas de fuga que serán las que definan la alineación y las dimensiones de los objetos; así cada tamaño será determinado proporcionalmente respecto a la distancia de separación con el observador.

La imagen resultante es bastante creíble, pues imita de una manera muy convincente la realidad de las formas y tamaños, aunque en la práctica puede resultar algo artificial el aspecto general de la imagen.

La ciudad ideal, de Piero della Francesca, es un ejemplo de perspectiva realizada con líneas de fuga.

Pero hay ocasiones en las que se hace necesario representar la imagen de una forma diferente a la perspectiva natural. Aunque de una manera artificial, esta representación puede ser creada con una alineación cilíndrica (más bien cuadrada) y no cónica, más conocida como Proyección paralela, que corresponde a un grupo de proyección en perspectiva al que pertenece la isometría.

Líneas de fuga en proyección paralela

Esta técnica da como resultado una imagen 3D en la que todos los objetos son del mismo tamaño independientemente de la distancia al observador. En representaciones técnicas tiene la ventaja de definir de una manera inteligible para un observador las formas, aristas y ángulos del objeto como no lo hace ningún otro método, permitiendo incluso medir con exactitud sobre el propio plano. Así los cálculos son más sencillos de realizar pues con trazar líneas de fuga paralelas tenemos el campo de proyección de cualquier objeto que no variará en tamaño de ninguna manera.

En cambio en el campo artístico no suele utilizarse cuando se tratan representaciones de aspecto realista, usándose en su lugar las tradicionales líneas de fuga cónicas.

Ángulos en proyección isométrica

Al iniciar un proyecto de estas características, lo primero que hay que tener en cuenta es determinar los ángulos correctos acorde a esas imaginarias líneas de fuga y mantenerlos así en todo momento. Como ya he comentado, hay tres ejes o dimensiones que deben ser proyectadas sobre el plano, con un ángulo concreto para cada uno. En el aspecto técnico existen ciertos estándares, cada uno de ellos con su denominación y valores concretos. Estos pueden tener cualquier ángulo, siguiendo unas reglas geométricas básicas, que determinarán la perspectiva de observación; así que si hablamos de "proyección isométrica" o "perspectiva isométrica" los tres ángulos estarán definidos exactamente a 120º.

Como digo hay más formas de proyección, pero en ordenadores de 8 bits esta ha sido una de las más utilizadas, por no decir la única.

2.- DISEÑO INFORMÁTICO

Como he indicado antes, esta técnica consiste en trabajar con diseños predibujados, realizados con pequeñas porciones cuadradas o rectangulares de igual tamaño conocidas como patrones o baldosas (tiles en inglés). Todos estos tiles tendrán la misma perspectiva, en este caso isométrica, con lo que se conseguirá un resultado homogéneo en la escena.

Así se dibujará toda la imagen en pantalla formada de pequeñas áreas cuadradas (tiles) similar a un suelo de baldosas. Esta fué una de las técnicas más utilizadas en videojuegos antiguos debido a que frecuentemente estaba apoyada de alguna forma por el hardware, lo que resultaba una gran ventaja para equipos de baja potencia.

Normalmente un modo de texto puro funciona de esta manera, en la que cada uno de los tiles será un carácter que ocupará un espacio concreto dentro de la imagen de pantalla organizada en forma de cuadrícula. Algunos ordenadores cuentan con adaptadores gráficos que permiten modificar el diseño de estos caracteres, pudiendo crear con ellos pequeñas porciones gráficas del escenario tridimensional a representar; incluso los hay que permiten dotar de color a cada carácter, con un resultado final mucho más enriquecedor. Con ello se consigue la llamada técnica de patrones.

Como la distancia no afectará al resultado no hay por qué preocuparse en escalar ningún objeto, pues sería una tarea demasiado pesada sin apoyo hardware; tanto si están cerca o lejos siempre serán del mismo tamaño. Así, los patrones creados podrán ser utilizados en diferentes posiciones en la pantalla sin importar su posición en el espacio 3D. Por ello no son necesarios cálculos adicionales o hardware especializado para realizar tareas de escalado o rotación. Toda una ventaja.

Los patrones pueden ser objetos independientes, como por ejemplo un cubo, o formar parte de un diseño más complejo, como una casa o un puente. Aunque la representación final de estos objetos pueden ser de diferente tamaño, formados por un número variable de patrones, cada uno de estos tiles básicos serán siempre de las mismas dimensiones, pues con frecuencia se hará coincidir su tamaño (o múltiplos) con el soportado por el hardware. Este método ahorrará bastante código de programa y potenciará el rendimiento, motivo por el cuál fue tan utilizado en los ordenadores y consolas de las primeras generaciones.

2.1- Creando la perspectiva del patrón

En los videojuegos de 8 bits se utilizaba tradicionalmente una técnica de diseño que no era realmente isométrica. Si hubiera sido así una linea recta de un cuadrado, por ejemplo, estaría inclinada respecto al ángulo de 120º para crear la proyección correcta. En realidad no lo es por cuestiones estéticas y prácticas. Al tratarse en la mayoría de los casos de bajas resoluciones de pantalla, las líneas formadas por puntos regulares crean un mejor efecto visual que aquellas que no lo son. Y una línea en un plano isométrico es bastante irregular en una matriz digital de una pantalla. Además, dependiendo de cada monitor o TV, la proporción entre el ancho y el alto (aspecto) puede variar, por lo que al final el ángulo no será correcto.

En potentes equipos modernos esto se soluciona con técnicas anti-alias, que atenúan los llamados dientes de sierra y difuminan los resultados con el entorno que los rodea, consiguiendo así un aspecto estético perfecto; pero esto es demasiado esfuerzo para un simple equipo de 8 bits que no dispone del hardware adecuado. En tal caso, para disimular este efecto, se utilizó una técnica ingeniosa, una aproximación al ángulo de 120º que consistía en proyectar las líneas de fuga de manera que al avanzar dos píxeles en horizontal lo hacían uno en vertical. Así se consigue una relación de aspecto 2:1 que fue imitada por todos los juegos que la utilizaron, desde el primer momento en que se desarrolló.

Con esto se proyecta una perspectiva similar a la isométrica pero con mejor resultado visual sin procesado añadido, sobre todo en bajas resoluciones y pocos colores simultáneos, algo característico a la generación de micros de 8 bits. Además se diseñó esta técnica adaptando el tamaño de los tiles al soportado por el hardware, normalmente de 8x8 píxeles, junto a la perspectiva 2:1 correcta. Con ello resultó bastante fácil crear unos diseños que encajaban perfectamente en las resoluciones gráficas de estas máquinas.

En cuanto al diseño, los modelos con líneas rectas son más sencillos de representar con esta técnica, en contraposición a aquellas que tienen líneas curvas o irregulares. Dado que se ha de trazar en perspectiva un diseño plano, generalmente cuadrado o rectangular, es bien sencillo proyectarlo. Veamos un ejemplo:

En la imagen anterior un cuadrado, que puede formar parte de la cara de un cubo, ha sido proyectado en perspectiva con una sencilla técnica. Realizando una copia de las líneas verticales de izquierda a derecha se avanzaba un píxel hacia arriba cada dos puntos horizontales; así los datos copiados del cuadrado inicial son los mismos que en el final, lo que significa que no hay pérdida de información. Con ello se consigue la relación de aspecto 2:1 requerida para los diseños finales.

En este caso el resultado es la cara de un cubo en perspectiva, igual que la opuesta que será realizada con la misma técnica. Para las otras caras, las perpendiculares, realizaremos los movimientos necesarios según su posición, es decir, bajar un píxel por cada dos horizontales. En la imagen anterior se puede observar el efecto sobre un cuadrado, un sencillo ejemplo sin textura.

Pero cuando se proyecta una imagen más elaborada, el resultado gana bastantes puntos. En ocasiones se suelen realizar correcciones ya que visualmente no siempre se consiguen los resultados deseados. Incluso a veces se utilizan técnicas de retoque a mano (pixelart).

La imagen anterior es un ejemplo del resultado de un patrón sencillo. En este caso una figura monocroma es proyectada con esta técnica, dando como resultado la vista en perspectiva.

En el caso de modelos más elaborados, incluso con más colores, el resultado puede llegar a ser realmente espectacular, mucho más si se trata de patrones fotográficos digitalizados previamente.

2.2- Colección de patrones

Con esta técnica se van diseñando fácilmente todos los objetos. Estos formarán parte de una colección de patrones, que serán los utilizados en el escenario. El objetivo es crear una lista o fichero de datos que contenga todos estos patrones diseñados.

Estos patrones se pueden diseñar con un programa de dibujo típico, que permitirá un manejo fácil y rápido. La colocación ha de ser regular en el plano que los contenga, formando una cuadrícula de 8x8 píxeles (u otros tamaños), de manera que el acceso a cada uno de estos sea una tarea sencilla para el juego en cuestión, mediante el uso de un algoritmo.

Utilizando esta técnica el resultado será bastante rápido, incluso para nuestras lentas máquinas de 8 bits. En estos casos el orden en los datos será clave para acelerar los accesos a los diferentes patrones necesitados en cada momento.

Una vez diseñados todos los patrones se podrá empezar a "construir" el escenario, colocando cada uno dentro del espacio plano de la imagen que simulará finalmente la escena tridimensional.

Como programa de dibujo, personalmente, suelo utilizar Paint de Windows que es muy sencillo para hacer pruebas y diseños fáciles. Si se trata de programas 2D, como en mi caso suelo utilizar, se debe implementar manualmente la perspectiva deseada, según la técnica explicada anteriormente. En el caso de otros con capacidad 3D solo nos tendremos que preocupar de indicar los valores correctos para el ángulo de visualización. Incluso se puede crear un sencillo programa que haga este trabajo de manera automática, adaptado a cada necesidad particular partiendo, por ejemplo, de diseños planos. En la imagen anterior se puede ver el resultado del anterior ejemplo usando objetos formados por cuatro patrones básicos de 8x8 píxeles, con un tamaño final de 16x16 píxeles.

3.- PROGRAMANDO ESCENARIOS ISOMÉTRICOS

A la hora de mostrar los objetos en la pantalla debemos tener en cuenta el área que ocupa cada uno. En la imagen anterior de prueba diseñé los tiles partiendo de una pieza base de 32x32x32 pixeles (xyz). Al realizar la técnica de proyección en 3D estos se convirtieron en una imagen plana de 64x64 que será el área cuadrada en 2D que ocupa cada objeto, es decir el tamaño del tile en este caso particular. Podría ser perfectamente válido para un PC o consolas modernas que despliegan una gran resolución y potencia.

Hay que tener en cuenta que alrededor de la imagen del objeto debe crearse un espacio que será transparente (denominado canal Alfa) lo que permitirá visualizar contenidos que estarán ubicados por detrás en la escena, como si una técnica de croma en cine se tratara. Así se crea un mejor efecto de profundidad, en el que los tiles usados simulan no ser simplemente un área cuadrada que borra parte del contenido que ya existía en la escena. Si el sistema no permite manejar la transparencia por hardware, habrá que realizar esta función por software, como puede ser el caso de un ZX Spectrum o un Amstrad CPC. En otros casos se podrá aprovechar esta característica si está disponible por hardware, como en un MSX, Amiga o PC, en el que se ahorra bastante tiempo de ejecución del programa al no necesitar desarrollar esta función con código de programa.

3.1- Los cimientos

Habitualmente, de manera similar a un tablero de ajedrez, se dibuja imaginariamente en el escenario una rejilla con proyección isométrica que, a modo de guía, sirve de suelo para ubicar cada pieza en el lugar correspondiente del escenario. Al colocar un patrón este ocupará uno de estos escaques, es decir, el espacio correspondiente a una baldosa de este suelo. Por tanto, la colocación de los patrones seguirán la alineación marcada por las líneas de la rejilla, a modo de líneas de fuga en una proyección técnica, teniendo en cuenta la correcta ubicación en la pantalla para conseguir así la perfecta unión de los objetos adyacentes. Si todo es correcto, los patrones irán ocultando total o parcialmente aquellas partes de la escena que queden por detrás.


Tradicionalmente, como se muestra en esta imagen, las baldosas que forman este suelo-guía imaginario las encontraremos de color gris claro y gris oscuro (blanco y negro u otras combinaciones) en los programas de diseño de escenarios tridimensionales. Esto permite tener un perfecto punto de vista de la escena en todo momento; como indican las líneas de fuga de la proyección, tienen la particularidad de facilitar al programador la correcta orientación en el espacio tridimensional de la escena, así como la posición exacta del suelo. Posteriormente, una vez que se ha completado el diseño, será sustituido por un motivo adecuado, ya sea hierba, arena, agua, etc, por lo que su utilidad es únicamente en la fase de diseño del escenario.

Todos los patrones que estén por encima de este suelo imaginario serán visibles al ser mostrados en la escena. Por el contrario, todos los que estén por debajo serán tapados con el suelo que se dibuje, salvo si este está abierto total o parcialmente, lo que permitirá ver a través de él los contenidos.

3.2- Montando la estructura

Ahora viene la tarea de "construir" nuestro escenario añadiendo a la escena los diferentes patrones, como si se tratara de un juego de construcciones o un puzzle. Pieza a pieza se completará el escenario en el que interactuarán más tarde los personajes según se muevan por este, determinando los límites de la habitación y las distintas alturas a las que se pueda acceder.

El programador debe tener en cuenta crear un sistema de organización tridimensional de todos y cada uno de los objetos que forman el escenario, que formará algún tipo de estructura ordenada que facilitará su correcta representación. De esta manera será sencillo hacer que el motor del programa sea capaz de mostrar siempre cada objeto en su sitio, incluso permitiendo la rotación del escenario.

Durante el proceso de dibujado, como ya he comentado, al colocar los diferentes patrones hay que tener en cuenta que alguno puede ocultar total o parcialmente a otro que esté por detrás visualmente. Esto puede provocar errores de visualización, es decir, que se oculte una pieza o parte de esta por otra que realmente esté más alejada. Estos errores visuales podrían mermar en gran medida el realismo de la escena. Por ello, para evitar este problema, hay que seguir dos sencillas reglas para la correcta representación:

  1. Los objetos a colocar en primer lugar, serán aquellos que estén en la parte más baja en la escena, es decir, en el suelo según el eje Z (o por debajo de este si el diseño lo contempla) para ir ascendiendo conforme se complete cada piso. Esto es debido al ángulo de visión superior, que hace que los pisos más bajos sean los más alejados al observador.
  2. Para cada uno de estos pisos se comenzará a dibujar aquellos patrones que estén más alejados, es decir desde el fondo hacia el observador o primer plano, siempre de izquierda a derecha (o de derecha a izquierda) hasta completar la planta. También podemos colocarlos por filas siguiendo la coordenada X o Y.
Dos técnicas que establecen el orden de colocación de los tiles en el escenario.


Así, cada vez que un patrón sea añadido a la escena, se tendrá la seguridad de que si oculta parte de otro que ya estaba con anterioridad siempre será aquel que se encuentre más lejos en el plano. Con estas sencillas reglas se evitará la aparición de estos incómodos fallos, teniendo en todo momento el correcto control de la ubicación de los diversos objetos en la escena.

3.3- Macros

Habitualmente se pueden utilizar "macros" para representar objetos en la escena que van a ser repetidos con cierta frecuencia. Esta técnica consiste en crear pequeños listados de patrones individuales que, identificados en el programa con algún tipo de codificación, colocarán en un espacio concreto del escenario un objeto formado por varios de estos patrones; pueden ser de tamaños y formas diferentes, dependiendo del diseño del objeto.

Las puertas, muros, columnas, etc son ejemplos de construcción que en sí mismos constituyen un grupo de patrones colocados en una posición relativa a las coordenadas dadas y que forman objetos más grandes que un simple patrón. Es recomendable que su estructura esté definida dentro del mismo conjunto de datos que contenga las definiciones de los distintos patrones o creadas a partir de código en el programa.

A veces estas macros pueden contener parámetros que condicionan su representación, como la paleta de colores, una puerta o ventana abierta/cerrada, una luz encendida/apagada... Son datos variables que enriquecen el resultado con poco esfuerzo. Con esta técnica se consigue un ahorro bastante considerable de espacio en el tamaño del mapa, ya que con unas pocas macros podemos crear habitaciones completas sin tener que representar todos los patrones uno a uno. Así, un escenario podría tener unas macros para una puerta de entrada, unas ventanas, algo de mobiliario... etc., con lo que con unos pocos datos indicados por dichas macros creamos una habitación entera, que patrón a patrón ocuparía varias veces más.

Algunos ejemplos de utilización de macros son La abadía del crimen, Head over Heals, Batman, etc donde se muestran repeticiones de partes del escenario en distintas habitaciones, como son las puertas, ventanas, columnas, etc. Sin esta técnica el tamaño de estos juegos habría sido tan grande que en muchas ocasiones no se habría podido implementar tal y como se hizo en las máquinas de 8 bits en su momento.

4.- RECOMENDACIONES

Durante el proceso de diseño (y en el de programación) de los diferentes patrones, es recomendable reservar algunos de estos para ciertas funciones especiales, como por ejemplo:

  • Establecer límites del escenario: Unas rocas, vallas, rejas, muros, etc. pueden ser suficientes para indicar de una manera visual que en ese punto concreto no se puede avanzar, que se termina el camino, sobre todo en los bordes del mapa que hacen frontera con la nada o lugares que no son continuación directa y que por tanto no puede ser traspasado. Lo ideal es que se trate de un grupo de patrones concreto, que tiene la característica de impedir el paso más allá de ellos. En ocasiones, dependiendo de las necesidades del juego en cada caso, se hace necesario que un determinado patrón tenga esta función sin tener ninguna representación visual, es decir que sea totalmente invisible, lo que puede dotar de cierto significado especial al desarrollo.
  • Determinar las habilidades de salto de los personajes: Nuestro protagonista puede saltar lo suficiente como para alcanzar plataformas hechas de una sola altura (un patrón de alto por ejemplo), pero, dependiendo de ciertos factores programados en el juego, podría alcanzar mayores alturas con saltos mejorados. En el juego Head Over Heals se determinó que uno de los dos personajes era capaz de saltar mayores alturas y el otro no, lo que añadía unos ingredientes de habilidad y estrategia muy interesantes al juego. Además siempre puede ser necesario la utilización de algún tipo de rampa, que permite, sin saltos, alcanzar mayor altura.
  • Teletransportadores, palancas, botones...: Una serie de objetos que están fijos en el escenario pero que accionan determinados mecanismos o eventos necesarios para el desarrollo de la trama. Se puede utilizar o no este recurso, que permite modificar condiciones en el comportamiento de ciertos aspectos del juego, como abrir puertas, encender luces, acceder a lugares remotos u ocultos, etc.
  • Objetos móviles: Normalmente, en el desarrollo de videojuegos clásicos, los gráficos que están dotados de cierto movimiento como los del protagonista manejado por el jugador, son diseñados con alguna técnica de sprites apoyados con frecuencia por el hardware. Pero como los ordenadores domésticos de los años 80 no disponían todos ellos de este recurso, se programaban con gráficos "corrientes" a base de patrones. Es por ello que ciertas figuras con movimiento pueden formar parte del conjunto de patrones del decorado, que serán diseñados como si de estos se tratase, lo que permite facilmente mantener, entre otros aspectos, el tamaño y la perspectiva correctos. Más tarde, el código del programa se encargará de dotarlos del movimiento y animación necesarios, variando la posición de estos en la pantalla a gusto del programador. Si nos fijamos en los juegos de este tipo realizados para Spectrum o Amstrad, eran así. Incluso los diseñados para MSX, aun disponiendo de recursos hardware para sprites, utilizaban esta técnica heredada de las conversiones directas de Spectrum. En ocasiones se convierte en una necesidad, para evitar así posibles límites que puedan tener los controladores de sprites.
  • Diseñar los patrones por grupos: A la hora de crear el conjunto de patrones es muy recomendable agruparlos por diferentes criterios, lo que hará más fácil su diseño así como su uso desde el punto de vista de la programación del juego. Puede ser útil agruparlos por materiales (de construcción, vegetales, agua...) o por zonas del mapa dónde cambia el estilo de diseño de cada una. En este último caso puede haber sub-divisiones dentro de cada grupo. Cada programador y cada juego puede necesitar unos recursos organizativos diferentes, las combinaciones son muchas, pero lo mejor siempre es mantener un orden lógico de estos.
  • El diseño de los escenarios no tiene que estar basado forzosamente en la idea de habitaciones que son mostradas de manera aislada unas de otras, tal y como hace Head over Heals. Aunque el diseño sea así, la manera de proyectar el escenario en el juego final puede ser distinta, con una habitación completa centrada dónde se desarrolla la acción inmediata, rodeada de porciones de las otras habitaciones adyacentes, colocadas en sus respectivos lugares hasta completar el espacio disponible en la pantalla. Esto da un resultado de continuidad al escenario que simulará ser un mapa completo sin cortes en el diseño. Además facilita la adaptación a diferentes ordenadores con distintas resoluciones de pantalla. La idea de diseñar el escenario por habitaciones dota al juego de una sencillez que permite una óptima gestión con ordenadores poco potentes, pues permite centrar los procesos de cada momento en una pequeña porción del total, sin que estos sean sobrecargados.
Proyección original en Head over Heels.
Simulación de habitaciones continuas.

Cuándo se diseña el mapa de un juego de este tipo, normalmente se crea una matriz (cuadrada o rectangular) con todas las divisiones necesarias que contendrán las habitaciones. Pero el diseño del mapa no tiene por que mantener esa forma cuadrangular, pues en cualquier habitación se puede crear una frontera que no pueda ser traspasada. Así quedan espacios que pueden ser utilizados para otras habitaciones, a las que se podría llegar por otro camino o incluso con transportadores, tal y como hace el juego Head Over Heals. También se pueden crear islas de habitaciones con contenidos determinados. Las posibilidades son infinitas, dotando a nuestro juego de una gran riqueza de diseño.

Otro de los aspectos que hay que tener muy en cuenta es el diseño de cada zona del mapa. Debido a que los ordenadores antiguos están bastante limitados respecto a los actuales, uno de sus puntos flacos son la profundidad de la paleta y número de colores simultáneos. Amstrad CPC, Commodore 64 y MSX2 son capaces de mostrar hasta 16 colores en un juego de estas características, pero Spectrum y MSX, aún pudiendo mostrar hasta 16, no lo harán correctamente con perspectiva isométrica debido a sus limitaciones gráficas. El problema es el attribute clash, que impide el correcto coloreado de los gráficos, sobre todo en perspectiva. Por ello, el diseño de los escenarios debe estar perfectamente planificado teniendo en cuenta las diferentes paletas de colores a utilizar. En ocasiones encontraremos ubicaciones dónde exista una unión entre dos zonas coloreadas de diferente manera, lo que obligará al diseñador a buscar una forma de implementarlo sin quebrantar el límite gráfico en cada caso. Utilizar esta técnica, que colorea de diferente manera cada una de las zonas del juego, aumenta la riqueza visual de este y por tanto la calidad general. Por supuesto no hay que olvidar nunca la faceta de diseño en sí de los patrones, que aumentará en mayor o menor medida la calidad final.

5.- CONCLUSIONES

A partir de aquí el talento de diseño de cada autor es lo que determinará el resultado visual final. El ejemplo de tiles visto antes es una sencilla muestra que sirve para probar formas básicas en un escenario de este tipo, pero los diseños pueden ser bastante más complejos pudiendo crear incluso objetos fotorrealistas para escenas más creíbles, tal y como hacen, por ejemplo, juegos como Diablo o Comandos en PC. Pero todo esto depende fundamentalmente de las capacidades gráficas de cada sistema y de otros recursos.

Si vuestro objetivo es crear juegos, solo quedará programar lo necesario para que uno o varios personajes se muevan e interactúen entre ellos y con el escenario, pero eso es otra tarea más personal para cada programador y cada juego, que merecería un tutorial aparte.

Espero que sirva de ayuda esta sencilla guía, que tiene como único objetivo la introducción a la programación de escenarios isométricos.