Esta última temporada y gracias
a que prácticamente el 90% de los juegos en desarrollo utilizan,
de una forma u otra, un sistema gráfico 3D, hemos estado recibiendo
varias preguntas al respecto de su funcionamiento, pues bien, para no andar
respondiendo cada una de forma aislada vimos más práctico
ir a la fuente del asunto: dar una explicación básica --no
técnica-- y general de lo que hace un engine 3D, en especial
en lo que concierne al renderizado y a los famosos polígonos. Espero
que con este artículo todo quede más claro.
***
Lo
primero que tenemos que hacer es responder a la pregunta ¿qué
es exactamente un engine en términos de un juego de PC o
vídeo-juego en general? Si somos estrictos con el concepto
en si, un engine --dentro de lo que nos concierne-- abarca mucho
más que a un sistema gráfico, ya que incluye aquel sistema
que, dependiendo el tipo de juego, permite definir el comportamiento de
los NPCs o bots (scripting subsystem) al igual que los eventos
que disparan reacciones por parte del juego (trigger events), la
manera en que el contrincante virtual se comporta (el subsistema de la
Inteligencia Artificial que puede venir en varios tipos), etcétera.
En conclusión, un engine viene a ser todo el conjunto de
sistemas y subsistemas --computacionales-- que permiten desarrollar un
juego, esto es más fácil de entender si consideramos que
cuando una empresa ofrece editores y afines, mismos que fueron usados para
crear su juego, cualquier persona interesada tiene todas las herramientas
para crear su propia interpretacion del juego u otro nuevo, i.e. tiene
en sus manos el engine X del juego. De ahí provienen los
famosos
mods.
En este punto valga la aclaración
que normalmente el distribuidor lanza junto con su producto dos cosas,
en principio tenemos al engine X el que básicamente es el
juego en si, y por otro lado tenemos a un editor, este último encierra
al conjunto de herramientas visuales (u otros afines) que permiten una
interpretación/representación humana de las capacidades del
engine,
es decir, sin un editor poderoso, simple y apropiado ni los propios diseñadores
sabrían como realizar el material necesario para el juego
por mas que su engine sea lo mejor de lo mejor. De ahí, también,
que las capacidades del editor, además de las del engine
subyacente, sean clave para saber si podremos crear sólo mapas y
niveles, como en Quake, Starcraft, etcétera o realizar
nuevas adaptaciones como sucede con Half Life. Por ejemplo, Counter
Strike ofrece el mismo entorno gráfico, el mismo nivel de inteligencia
artificial y eventos prediseñados, pero el engine por un
lado y su editor por el otro son lo suficientemente capaces como para que
este juego presente una jugabilidad, si bien equivalente, bastante diferente
de la del juego original. Si bien es cierto que el potencial esta en el
engine
de
Half Life, su editor es lo suficientemente dúctil y completo
como para poder implementarlo desde un nivel superior, es decir, sin hacer
o rehacer el engine.
Ahora bien, sin lugar a dudas, de todo
ese complejo conjunto de elementos con el que un usuario va ha tener más
contacto es con el sub-sistema gráfico, puesto que a través
de este podrá interactuar con el juego y ver que pasa y que no.
De ahí que casi siempre que hablamos de engine, a menos que
el contexto no lo permita, hablamos del sistema gráfico. Por ende
un engine 3D, dentro de este contexto, refiere al sistema gráfico
tridimensional de un juego cualesquiera, y el componente básico
más importante de este es el famoso polígono que viene a
ser la unidad mínima con la que trabaja este tipo sistema actualmente,
a diferencia de otros en los cuales es el pixel. Otro subcomponente importante
es el de renderizado, que es el modulo encargado de interpretar fórmulas
y mapas de bits o estructuras de datos, para presentarlos en pantalla como
entes animados, figuras, entornos, efectos, etcétera. El sistema
de renderizado realiza un pintado total de la pantalla, por decirlo así,
varias veces por segundo, de ahí tenemos los famosos fps (frames
per second), cada marco, imagen o frame es renderizada en vivo
o en memorias temporales para luego ser puesta, presentada, en el monitor.
¿Por qué
polígono? Antes de responder a esta pregunta tenemos que
remontarnos unos años atrás en los que los engines gráficos
utilizaban sprites, un sprite (no el refresco) es un gráfico
prediseñado, es decir tiene una forma y un aspecto que no pueden
ser cambiados. De ahí que los juegos que usan sprites sean
bastante limitados; por más que la tecnología moderna permita
presentar varios a la vez además de --algo-- más complejos
que antes, estos siguen siendo elementos estáticos. Por más
que uno diga que Doom o Wolfenstein son engines 3D,
la verdad es que usan sprites, es decir, el mundo de estos juegos
no existe más allá de los gráficos que están
prediseñados, por ello es imposible girar la cabeza hacia arriba,
o ver a un personaje desde cualquier ángulo, el personaje sólo
tiene un par de sprites que representan su estado de correr, caminar
e incarse, por ejemplo, y no importa desde que ángulo los veamos,
siempre vemos lo mismo. Es como agarrar una revista que ya esta impresa,
no importa desde que posición la veamos (siempre y cuando sea una
válida) todas las veces veremos el mismo material (imagen). Aunque,
claro, en el caso de los juegos son animados y más complejos.