id Tech 3 , conocido popularmente como motor Quake III Arena , es un motor de juego desarrollado por id Software para su videojuego Quake III Arena . Ha sido adoptado por numerosos juegos. En su época, compitió con Unreal Engine ; Ambos motores tenían amplias licencias.
Si bien id Tech 3 se basa en el motor id Tech 2 , se reescribió una gran cantidad del código. El sucesor id Tech 4 se derivó de id Tech 3, al igual que el motor IW de Infinity Ward utilizado en Call of Duty 2 en adelante.
En la QuakeCon 2005, John Carmack anunció que el código fuente de id Tech 3 se publicaría bajo la licencia pública general GNU v2.0 o posterior , y se publicó el 19 de agosto de 2005. Distribuido originalmente por id a través de FTP , [ 1] El código ahora se puede descargar desde la cuenta de GitHub de id .
A diferencia de la mayoría de los otros motores de juegos lanzados en ese momento, incluido su principal competidor, Unreal Engine , id Tech 3 requiere un acelerador de gráficos compatible con OpenGL para funcionar. El motor no incluye un renderizador de software .
id Tech 3 introdujo superficies curvas basadas en splines además de volúmenes planos, que son responsables de muchas de las superficies presentes en el juego. [2]
La tecnología gráfica del juego se basa estrechamente en un sistema de " sombreadores " donde la apariencia de muchas superficies se puede definir en archivos de texto denominados "scripts de sombreado". Los sombreadores se describen y representan como varias capas, cada capa contiene una textura, un "modo de fusión" que determina cómo superponerla sobre la capa anterior y modos de orientación de la textura, como mapeo del entorno, desplazamiento y rotación. Estas características se pueden ver fácilmente dentro del juego con muchas superficies brillantes y activas en cada mapa e incluso en los modelos de personajes. El sistema de sombreado va más allá de la apariencia visual, definiendo el contenido de los volúmenes (por ejemplo, un volumen de agua se define aplicando un sombreador de agua a sus superficies), la emisión de luz y qué sonido se reproducirá cuando se pise un volumen. [3] Para ayudar en el cálculo de estos sombreadores, id Tech 3 implementa una función de raíz cuadrada inversa rápida específica , que atrajo una gran cantidad de atención en la comunidad de desarrollo de juegos por su uso inteligente de operaciones con números enteros. [4] [5]
Todos los vídeos del juego utilizan un formato propietario llamado "RoQ", que fue creado originalmente por Graeme Devine , el codiseñador de Quake 3 , para el juego The 11th Hour . Internamente, RoQ utiliza cuantificación vectorial para codificar vídeo y DPCM para codificar audio. Si bien el formato en sí es propietario, se le realizó ingeniería inversa con éxito en 2001, [6] y el decodificador RoQ real está presente en la versión del código fuente de Quake 3 . RoQ ha tenido poco uso fuera de los juegos basados en los motores id Tech 3 o id Tech 4 , pero es compatible con varios reproductores de vídeo (como MPlayer ) y existen varios codificadores de terceros. Una excepción notable es el juego Postal 2: Apocalypse Weekend , basado en Unreal Engine , que utiliza archivos RoQ para sus escenas de introducción y cierre, así como para una escena de broma que se reproduce después de una misión al final de la primera parte.
id Tech 3 carga modelos 3D en formato MD3. El formato utiliza movimientos de vértice (a veces llamado animación por vértice ) en lugar de animación esquelética para almacenar animación. Las funciones de animación en el formato MD3 son superiores a las del formato MD2 de id tech 2.5 porque un animador puede tener un número variable de fotogramas clave por segundo en lugar de los 10 fotogramas clave por segundo estándar de MD2. Esto permite animaciones más complejas que son menos "vibrantes" que los modelos que se encuentran en Quake II .
Otra característica importante del formato MD3 es que los modelos se dividen en tres partes diferentes que están ancladas entre sí. Normalmente, esto se utiliza para separar la cabeza, el torso y las piernas para que cada parte pueda animarse de forma independiente con el fin de combinar la animación (es decir, una animación de carrera en las piernas y una animación de disparo en el torso). Cada parte del modelo tiene su propio conjunto de texturas.
Los modelos de personajes se iluminan y sombrean usando sombreado Gouraud, mientras que los niveles (almacenados en formato BSP ) se iluminan con mapas de luz o sombreado Gouraud, según las preferencias del usuario. El motor es capaz de tomar luces de colores de la rejilla de luz y aplicarlas a los modelos, lo que da como resultado una calidad de iluminación que era, para su época, muy avanzada.
En la versión GPL del código fuente, faltaba la mayor parte del código relacionado con los archivos de animación esquelética MD4. [ cita necesaria ] Se supone que id simplemente nunca terminó el formato, [7] aunque casi todos los licenciatarios derivaron sus propios sistemas de animación esquelética a partir de lo que estaba presente. Ritual Entertainment hizo esto para usarlo en el juego Heavy Metal: FAKK² , el SDK que formó la base del soporte MD4 completado por alguien que usó el seudónimo Gongo. [8]
El motor es capaz de generar tres tipos diferentes de sombras. Simplemente se coloca un círculo con bordes descoloridos a los pies de los personajes, comúnmente conocida como la técnica de la "sombra de manchas". Los otros dos modos proyectan una sombra poligonal precisa sobre el suelo. La diferencia entre los dos últimos modos es la dependencia de sombras negras sólidas y opacas, mientras que el otro modo intenta (con éxito desigual) proyectar sombras de volumen de sombra de plantilla de paso profundo en un negro medio transparente. Ninguna de estas técnicas recorta los volúmenes de sombra, lo que hace que las sombras se extiendan por las paredes y a través de la geometría.
Otras características visuales incluyen niebla volumétrica , espejos, portales, calcomanías y distorsión de vértices en forma de onda.
El sistema de sonido de id Tech 3 emite a dos canales utilizando un búfer de salida en bucle, mezclado a partir de 96 pistas con espacialización estéreo y efecto Doppler . Toda la mezcla de sonido se realiza dentro del motor, lo que puede crear problemas para los licenciatarios que esperan implementar EAX o soporte de sonido envolvente . [ cita necesaria ] Varios efectos populares, como los ecos, también están ausentes.
Un defecto importante del sistema de sonido es que el mezclador no tiene su propio hilo, [9] por lo que si el juego se detiene durante demasiado tiempo (especialmente mientras navega por los menús o se conecta a un servidor), el pequeño búfer de salida comenzará a repetirse. , un artefacto muy notable. Este problema también estaba presente en los motores Doom 3 , Quake y Quake II . [ cita necesaria ]
id Tech 3 utiliza un sistema de "instantáneas" para transmitir información sobre los "marcos" del juego al cliente a través de UDP . El servidor actualiza la interacción de objetos a una velocidad fija independiente de la velocidad que los clientes actualizan el servidor con sus acciones y luego intenta enviar el estado de todos los objetos en ese momento (el marco actual del servidor) a cada cliente. El servidor intenta omitir la mayor cantidad de información posible sobre cada cuadro, transmitiendo solo las diferencias con respecto al último cuadro que el cliente confirmó como recibido ( codificación Delta ). Todos los paquetes de datos se comprimen mediante codificación Huffman con datos de frecuencia estáticos precalculados para reducir aún más el uso del ancho de banda. [10]
Quake 3 también integró un sistema de protección contra trampas relativamente elaborado llamado "servidor puro". Cualquier cliente que se conecte a un servidor puro tiene automáticamente habilitado el modo puro y, mientras el modo puro está habilitado, solo se puede acceder a los archivos dentro de los paquetes de datos. Los clientes se desconectan si sus paquetes de datos no superan una de varias comprobaciones de integridad. El cgame.qvm
archivo, con su alto potencial de modificación relacionada con trampas, está sujeto a controles de integridad adicionales. [ cita necesaria ] Los desarrolladores deben desactivar manualmente el servidor puro para probar mapas o modificaciones que no están en paquetes de datos utilizando el formato de archivo PK3. Las versiones posteriores complementaron el servidor puro con soporte para PunkBuster , aunque todos los enlaces están ausentes en la versión del código fuente porque PunkBuster es un software de código cerrado e incluir soporte para él en la versión del código fuente habría causado que cualquier redistribuidor/reutilizador del código violara la GPL . [11]
id Tech 3 utiliza una máquina virtual para controlar el comportamiento de los objetos en el servidor, los efectos y la predicción en el cliente y la interfaz de usuario. Esto presenta muchas ventajas ya que los autores de mods no necesitan preocuparse por bloquear todo el juego con código incorrecto, los clientes podían mostrar efectos y menús de juego más avanzados de lo que era posible en Quake II y la interfaz de usuario para mods era completamente personalizable.
Los archivos de máquinas virtuales se desarrollan en ANSI C , utilizando LCC para compilarlos en un formato de pseudoensamblaje RISC de 32 bits . Luego, una herramienta llamada q3asm los convierte en archivos QVM, que son archivos multisegmentados que constan de datos estáticos e instrucciones basadas en un conjunto reducido de códigos de operación de entrada. A menos que se utilicen operaciones que requieran un endianismo específico , un archivo QVM se ejecutará igual en cualquier plataforma compatible con Quake 3.
La máquina virtual también contenía compiladores de código de bytes para las arquitecturas x86 y PowerPC , ejecutando instrucciones QVM a través de un intérprete .
Ioquake3 es un proyecto de motor de juego que tiene como objetivo aprovechar la versión del código fuente de id Tech 3 [12] [13] para eliminar errores, limpiar el código fuente y agregar características gráficas y de audio más avanzadas a través de SDL y OpenAL . ioquake3 también pretende actuar como un paquete base limpio, sobre el cual se pueden construir otros proyectos. El motor del juego admite el formato Ogg Vorbis y la captura de vídeo de demostraciones en formato .avi . [14]
El proyecto se inició poco después del lanzamiento del código fuente con el objetivo de crear una distribución de código fuente del motor Quake III mejorada y libre de errores en la que se puedan basar nuevos juegos y proyectos. Además, el proyecto tiene como objetivo proporcionar un entorno mejorado en el que se pueda jugar Quake III: Arena , el paquete de expansión Team Arena y todos los mods populares . [15] [16] [17] [18] Las características notables agregadas por el proyecto incluyen soporte VoIP incorporado , renderizado estéreo Anaglifo (para visualización con gafas 3D) y numerosas correcciones de seguridad. Una lista de algunas de las características está disponible en el sitio web del proyecto.
Ioquake3 ha sido la base de varios proyectos de juegos basados en el motor id Tech 3, como OpenArena (imitando Quake III Arena ), [19] [20] Tremulous , [21] [22] Smokin' Guns , [23] Urban Terror , [24] [25] Turtle Arena y World of Padman [26] [27], así como proyectos de motores de juegos como efport (un proyecto de recreación del motor Star Trek: Voyager – Elite Force Holomatch ), ioJedi Outcast, [28] ioJedi Academia, [29] ioDoom3 [30] y OpenMoHAA . [31] El motor y sus juegos asociados se han incluido en varias distribuciones de Linux y BSD . [32] [33] [34] [35] [36] El motor cMod derivado del puerto Elite Force anterior se utilizó para empaquetar el lanzamiento de software gratuito del vigésimo aniversario del juego para Windows y Linux . [37]
El código fuente de los motores Return to Castle Wolfenstein y Wolfenstein: Enemy Territory se publicó bajo GNU GPL-3.0 o posterior el 12 de agosto de 2010. [38] Los desarrolladores de ioquake3 anunciaron el inicio de los respectivos proyectos de motor (iortcw, [39 ] [40] iowolfet, ET: Legacy [41] ) poco después. [42]
El proyecto ioquake3 también se ha utilizado en el ámbito académico como base para una variedad de investigaciones en instituciones como el Centro de Investigación Informática en Música y Acústica (CCRMA) de la Universidad de Stanford, [43] [44] Notre Dame como base para la realidad virtual. investigación, [45] y el Centro de Arquitecturas Avanzadas de Internet de la Universidad Tecnológica de Swinburne. [46] [47] Incluso hay esfuerzos de colaboración de investigadores de la Universidad Carnegie Mellon y la Universidad de Toronto que utilizan ioquake3 como plataforma para sus investigaciones publicadas. [48] [49] Los estudiantes también han utilizado ioquake3 como base para trabajos gráficos avanzados para sus tesis, como el trabajo de Stephan Reiter [50] [51] que incluso se ha destacado en el proyecto LLVM [52] debido a su Síntesis del motor ioquake3, técnica de renderizado de trazado de rayos y LLVM.
Aunque el nombre "ioquake3" se basa en el sitio icculus.org de Ryan "Icculus" Gordon , Ryan no lidera el proyecto. En cambio, mantiene un rol de mentor y proporciona alojamiento para las listas de correo y el repositorio SVN utilizado por el proyecto. [53] Desde entonces, el proyecto se ha dividido en derivados como Quake3e y Spearmint.
{{cite web}}
: Mantenimiento CS1: URL no apta ( enlace ){{cite web}}
: Mantenimiento CS1: URL no apta ( enlace ){{cite web}}
: Mantenimiento CS1: bot: estado de la URL original desconocido ( enlace )