stringtranslate.com

Motor de la perdición

id Tech 1 , también conocido como motor Doom , es el motor de juego utilizado en los videojuegos de id Software Doom y Doom II: Hell on Earth . También se utiliza en Heretic , Hexen: Beyond Heretic , Strife: Quest for the Sigil , Hacx: Twitch 'n Kill , Freedoom y otros juegos producidos por licenciatarios. Fue creado por John Carmack , con funciones auxiliares escritas por Mike Abrash , John Romero , Dave Taylor y Paul Radek. Originalmente desarrollado en computadoras NeXT , [3] fue portado a MS-DOS y sistemas operativos compatibles para el lanzamiento inicial de Doom y luego fue portado a varias consolas de juegos y sistemas operativos .

El código fuente de la versión Linux de Doom fue lanzado al público bajo una licencia que otorgaba derechos para uso no comercial el 23 de diciembre de 1997, seguido por la versión Linux de Doom II aproximadamente una semana después, el 29 de diciembre de 1997. [4] [5] El código fuente fue posteriormente relanzado bajo la Licencia Pública General GNU v2.0 o posterior el 3 de octubre de 1999. [6] [7] Las docenas de puertos fuente no oficiales de Doom que se han creado desde entonces permiten que Doom se ejecute en sistemas operativos previamente no compatibles y, a veces, expanden radicalmente la funcionalidad del motor con nuevas características.

Aunque el motor renderiza un espacio 3D, ese espacio se proyecta desde un plano de planta bidimensional . La línea de visión siempre es paralela al suelo, las paredes deben ser perpendiculares a los pisos y no es posible crear estructuras de varios niveles o áreas inclinadas (pisos y techos con diferentes ángulos). A pesar de estas limitaciones, el motor representó un salto tecnológico con respecto al motor 3D Wolfenstein anterior de id . El motor Doom fue posteriormente renombrado [ cita requerida ] a "id Tech 1" para categorizarlo en una lista de la larga línea de motores de juego de id Software . [8]

Mundo del juego

El motor de Doom separa la renderización del resto del juego. El motor gráfico funciona tan rápido como puede, pero el mundo del juego funciona a 35 cuadros por segundo independientemente del hardware, por lo que varios jugadores pueden jugar entre sí utilizando computadoras de diferente rendimiento. [9]

Estructura de niveles

Una configuración sencilla que demuestra cómo Doom representa los niveles internamente

Vista del mapa en el editor

Vistos de arriba a abajo, todos los niveles de Doom son en realidad bidimensionales, lo que demuestra una de las principales limitaciones del motor de Doom : no es posible jugar en una habitación tras otra . Sin embargo, esta limitación tiene un lado positivo: se puede mostrar fácilmente un "modo de mapa" que representa las paredes y la posición del jugador, de forma muy similar a la primera imagen de la derecha.

Objetos básicos

La unidad base es el vértice , que representa un único punto 2D. Los vértices (o "vértices", como se los denomina internamente) se unen para formar líneas , conocidas como "linedefs". Cada linedef puede tener uno o dos lados, que se conocen como "sidedefs". Los sidedefs se agrupan para formar polígonos ; estos se denominan "sectores". Los sectores representan áreas particulares del nivel.

Sectores

Cada sector contiene una serie de propiedades: altura del piso, altura del techo, nivel de luz, textura del piso y textura del techo. Para tener un nivel de luz diferente en un área en particular, por ejemplo, se debe crear un nuevo sector para esa área con un nivel de luz diferente. Por lo tanto, las definiciones de línea de un solo lado representan paredes sólidas, mientras que las definiciones de línea de dos lados representan líneas de puente entre sectores.

Defensorías laterales

Las sidedefs se utilizan para almacenar texturas de pared ; estas son completamente independientes de las texturas del piso y el techo. Cada sidedef puede tener tres texturas; estas se denominan texturas media, superior e inferior. En las linedefs de un solo lado, solo se utiliza la textura media para la textura de la pared. En las linedefs de dos lados, la situación es más compleja. Las texturas inferior y superior se utilizan para rellenar los huecos donde los sectores adyacentes tienen diferentes alturas de piso y techo: las texturas inferiores se utilizan para los escalones, por ejemplo. Las sidedefs también pueden tener una textura media, aunque la mayoría no la tiene; esto se utiliza para hacer que las texturas queden suspendidas en el aire. Por ejemplo, cuando se ve una textura de barra transparente formando una jaula, este es un ejemplo de una textura media en una linedef de dos lados.

Partición del espacio binario

Doom utiliza un sistema conocido como partición binaria del espacio (BSP, por sus siglas en inglés). [10] Se utiliza una herramienta para generar los datos BSP para un nivel de antemano. Este proceso puede llevar bastante tiempo para un nivel grande. Es por esto que no es posible mover las paredes en Doom ; mientras que las puertas y los ascensores se mueven hacia arriba y hacia abajo, ninguno de ellos se mueve lateralmente.

El nivel se divide en un árbol binario : cada ubicación en el árbol es un "nodo" que representa un área particular del nivel (el nodo raíz representa el nivel completo). En cada rama del árbol hay una línea divisoria que divide el área del nodo en dos subnodos. Al mismo tiempo, la línea divisoria divide las definiciones de línea en segmentos de línea llamados "segs". [11]

En las hojas del árbol se encuentran polígonos convexos , en los que no es necesario realizar más divisiones del nivel. Estos polígonos convexos se denominan subsectores (o "SSECTORES") y están vinculados a un sector en particular. Cada subsector tiene una lista de segmentos asociados. [10]

El sistema BSP ordena los subsectores en el orden correcto para su representación. El algoritmo es bastante simple:

  1. Comience en el nodo raíz.
  2. Dibuje los nodos secundarios de este nodo de forma recursiva. El nodo secundario más cercano a la cámara se dibuja primero utilizando un algoritmo Scanline . Esto se puede averiguar observando de qué lado de la línea divisoria del nodo se encuentra la cámara.
  3. Cuando se llega a un subsector, dibujarlo. [12]

El proceso se completa cuando se llena toda la columna de píxeles (es decir, no quedan más espacios vacíos). Este orden garantiza que no se pierda tiempo dibujando objetos que no son visibles y, como resultado, los mapas pueden volverse muy grandes sin ninguna penalización de velocidad.

Representación

Dibujando las paredes

Todas las paredes de Doom están dibujadas verticalmente; es por esto que no es posible mirar hacia arriba y hacia abajo correctamente. Es posible realizar una forma de mirar hacia arriba/abajo a través de "y-shearing", y muchos puertos de origen de Doom modernos lo hacen, así como juegos posteriores que usan el motor, como Heretic . Básicamente, esto funciona moviendo la línea del horizonte hacia arriba y hacia abajo dentro de la pantalla, lo que en efecto proporciona una "ventana" en un área visible más alta. Al mover la ventana hacia arriba y hacia abajo, es posible dar la ilusión de mirar hacia arriba y hacia abajo. Sin embargo, esto distorsionará la vista cuanto más arriba y más abajo mire el jugador.

El motor Doom renderiza las paredes a medida que recorre el árbol BSP, dibujando subsectores por orden de distancia desde la cámara, de modo que los segmentos más cercanos se dibujen primero. A medida que se dibujan los segmentos, se almacenan en una lista enlazada. Esto se utiliza para recortar otros segmentos renderizados más adelante, lo que reduce el sobredibujo. Esto también se utiliza más adelante para recortar los bordes de los sprites.

Una vez que el motor alcanza una pared sólida (unilateral) en una determinada coordenada x, no es necesario dibujar más líneas en esa zona. Para recortar, el motor almacena un "mapa" de las áreas de la pantalla en las que se han alcanzado las paredes sólidas. Esto permite recortar por completo las partes lejanas del nivel que son invisibles para el jugador.

El formato gráfico de Doom almacena las texturas de las paredes como conjuntos de columnas verticales ; esto es útil para el renderizador, que esencialmente renderiza las paredes dibujando muchas columnas verticales de texturas.

Piso y techo

El sistema para dibujar pisos y techos ("pisos") es menos elegante [ ¿según quién? ] que el que se usa para las paredes. Los pisos se dibujan con un algoritmo similar al de relleno por inundación . Debido a esto, si se usa un constructor de BSP deficiente, a veces es posible que aparezcan "agujeros" donde el piso o el techo se desangran hasta los bordes de la pantalla, un error visual que comúnmente se conoce como "rastro de baba". [13] Esta es también la razón por la que si el jugador viaja fuera del nivel usando el truco noclip, los pisos y los techos parecerán extenderse desde el nivel sobre el espacio vacío.

El suelo y el techo se dibujan como "visplanos". Estos representan líneas horizontales de textura, desde un suelo o techo a una altura, nivel de luz y textura determinados (si dos sectores adyacentes tienen exactamente el mismo suelo, estos pueden fusionarse en un único visplano). Cada posición x en el visplano tiene una línea vertical particular de textura que se debe dibujar.

Debido a este límite de dibujar una línea vertical en cada posición x, a veces es necesario dividir los visplanos en múltiples visplanos. Por ejemplo, considere visualizar un piso con dos cuadrados concéntricos . El cuadrado interior dividirá verticalmente el piso circundante. En ese rango horizontal donde se dibuja el cuadrado interior, se necesitan dos visplanos para el piso circundante.

Doom contenía un límite estático en la cantidad de visplanes; si se excedía, se producía un "desbordamiento de visplane", lo que hacía que el juego saliera al modo DOS con uno de dos errores: "¡No más visplanes!" o "desbordamiento de visplane (128 o superior)". La forma más fácil de invocar el límite de visplane es un gran patrón de piso de tablero de ajedrez; esto crea una gran cantidad de visplanes.

A medida que se van renderizando los segmentos, también se van añadiendo visplanes, que se extienden desde los bordes de los segmentos hacia los bordes verticales de la pantalla. Estos se extienden hasta que alcanzan los visplanes existentes. Debido a la forma en que esto funciona, el sistema depende del hecho de que los segmentos se renderizan en orden por el motor general; es necesario dibujar primero los visplanes más cercanos, para que puedan "cortarse" por otros más alejados. Si no se detiene, el suelo o el techo se "desangrarán" hacia los bordes de la pantalla, como se describió anteriormente. Finalmente, los visplanes forman un "mapa" de áreas particulares de la pantalla en las que dibujar texturas particulares.

Si bien los visplanes se construyen esencialmente a partir de "tiras" verticales, la representación de bajo nivel real se realiza en forma de "tramos" horizontales de textura. Una vez que se han construido todos los visplanes, se convierten en tramos que luego se representan en la pantalla. Esto parece ser un compromiso: es más fácil construir visplanes como tiras verticales, pero debido a la naturaleza de cómo aparecen las texturas del piso y el techo, es más fácil dibujarlas como tiras horizontales.

Cosas (sprites)

Cada sector dentro del nivel tiene una lista vinculada de elementos almacenados en ese sector. A medida que se dibuja cada sector, los sprites se colocan en una lista de sprites que se dibujarán. Si no están dentro del campo de visión, se ignoran.

Los bordes de los sprites se recortan consultando la lista de segmentos dibujados previamente. Los sprites en Doom se almacenan en el mismo formato basado en columnas que las paredes, lo que nuevamente resulta útil para el renderizador. Las mismas funciones que se utilizan para dibujar paredes también se utilizan para dibujar sprites.

Si bien se garantiza que los subsectores estén en orden, los sprites dentro de ellos no lo están. Doom almacena una lista de sprites que se dibujarán ("vissprites") y ordena la lista antes de renderizar. Los sprites más alejados se dibujan antes que los más cercanos. Esto provoca un cierto exceso de dibujo, pero generalmente es insignificante.

Existe un problema final con las texturas intermedias en las líneas de dos lados, utilizadas en barras transparentes, por ejemplo. Estas se mezclan y se dibujan con los sprites al final del proceso de renderizado, en lugar de con las otras paredes.

Juegos que utilizan elCondenarmotor

El motor Doom alcanzó la mayor parte de su fama como resultado de impulsar el clásico juego de disparos en primera persona Doom , y se utilizó en varios otros juegos. Por lo general, se considera que los "cuatro grandes" juegos con motor Doom son Doom , Heretic , Hexen: Beyond Heretic y Strife: Quest for the Sigil .

Juegos creados directamente en elCondenarmotor

Juegos basados ​​en elCondenaroDoom IIcódigo

En la década de 1990, un puñado de desarrolladores adquirieron licencias para distribuir conversiones totales de Doom , y después del lanzamiento del código fuente en 1997, se produjeron varios títulos independientes en el motor, incluidos freeware , fangames y títulos comerciales. [14]

Véase también

Notas

Referencias

  1. ^ "Código fuente de Doom, bajo licencia GNU GPL". gamers.org . Archivado desde el original el 31 de mayo de 2023.
  2. ^ "Doom3do/LICENCIA en master · Olde-Skuul/Doom3do". GitHub . 17 de diciembre de 2022. Archivado desde el original el 19 de febrero de 2022 . Consultado el 14 de febrero de 2019 .
  3. ^ "NeXT Computers - Empresa - Historia de la informática". www.computinghistory.org.uk . Archivado desde el original el 2022-03-29 . Consultado el 2022-03-29 .
  4. ^ Staff (29 de diciembre de 1997). «Doom II Source Available». PC Gamer US . Archivado desde el original el 18 de febrero de 1998. Consultado el 20 de noviembre de 2019 .
  5. ^ https://web.archive.org/web/*/ftp://ftp.idsoftware.com/idstuff/source/* ftp://ftp.idsoftware.com/idstuff/source/ [ enlace muerto permanente ]
  6. ^ "Código fuente de Doom, bajo licencia GNU GPL - Interfaz de base de datos Doomworld/idgames". Archivado desde el original el 28 de marzo de 2021 . Consultado el 28 de marzo de 2021 .
  7. ^ El código fuente de Doom de 3ddownloads.com Archivado el 24 de febrero de 2004 en Wayback Machine - publicado en 1997, ahora bajo la GNU GPL v2 o posterior
  8. ^ "id Tech 1 (Concept)". Bomba gigante . Archivado desde el original el 15 de febrero de 2019. Consultado el 14 de febrero de 2019 .
  9. ^ Schuytema, Paul C. (agosto de 1994). "The Lighter Side Of Doom". Computer Gaming World . pp. 140, 142. Archivado desde el original el 2018-01-02 . Consultado el 2019-02-14 .
  10. ^ ab Abrash, Michael. "El motor 3-D de Quake: el panorama general" . Consultado el 22 de agosto de 2012 .
  11. ^ Apted, Andrew. "ESPECIFICACIÓN para GL-Nodes". Archivado desde el original el 2 de septiembre de 2012. Consultado el 22 de agosto de 2012 .
  12. ^ Sanglard, Fabien. «Revisión del código del motor Doom». Archivado desde el original el 3 de septiembre de 2012. Consultado el 23 de agosto de 2012 .
  13. ^ Rastro de baba - Wiki de Doom
  14. ^ Tarason, Dominic (1 de abril de 2019). «Modder Superior: Los numerosos descendientes libres de Doom». Rock Paper Shotgun . Archivado desde el original el 6 de agosto de 2023. Consultado el 14 de julio de 2024 .
  15. ^ Yu, Derek (9 de enero de 2008). "Action Doom 2: Urban Brawl". tigsource . Consultado el 9 de enero de 2008 .
  16. ^ Gillen, Kieron (18 de noviembre de 2009). "Armonía en mi cabeza: armonía". Rock Paper Shotgun . Archivado desde el original el 23 de febrero de 2023. Consultado el 22 de febrero de 2023 .
  17. ^ Dawe, Liam (19 de abril de 2018). "The Adventures of Square es un FPS retro ligeramente divertido que es gratuito y ya tiene un segundo episodio disponible". GamingOnLinux . Consultado el 19 de febrero de 2023 .
  18. ^ Smith, Adam (3 de agosto de 2016). "Blade Of Agony es un mod increíble de 'WolfenDoom'". rockpapershotgun . Consultado el 3 de agosto de 2016 .
  19. ^ Tarason, Dominic (7 de enero de 2018). "Shadow y Rise Of The Wool Ball vuelven adorable a Wolfenstein". Rock Paper Shotgun . Archivado desde el original el 15 de julio de 2024. Consultado el 14 de julio de 2024 .
  20. ^ Tsiro, Rania (12 de julio de 2018). «Doomguy es ahora una especie de vikingo en el juego Rekkr». VGR . Archivado desde el original el 15 de julio de 2024. Consultado el 14 de julio de 2024 .
  21. ^ Glagowski, Peter (17 de agosto de 2018). "Annie, el mod de Doom 2, resurge tras un período de desarrollo de 12 años". destructoid . Consultado el 17 de agosto de 2018 .
  22. ^ Tarason, Dominic (24 de septiembre de 2018). "Enfréntate a un páramo apocalíptico muy ochentero en la conversión de Doom a Ashes 2063". rockpapershotgun . Archivado desde el original el 17 de junio de 2021 . Consultado el 24 de septiembre de 2018 .
  23. ^ Dawe, Liam (5 de noviembre de 2018). "Total Chaos es una conversión total impresionante y aterradora de Doom 2 que lo convierte en una experiencia de terror y supervivencia". gamingonlinux . Consultado el 5 de noviembre de 2018 .
  24. ^ Digre, Alyxx (16 de mayo de 2019). «Hedon – Reseña de juego para PC». VGR . Archivado desde el original el 15 de julio de 2024. Consultado el 14 de julio de 2024 .
  25. ^ Bolding, Jonathan (27 de diciembre de 2019). "Destruye algunos horrores cósmicos en el mod Shrine de Doom 2". pcgamesn . Consultado el 27 de diciembre de 2019 .
  26. ^ Papadopoulos, John (16 de marzo de 2020). "Alguien ha creado un remake en 3D de Alien Breed en GZDoom, y puedes descargarlo ahora mismo". DSOGaming . Consultado el 22 de junio de 2024 .
  27. ^ Tarason, Dominic (27 de junio de 2021). "Castlevania: Simon's Destiny es un mod de Doom fantástico". rockpapershotgun . Consultado el 27 de junio de 2021 .
  28. ^ Glagowski, Peter (11 de agosto de 2021). "Reseña de Vomitoreum". Tech Raptor . Archivado desde el original el 15 de julio de 2024. Consultado el 14 de julio de 2024 .
  29. ^ Dawe, Liam (22 de mayo de 2022). "El FPS de fantasía oscura 'Hands of Necromancy', desarrollado por GZDoom, ya está disponible". GamingOnLinux . Consultado el 15 de julio de 2024 .
  30. ^ Lane, Rick (15 de agosto de 2022). "Reseña de 'Fashion Police Squad': novio eterno". nme . Consultado el 15 de agosto de 2022 .
  31. ^ Werner, Adrian (22 de abril de 2022). "CountryCide: nueva versión de un impresionante mod oscuro para Doom 2". gamepressure . Consultado el 22 de abril de 2022 .
  32. ^ Handley, Zoey (8 de octubre de 2023). "El FPS GZDoom Beyond Sunset comienza su etapa de acceso anticipado hoy". destructoid . Consultado el 8 de octubre de 2023 .
  33. ^ Chalk, Andy (5 de agosto de 2023). "Supplice es un nuevo FPS retro creado por modders de Doom, y realmente se siente como el Doom de la vieja escuela". PCGamer . Consultado el 5 de junio de 2023 .
  34. ^ Zwiezen, Zack (29 de septiembre de 2023). "El nuevo mod de Doom es básicamente un juego de Indiana Jones genial". kotaku . Consultado el 29 de septiembre de 2023 .
  35. ^ Tamaster, Tamaster (21 de marzo de 2023). "Apocalyptic Vibes: ¡un viaje inmersivo a través de una Tierra posnuclear desvanecida!". indie-hive . Consultado el 21 de marzo de 2023 .
  36. ^ McHugh, Alex (17 de septiembre de 2024). "El nuevo FPS retro Hands of Necromancy 2 se inspira en Heretic". pcgamesn . Consultado el 17 de septiembre de 2024 .
  37. ^ Zwiezen, Zack (31 de mayo de 2024). «El nuevo FPS creado con tecnología de Doom es mejor que la mayoría de los shooters AAA». Kotaku . Archivado desde el original el 15 de julio de 2024 . Consultado el 14 de julio de 2024 .

Enlaces externos