Doomi mootor (ID Tech 1): omadused, ajalugu ja lähtekoodipordid
Doomi mootor (ID Tech 1): ajalugu, tehnilised omadused ja populaarsemad lähtekoodipordid — Boom, PrBoom, ZDoom jt. Avatud lähtekood, modid ja platvormideülene tugi.
Doom-mootor, mida sageli nimetatakse ID Tech 1, on mängumootor, mis juhib originaalset Doom-i. Sama (tihti tugevalt muudetud) mootoretüüpi kasutati ka mängudes nagu Doom 2 ning eraldiseisvates, sellel põhinevates tiitlites nagu Heretic, Hexen ja Strife. (Doom 3-il on eraldi ja uuem mootor.)
Omadused
- 2.5D arhitektuur: mootor kasutab binaarset ruumipartitsioneerimist (BSP) ja sektoreid, et luua kiire ja tõhus 3D-efekt — tegelikult on maailm modelleeritud 2D-plaanina, millele on lisatud põranda ja lae kõrgused, mistõttu mõnda tüüpi «ruum üle ruumi» struktuuri ei olnud algselt võimalik ilma trikkideta teha.
- Struktuursed elemendid: tasemed on esitatud linedefide, sidedefide, sektorite, vertikaalide (seg) ja «asjade» (things — koletised, esemed, dekoratsioonid) abil; tasemed ja muud andmed salvestatakse WAD-failidesse (IWAD/PWAD).
- Tarkvara-renderdus: kogu pildi rasteriseerimine tehti protsessoril — selleks kasutati väga optimeeritud software-rendererit (näiteks visplaneli ja span’ide meetodid), kuna tol ajal ei olnud 3D-kiirendust laialdaselt saadaval.
- Värvid ja palett: Doom kasutas 256-värvilist paletti, colormap-efekte ja kauguse põhist tumendamist (distance fog) materjalide ja sügavuse tajumiseks.
- Kiiruseoptimeerimine: lahendati fikseeritud koma aritmeetika, lookup-tabelite, BSP-puu kiire külgede eelarvutamise ning muude madalatasemeliste trikidega, et mäng töötaks tol ajal levinud aeglastel masinatel.
- Rohke moditamise tugi: WAD-formaat ja avatud lähtekood võimaldasid kogukonnal luua kaarte, tekstuure ja terveid mängureegleid (mods).
- Võrgumäng: originaalmootor toetas kohalike võrkude ja modemühendusi; hilisemad portid lisasid laiemama TCP/IP-toe ja edasised võrgufunktsioonid.
Tehniline ülesehitus
Doomi mootor kombineerib 2D-tasandiandmete (planeeritud plaan) ja sektori kõrguseinfo, et luua illusioon 3D-ruumist. Peamised tehnilised komponendid on:
- BSP (Binary Space Partitioning): jagab taseme ruumi hierarhiliseks puuks, mis võimaldab kiiresti määrata nähtavuse ja joonistamiskorra (pahatihti «front-to-back»), mis vähendab tarbetute polygonide arvuga töötlemist.
- Visplane'id: põrandate ja lagede rasteriseerimiseks kasutatav meetod, mis ühendab sama tekstuuri ja kõrgusega laienevaid alasid üheks renderdusüksuseks.
- Segid (segs) ja subsektorid: linedefidest arvestatakse segid (sektsioonide vertikaalobjektid), mida kasutatakse seina sprite’ide ja tekstuuride õigeks kuvamiseks perspektiivis.
- Sprite-põhine objektisüsteem: kõik liikuvad objektid (koletised, lask, esemed jne) on 2D-sprite’id, mis pöörduvad mängija suhtes – see vähendab geomeetria keerukust.
- WAD-failid: sisaldavad kaarte, spritesid, tekstuure (patchid), «flats» (põranda-/lagi-texture’id) ja paletti; IWAD sisaldab mängu binaarset sisu, PWAD-id on kasutaja lisad.
Ajalugu ja lähtekoodi avaldamine
Doomi mootor kujunes kiiresti murranguliseks tänu oma mängitavusele, sooritusele ja moditamise võimalustele. Id Software avaldas mootori lähtekoodi avalikkusele, mis võimaldas arendajatel ja entusiastidel selle põhjal edasi arendada ja portida paljudele platvormidele. Lähtekoodi levik GPL-i alusel tõi kaasa suure hulga kogukonnapõhiseid «source port» projekte, mis lisasid uusi funktsioone, paremat ühilduvust ja tuge tänapäevastele sistemidele.
Lähtekoodiportid ja modifikatsioonid
Paljud fännide loodud «lähtekoodiportid» parandasid originaalmootori funktsionaalsust, lisasid täiendavat konfiguratsioonitug ja tänapäevaseid parendusi. Mõned tuntumad näited:
- Boom (laiendused ja parendused algsele mootorile)
- PrBoom ja PrBoom+ (täpne jooksutamine ja täiendused, populaarsed ka võistlusliku kaartide testimise jaoks)
- Zdoom (hilisemates versioonides ZDoom, mis lisas palju uusi skriptimis- ja graafikafunktsioone)
- Chocolate Doom (püüab käituda täpselt nagu originaal, säilitades ajaloolise täpsuse)
- Lisaks on tuntud projektid nagu Eternity Engine, Doom Legacy, Odamex ja paljud teised, mis toovad kaasa erinevaid funktsioone (nt kaasaegne võrgutoetus, kõrgema eraldusvõime tugi, lisatud renderdusvõimalused).
Piirangud ja eelistused
- Ei ole täielik 3D: mootor on «2.5D» — sektoritel on üks põranda- ja lae kõrgus, mis piirab tõelist üksteise kohal paiknevate ruumide modelleerimist ilma trikkideta.
- Sprite-põhised karakterid: koletised ja objektid ei ole polügoonsed 3D-mudelid, vaid 2D-kujud, mis esitavad suunda simuleeriva animatsiooni.
- Valgustuse piirangud: valgustus on sektoripõhine ja piiratud colormap-mehhanismiga — puudub dünaamilise valgustuse ja varjutuse per-pixel arvutus, mis on tänapäevaste mootorite standardiks.
Pärand ja mõju
Doomi mootori mõju on olnud suur: selle avamine ja portimine andsid tunnistust avatud lähtekoodi jõust mänguarenduses, võimaldades õpetust, uurimist ja kaupade ning fänniprojektide laialdast levikut. Mitmed tänapäeva mootorite ja mängude arendajad õppisid optimeerimisvõtteid ja arhitektuurilisi lahendusi Doomist. Veel tänapäeval kasutatakse Doomi maastikku modite loomiseks, retro-arhitektuuri uurimiseks ja mitmesuguste eksperimentide aluseks.
Selle lihtsuse ja optimeerimise kombinatsioon tekitas mootorile pika eluea: see on portitud ja jookseb laias valikus seadmetel alates personaalarvutitest kuni pihuarvutite ja sisseehitatud seadmeteni, mis tõestab mootori elegantset disaini ja laialdast kasutatavust.
Küsimused ja vastused
K: Mis on Doomi mootor?
V: Doomi mootor on arvutikood, mis on videomängu Doom taga. Seda kasutavad ka mitmed teised mängud, sealhulgas Doom 2 (kuid mitte Doom 3, millel on oma mootor). Doomi mootori tugevalt modifitseeritud versioone kasutatakse mängudes Heretic, Hexen ja Strife.
K: Kuidas kujutab Doomi mootor 3D-tasandeid?
V: Doomi mootor kasutab 3D-tasandite kujutamiseks tehnikat, mida nimetatakse binaarseks ruumi partitsioneerimiseks, nii et arvuti suudab neid kiiresti töödelda.
K: Millises keeles on Doomi mootor kirjutatud?
V: Doom Engine on kirjutatud peamiselt C keeles.
K: Kas Doom Engine'ist on saadaval avatud lähtekoodiga versioon?
V: Jah, Doom Engine'i lähtekood on avaldatud tasuta GNU General Public License'i alusel. Paljud fännid on teinud ka oma modifitseeritud versioonid, mida nimetatakse lähtekoodiportideks.
K: Millised on mõned populaarsed algse doom-mootori lähtekoodiportid?
V: Populaarsed lähtemootori portid on Boom, PrBoom, PrBoom+, Zdoom ja Chocolate Doom.
K: Milliseid struktuure kasutab doom-mootor sisemiselt tasemete kujutamiseks?
V: Doom-mootor kujutab tasemeid sisemiselt, kasutades struktuure nimega linedefs, sidedefs, sektorid, verticies ja asjad (st koletised, esemete kaunistused jne).
K: Kuidas ta loeb andmeid failidest?
V: Doom-mootor loeb tasemeid ja muid andmeid failist nimega WAD.
Otsige