Doom-motorn (id Tech 1) – spelmotor, teknik och historia
Upptäck Doom‑motorn (id Tech 1): dess teknik, historia, WAD‑format, binär rumsindelning, källkodsportar och inflytande på FPS‑genren.
Doom-motorn, ibland kallad ID Tech 1, är spelmotorn bakom det klassiska spelet Doom. Samma grundmotor användes i flera samtida titlar — till exempel Doom 2 — men inte i Doom 3, som bygger på en helt annan motor (id Tech 4). Kraftigt modifierade varianter av Doom-motorn användes i spel som Heretic, Hexen och Strife, där utvecklarna lade till nya funktioner ovanpå den ursprungliga kodbasen.
Teknik i korthet
Doom-motorn är en så kallad 2.5D-motor (ibland beskriven som en "pseudo-3D"-motor). Den simulerar tredimensionell nivågeometri genom att kombinera plana sektorer med separata höjder för golv och tak, men den har inga verkliga rum-över-rum-lösningar (inget fullständigt 3D-geometri). Monster och objekt representeras av 2D-sprites som alltid vänds mot spelaren (s.k. billboards).
Internt används nivåstrukturer som linedefs, sidedefs, sektorer, verticies och things (dvs. monster, föremål, dekorationer osv.). Motorn läser banor och andra resurser från filer i WAD-formatet (se nedan).
Nivårepresentation och WAD-filer
Dooms datapaket ovanför motorn ligger i WAD-filer. Ett IWAD innehåller själva spelets data (t.ex. Doom eller Doom II), medan PWAD används för extra innehåll och modificationer. Detta format gjorde det relativt enkelt för spelare att skapa egna banor och moddar.
Genom WAD- och levelstrukturerna kan banbyggare definiera sektorer med individuella golv- och takhöjder, ljusnivåer, texturer och specialfunktioner (som dörrar, lyft och teleport). Begränsningar i originalmotorn — t.ex. avsaknaden av sneda golv och rum som ligger ovanpå varandra — kom senare att delvis kringgås av source ports och moddar.
Rendering och prestanda
Doom-motorn renderar scener med mjukvarugrafik, helt på processorn, inte på grafikkortet. När spelet släpptes (1993) saknade de flesta grafikkorten 3D-acceleration, så motorn var optimerad för CPU-baserad rendering.
För att få bra prestanda användes flera viktiga tekniker:
- Binär rumsindelning (BSP) för att snabbt avgöra vilka delar av banan som syns från kameran.
- Span- och visplane-rendering för att effektivt rita golv, tak och väggkolumner.
- Fastpunktaritmetik och uppslagstabeller för att minska behovet av långsamma flyttalsberäkningar på dåtidens hårdvara.
Källkod, källportar och moddning
Källkoden till Doom-motorn gjordes tillgänglig för allmänheten på slutet av 1990-talet. Detta ledde till en stor mängd "source ports" — portar av motorn till nya operativsystem och plattformar samt vidareutvecklingar av själva motorn. Källkodsportar lägger ofta till nya funktioner och åtgärdar begränsningar i originalmotorn, till exempel:
- Högre upplösningar och 32-bitars färgdjup
- Mouselook, freelook och modern kontroll
- OpenGL-acceleration (i portar som GZDoom) för hårdvarurendering
- Buggrättningar, kompatibilitetslägen och förbättrad nätverkspel
- Nya scripting- och moddfunktioner som möjliggör avancerade spelmekaniker
Populära källkodsportar inkluderar bland andra Boom, PrBoom, PrBoom+, ZDoom och Chocolate Doom — och senare ofta använda portar som GZDoom för OpenGL-stöd. Vissa portar fokuserar på att exakt efterlikna originalets beteende (Chocolate Doom), medan andra går långt utöver originalets funktionalitet (ZDoom/GZDoom).
Historik och arv
Doom och dess motor blev ett stort genombrott för förstapersonsskjutare. Motorn satte standarder för hur snabba, action-orienterade 3D-upplevelser kunde byggas och spreds till många plattformar — från PC till handdatorer och senare mobila enheter — tack vare att mycket av motorn är skriven i C och är relativt plattformsoberoende.
Communityt runt Doom var och är mycket aktivt: nivåbyggare, grafiker och kodare skapade tusentals PWADs, source ports, verktyg och editors som Doom Builder och SLADE. Motorns källkod och flexibilitet har också haft stort inflytande på senare spelmotorer och på modding-kulturen i spelvärlden.
Begränsningar och senare förbättringar
Originalmotorn saknar vissa moderna funktioner, till exempel:
- Ingen äkta 3D-geometri (inga rum över rum eller sneda ytor i originalet).
- Sprites istället för polygonal 3D-modeller för fiender och objekt.
- Begränsade ljustekniker och ingen per-pixelbelysning.
Sammanfattningsvis är Doom-motorn (id Tech 1) en banbrytande mjukvarumotor som med effektiva algoritmer och smart datarepresentation möjliggjorde en av datorspelsvärldens största framgångar. Dess öppna natur och starka community har gjort att motorn fortfarande används, studeras och utvecklas över tre decennier efter lanseringen.
Frågor och svar
F: Vad är Doom-motorn?
S: Doom-motorn är den datorkod som ligger bakom videospelet Doom. Den används också av flera andra spel, bland annat Doom 2 (men inte Doom 3, som har en egen motor). Kraftigt modifierade versioner av Doom-motorn används i Heretic, Hexen och Strife.
F: Hur representerar Doom-motorn 3D-nivåer?
S: Doom-motorn använder en teknik som kallas binär rumsindelning för att representera 3D-nivåer på ett sätt som en dator kan bearbeta snabbt.
F: Vilket språk är Doom-motorn skriven på?
S: Doom-motorn är huvudsakligen skriven i C.
F: Finns det en version av Doom Engine med öppen källkod?
S: Ja, källkoden till Doom-motorn har släppts gratis under GNU General Public License. Många fans har också gjort egna modifierade versioner som kallas source ports.
F: Vilka är några populära källkodsportar av den ursprungliga doom-motorn?
S: Populära källkodshanteringar är Boom, PrBoom, PrBoom+, Zdoom och Chocolate Doom.
F: Vilka strukturer använder Doom-motorn internt för att representera nivåer?
S: Doom-motorn representerar nivåer internt med hjälp av strukturer som kallas linedefs, sidedefs, sektorer, verticies och things (dvs. monster, föremålsdekorationer etc.).
F: Hur läser den data från filer?
S: Doom-motorn läser nivåer och andra data från en fil som kallas WAD.
Sök