Doom Engine (id Tech 1) – definícia, architektúra a zdrojové porty

Doom Engine (id Tech 1) – detailná definícia, architektúra, technológie a najlepšie zdrojové porty (Boom, PrBoom, ZDoom, Chocolate Doom) pre modovanie a portovanie.

Autor: Leandro Alegsa

Engine Doom, niekedy nazývaný ID Tech 1, je softvérové jadro (engine) pôvodnej videohry Doom. Používal sa aj v niekoľkých ďalších tituloch vrátane Doom 2 (nie však v Doom 3, ktorý má úplne iný engine). Silne upravené verzie enginu Doomu tvorili základ hier ako Heretic, Hexen a Strife, pričom autori týchto hier pridali vlastné rozšírenia a funkcie.

Definícia a historický kontext

Engine hry Doom je návrh softvéru, ktorý riadi načítanie dát, logiku hry, kolízie, zvuk a vykresľovanie scén. Je prevažne napísaný v jazyku C. V roku 1997 id Software sprístupnila zdrojový kód Doomu (pôvodné uvoľnenie obsahovalo určité obmedzenia) a neskôr bol kód vydaný pod licenciou GNU GPL, čo výrazne uľahčilo vznik komunít, modov a tzv. zdrojových portov. Výsledkom bola rozsiahla komunita, ktorá mapovala, upravovala a portovala Doom na množstvo platforiem.

Architektúra úrovní a formát WAD

Úrovne v engine Doom sú uložené v súbore typu WAD (Where's All the Data). WAD obsahuje množstvo nazývaných "lumpov" — textúry, sprity, mapy, zvuky, palety a ďalšie zdroje. Rozlišujeme IWAD (inštalačný WAD so základným obsahom hry) a PWAD (dodatočné modifikácie a mapy vytvorené komunitou).

Interná reprezentácia úrovní využíva tieto hlavné štruktúry: linedefs, sidedefs, sektory (sectors), verticies a things (entitity ako príšery, predmety, dekorácie). Na základe týchto prvkov engine definuje geometriu, výšky podláh a stropov, textúry a vlastnosti osvetlenia.

Binárne rozdelenie priestoru (BSP) a viditeľnosť

Na efektívne zobrazenie scén engine používa techniku binárneho rozdelenia priestoru (BSP). BSP strom rozdelí mapu na uzly a subsektory, čo umožňuje rýchlo určiť, ktoré časti mapy sú z aktuálnej pozície hráča viditeľné. Tento prístup minimalizuje počet stien, ktoré je potrebné vykresliť, a zlepšuje výkon pri CPU-renderovaní.

Softvérové renderovanie a technické detaily

Doom vykresľoval celé scény na procesore, nie na grafickej karte, pretože väčšina grafických kariet v roku 1993 nemala 3D akceleráciu. Renderer používal stĺpcové vykresľovanie stien (vertical column rendering), bitmapové sprity pre nepriateľov a predmety a systém nazývaný "visplanes" pre podlahy a stropy. Pre zvýšenie rýchlosti sa používalo pevné bodové (fixed‑point) aritmetické operácie, LUT tabuľky (lookup tables) a colormap paleta VGA 256 farieb. Svetelné efekty boli riešené pomocou sektormi priradených úrovní svetla a colormap transformácií.

Pôvodný engine nemal skutočné 3D: nepriateľské modely sú 2D sprity, mapy nemali skutočné "room-over-room" (čiže skutočné prekrytie miestností) — také efekty sa dosahovali trikmi so sektorovými výškami a šikovným využitím renderingových obmedzení. Funkcie ako náklon kamery, nakláňanie podlahy (slope) alebo úplné 3D modely prišli až v neskorších zdrojových portoch.

Herná logika, kolízie a zvuk

Logika hry (AI príšer, interakcie, predmety) je v Doome riešená udalostne a cez štruktúry "things". Kolízie sú primárne riešené na úrovni sektorov a linedefov. Zvuk a hudba boli v origináli často v MIDI formáte alebo digitálne sample pre Sound Blaster a podobné zariadenia — porty neskôr pridali podporu pre moderné zvukové subsystémy a formáty.

Zdrojové porty a rozšírenia

Keď bol zdrojový kód sprístupnený, komunita vytvorila množstvo tzv. zdrojových portov — upravených implementácií pôvodného enginu, ktoré pridávajú nové funkcie, opravujú chyby alebo zachovávajú pôvodné správanie. Medzi najznámejšie patria Boom, PrBoom, PrBoom+, Zdoom a Chocolate Doom. Rôzne porty sa zameriavajú na odlišné ciele:

  • Kompatibilita a presnosť: PrBoom / Chocolate Doom – cieľom je čo najpresnejšie reprodukovať správanie originálu (vrátane chýb), aby mapy a demo súbory fungovali tak, ako v origináli.
  • Rozšírené herné možnosti: Boom, ZDoom – pridávajú nové herné mechaniky, detaily mapovania, scripting (napr. ACS v ZDoom), 3D podlahy a ďalšie moderné prvky.
  • Hardvérové akcelerátory a grafické vylepšenia: GLBoom/Doombuilder a ďalšie – implementujú OpenGL renderer, vyhladzovanie textúr, vyššie rozlíšenia a pod.

Zdrojové porty tiež umožnili cross‑platform portovanie (Windows, Linux, macOS, konzoly, mobilné zariadenia, Raspberry Pi, web cez JavaScript/Emscripten a dokonca aj niektoré kalkulačky či embedded zariadenia), čo robí Doom jedným z najportovanejších engineov vôbec.

Prečo je Doom ľahko prenositeľný

  • Primárne napísaný v jazyku C s relatívne malým množstvom platformovo špecifického kódu.
  • Jasné oddelenie medzi platformovo závislou vrstvou (video, zvuk, vstup) a samotnou logikou hry, čo uľahčuje implementáciu novej "portovacej vrstvy".
  • Komunita vytvorila nástroje a implementácie, ktoré zjednodušujú preklad na nové platformy.

Obmedzenia a dedičstvo

Pôvodný Doom engine bol navrhnutý s ohľadom na obmedzenia svojej doby (obmedzená pamäť, pomalé CPU, 256‑farbová paleta). To znamenalo kompromisy: žiadne skutočné 3D modely, obmedzená vertikálna sloboda, neprítomnosť skutočných prechodov izieb nad sebou. Napriek týmto obmedzeniam však technické riešenia (BSP, optimalizované softvérové vykresľovanie, pamäťové triky) umožnili plynulý zážitok aj na vtedajšom hardvéri.

Dedičstvo enginu Doom je obrovské: jeho otvorenie zdrojov dalo vznik aktívnej komunite, stovkám tisíc modifikácií (mapy, mody, úplné konverzie) a stovkám portov. Mnohé techniky vyvinuté pre Doom ovplyvnili neskorší vývoj enginov pre FPS hry a stále slúžia ako študijný materiál pre programátorov a fanúšikov hier.

Engine Doomu zostáva aj dnes dôležitou časťou histórie počítačových hier — ako príklad efektívneho softvérového vykresľovania, otvorenej komunity a trvácnosti kvalitného herného dizajnu.

Otázky a odpovede

Otázka: Čo je to engine Doom?


Odpoveď: Engine Doom je počítačový kód, ktorý stojí za videohrou Doom. Využíva ho aj niekoľko ďalších hier vrátane Doom 2 (nie však Doom 3, ktorý má vlastný engine). Silne modifikované verzie enginu Doom sa používajú v hrách Heretic, Hexen a Strife.

Otázka: Ako engine Doom zobrazuje 3D úrovne?


Odpoveď: Engine Doom používa techniku nazývanú binárne rozdelenie priestoru na reprezentáciu 3D úrovní spôsobom, ktorý počítač dokáže rýchlo spracovať.

Otázka: V akom jazyku je napísaný engine Doom?


Odpoveď: Engine Doom je napísaný prevažne v jazyku C.

Otázka: Je k dispozícii verzia Doom Engine s otvoreným zdrojovým kódom?


Odpoveď: Áno, zdrojový kód enginu Doom bol uvoľnený zadarmo pod všeobecnou verejnou licenciou GNU. Mnohí fanúšikovia vytvorili aj svoje vlastné modifikované verzie nazývané source ports.

Otázka: Aké sú niektoré populárne zdrojové porty pôvodného enginu doom?


Odpoveď: Medzi populárne zdrojové porty patria Boom, PrBoom, PrBoom+, Zdoom a Chocolate Doom.

Otázka: Aké štruktúry používa engine doom interne na reprezentáciu úrovní?


Odpoveď: Engine doom interne reprezentuje úrovne pomocou štruktúr nazývaných linedefs, sidedefs, sectors, verticies a things (čo znamená príšery, dekorácie predmetov atď.).

Otázka: Ako číta údaje zo súborov?


Odpoveď: Engine doom číta úrovne a ďalšie údaje zo súboru nazývaného WAD.


Prehľadať
AlegsaOnline.com - 2020 / 2025 - License CC3