Hirdetés

A kedvenc emberem, aki az oszcilloszkóp után CSS-ben is összerakta a DOOM-ot



|

Niels Leenheer egy zseni, aki folyamatosan a lehető legmókásabb módon tologatja ki a határokat.

Hirdetés

Egy holland fejlesztő, Niels Leenheer elkészítette a Doom egy teljesen játszható változatát úgy, hogy a játék grafikáját kizárólag HTML-elemekkel és CSS-sel rajzolta ki. Nincs hagyományos grafikus motor, a pályák falai, padlói, szörnyei és tárgyai mind egyszerű div elemekből állnak.

A JavaScript csak a játékmenetet kezeli, vagyis a mozgást, az ellenfelek viselkedését és a játéklogikát, maga a megjelenítés szinte teljes egészében CSS-en múlik.

Leenheer egy igazi zseni, aki korábban már készített egy különleges Doom-verziót, amely oszcilloszkópon futott, és ebben is annak a projektnek a kódját használta fel újra. A Doom eredeti WAD fájljából kinyerte a pályaadatokat, majd minden falat, padlót és objektumot külön divként helyezett el a böngészőben.

A padlók és mennyezetek is egyszerű div elemek, amelyeket 90 fokkal elforgatott, majd ezeket pontosan a Doom pályáinak alakjára vágta, az egyes szektorok textúrái is úgy illeszkednek egymáshoz, mintha egyetlen nagy felületre lennének festve.

Mivel a CSS-ben nincs valódi kamera, azt találta ki, hogy itt nem a játékos mozog a világban, hanem az egész világ mozog a játékos körül. A JavaScript néhány egyedi CSS-változóban tárolja a játékos pozícióját és irányát, a CSS pedig ezek alapján eltolja és elforgatja a teljes pályát.

Az ellenfelek és a lövedékek is CSS segítségével jelennek meg. Az impek és más szörnyek mindig a játékos felé fordulnak, ahogy az eredeti Doomban is. A sprite-ok különböző képkockáit CSS-animációk váltogatják, míg a lövedékek egyszerűen egyik pontból a másikba repülnek egy translate animáció segítségével.

Hirdetés

A világítás is meglepően elegáns módon működik. A Doom egyes pályarészei sötétebbek vagy világosabbak, ezt pedig a fejlesztő úgy oldotta meg, hogy minden területhez egy külön fényerőértéket adott, amit a CSS filter: brightness() használ. Így ha egy szoba sötét, minden benne lévő objektum automatikusan halványabb lesz.

A projektnek vannak korlátai. A böngészők nem igazán arra készültek, hogy több ezer 3D-ben forgatott div elemet jelenítsenek meg egyszerre, ezért a nagyobb pályák már megakaszthatják a teljesítményt, különösen mobilon. Emiatt a fejlesztőnek külön optimalizációt kellett írnia, amely elrejti azokat az objektumokat, amelyeket a játékos éppen nem lát.

Leenheer szerint a projekt célja nem az volt, hogy a CSS leváltsa a modern grafikus technológiákat, hanem az, hogy megmutassa, mire képes a mai webes technológia.

"Ez arról szól, hogy feszegetjük a CSS határait"

Hirdetés

Úgy tűnik, AdBlockert használsz, amivel megakadályozod a reklámok megjelenítését. Amennyiben szeretnéd támogatni a munkánkat, kérjük add hozzá az oldalt a kivételek listájához, vagy támogass minket közvetlenül! További információért kattints!

Engedélyezi, hogy a https://www.pcwplus.hu értesítéseket küldjön Önnek a kiemelt hírekről? Az értesítések bármikor kikapcsolhatók a böngésző beállításaiban.