Doom-motoren (id Tech 1) – arkitektur, historie og open source

Dyk ned i Doom-motoren (id Tech 1): arkitektur, historie og open source-kildekode, source ports, teknikker og indflydelse på FPS-udviklingen.

Forfatter: Leandro Alegsa

Doom-motoren, der undertiden kaldes id Tech 1, er computerkoden bag videospillet Doom. Den samme grundmotor bruges i flere andre spil, herunder Doom 2 (men ikke Doom 3, som benytter en helt anden motor). Stærkt modificerede varianter af Doom-motoren blev brugt i titler som Heretic, Hexen og Strife, ofte med tilføjede features og ændret spillogik.

Arkitektur og rendering

Doom-motoren repræsenterer niveauer internt ved hjælp af strukturer kaldet linedefs, sidedefs, sektorer, verticies og ting (dvs. monstre, genstande, dekorationer osv.). Disse datastrukturer læses fra en WAD-fil, som indeholder alle baner, sprites, lyde og teksturer.

Til at gengive scenerne anvender motoren en teknik baseret på binær rumopdeling (Binary Space Partitioning, BSP). BSP-træet bruges til hurtigt at bestemme synlige flader og til at tegne vægge kolonne for kolonne i en software-renderer. Gulve og lofter håndteres via såkaldte "visplanes", mens vægge tegnes som lodrette søjler med texture mapping. Resultatet er en effektiv "2.5D"-gengivelse: det ligner 3D for spilleren, men den interne verden er sektorbaseret og understøtter ikke egentlige rum-over-rum (f.eks. indbyrdes overlappende etager) uden tricks.

For at opnå høj ydeevne på datidens hardware benyttede motoren fastepunkt-aritmetik, forhåndsberegnede opslagstabeller (f.eks. for trigonometriske funktioner) og omhyggeligt optimerede algoritmer til sorte-liste/overflade-culling. Dette gav mulighed for flydende billedhastigheder på PC'er fra begyndelsen af 1990'erne uden 3D-acceleration.

Teknologiske begrænsninger og løsninger

Doom-motoren render banerne udelukkende på CPU'en, ikke på grafikkortet, da de fleste grafikkort på det tidspunkt (1993) ikke havde 3D-acceleration. Det betød, at grafikken var pallet-baseret (256 farver), og at der blev lagt vægt på hurtige, deterministiske rutiner i stedet for GPU-baserede shaders. Lysniveauer er sektorbaserede (en enkelt lysstyrke per sektor), og der er ingen ægte dynamiske lys i originalmotoren — mange effekter er simuleret.

Mange af motorens begrænsninger blev senere adresseret i source ports og i mods via:

  • hardware-accelereret rendering (OpenGL backend i moderne porte),
  • understøttelse af højere opløsninger og fuldt farveindeks (truecolor),
  • udvidet lysmodel, slopes og ekstra geometriske features,
  • forbedret netværkskode og moderne input/hardware-support.

WAD-formatet og datahåndtering

Spilindholdet i Doom er organiseret i WAD-filer (Where’s All the Data?). En WAD indeholder "lumps" med banedata, sprites, texturedefinitions, paletter, lydfiler og andre ressourcer. Motoren læser baner og objekter fra WAD-filerne, og fællesskabet har udnyttet dette ved at lave brugerdefinerede WADs med nye baner, samlede konverteringer og komplette fan-spil.

Historie og open source

Doom blev oprindeligt udviklet af id Software, med væsentlige bidrag fra programmører som John Carmack (grafikengineering) og John Romero (level design), og udgivet i 1993. Kildekoden til Doom-motoren blev senere frigivet, og i dag er koden tilgængelig under GNU General Public License, hvilket åbnede for, at udviklere og fans kunne skabe egne builds, rette fejl og porte motoren til nye platforme.

Source ports, modding og fællesskab

Mange Doom-fans har lavet deres egne modificerede versioner kaldet source ports. Source ports tilføjer ofte nye funktioner, rette kompatibilitetsproblemer og muliggør afvikling på moderne systemer. Populære kildeportioner omfatter Boom, PrBoom, PrBoom+, Zdoom og Chocolate Doom. Disse porte spænder fra bevidst kompatible gengivelser af originaloplevelsen (f.eks. Chocolate Doom) til kraftigt udvidede motorer med scripting, nye renderingsteknikker og moderne netværksfunktioner (f.eks. ZDoom-derivater).

Ud over engine-ændringer har fællesskabet skabt et enormt økosystem af WADs, grafiske pakker, mods og værktøjer til at redigere baner, sprites og scripts. Dette har gjort Doom-motoren til et af de mest portede og vedligeholdte gameteknologiprojekter nogensinde: den findes på alt fra moderne desktop-operativsystemer til mobiltelefoner, konsoller og indlejrede enheder.

Portabilitet og indflydelse

Doom-motoren er blevet gjort tilgængelig for flere typer computere end nogen anden first person shooter-motor fra samme periode. Den er for det meste skrevet i C, hvilket gør det relativt nemt for en programmør at porte den til nye platforme. Koden bruger få systemafhængige funktioner og kræver ikke moderne 3D-acceleratorer, hvilket gør det muligt at køre på ældre og begrænsede enheder.

Som arv har Doom-motoren haft enorm betydning for spiludvikling: den populariserede mange designmønstre for FPS-spil, inspirerede til modding-kultur og viste værdien af at frigive kildekode til et levende udviklingsfællesskab. Den tekniske tilgang (BSP, visplane-rendering, sektorsystem) og optimeringsteknikkerne er stadig interessante for dem, der studerer spilteknik historisk og pædagogisk.

Opsummering: Doom-motoren (id Tech 1) kombinerer enkle, effektive datastrukturer med smarte rasteriseringsalgoritmer for at levere en overbevisende 3D-lignende oplevelse på 1990'er-hardware. Frigivelsen af kildekoden under en fri licens har sikret, at motoren lever videre gennem et aktivt fællesskab, der konstant forbedrer, porter og bevarer oplevelsen.

Spørgsmål og svar

Q: Hvad er Doom-motoren?


A: Doom-motoren er computerkoden bag videospillet Doom. Den bruges også af flere andre spil, herunder Doom 2 (men ikke Doom 3, som har sin egen motor). Stærkt modificerede versioner af Doom-motoren anvendes i Heretic, Hexen og Strife.

Spørgsmål: Hvordan repræsenterer Doom-motoren 3D-niveauer?


A: Doom-motoren bruger en teknik kaldet binær rumpartitionering til at repræsentere 3D-niveauer på en måde, som en computer kan behandle hurtigt.

Spørgsmål: Hvilket sprog er Doom-motoren skrevet i?


Svar: Doom-motoren er for det meste skrevet i C.

Spørgsmål: Findes der en open source-version af Doom Engine?


A: Ja, kildekoden til Doom Engine er blevet frigivet gratis under GNU General Public License. Mange fans har også lavet deres egne modificerede versioner kaldet source ports.

Sp: Hvad er nogle populære kildeportioner af den originale Doom-motor?


A: Populære kildeportioner omfatter Boom, PrBoom, PrBoom+, Zdoom og Chocolate Doom.

Q: Hvilke strukturer bruger doom-motoren internt til at repræsentere niveauer?


A: Doom-motoren repræsenterer baner internt ved hjælp af strukturer kaldet linedefs, sidedefs, sektorer, verticies og ting (dvs. monstre, ting, dekorationer osv.).

Q: Hvordan læser den data fra filer?


A: Doom-motoren læser baner og andre data fra en fil kaldet en WAD.


Søge
AlegsaOnline.com - 2020 / 2025 - License CC3