CSS is DOOMed!
-
Want to know how I created this?
Check my blog post with an explanation of the math, the techniques I used and the problems I ran into.
CSS is DOOMed!
Every wall, floor, barrel, and imp is a div — DOOM rendered in 3D entirely in CSS. Using 3D transforms, CSS math functions, @property, clip-path, anchor positioning, and SVG filters to build a fully playable 3D first-person shooter in the browser without Canvas or WebGL.
Hello my name is Niels Leenheer (nielsleenheer.com)
Want to know even more?
I'm speaking at #cssday where I will give a talk called "CSS Doom Lasers". Where I will talk about CSS and DOOM and much more. Hint: Lasers.
Tickets are still on sale:
https://cssday.nl -
Want to know how I created this?
Check my blog post with an explanation of the math, the techniques I used and the problems I ran into.
CSS is DOOMed!
Every wall, floor, barrel, and imp is a div — DOOM rendered in 3D entirely in CSS. Using 3D transforms, CSS math functions, @property, clip-path, anchor positioning, and SVG filters to build a fully playable 3D first-person shooter in the browser without Canvas or WebGL.
Hello my name is Niels Leenheer (nielsleenheer.com)
@html5test Incredible! Absolutely incredible






-
CSS is DOOMed!
I've build DOOM in CSS and every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
cssDOOM
DOOM rendered entirely in CSS. Every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
(cssdoom.wtf)
Try it out! But... not every browser can handle it. This is taking the browser to its limit. Chrome has some issues. Safari too. Bugs will be filed.

@html5test lol, poor browser developers receiving this in a bug report.
-
CSS is DOOMed!
I've build DOOM in CSS and every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
cssDOOM
DOOM rendered entirely in CSS. Every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
(cssdoom.wtf)
Try it out! But... not every browser can handle it. This is taking the browser to its limit. Chrome has some issues. Safari too. Bugs will be filed.

@html5test nice! i used css transforms to replicate the apple cover flow thing when they were brand new, but this is on another level

-
@html5test nice! i used css transforms to replicate the apple cover flow thing when they were brand new, but this is on another level

@dysfun Same principle. Just a few more divs

-
CSS is DOOMed!
I've build DOOM in CSS and every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
cssDOOM
DOOM rendered entirely in CSS. Every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
(cssdoom.wtf)
Try it out! But... not every browser can handle it. This is taking the browser to its limit. Chrome has some issues. Safari too. Bugs will be filed.
@html5test Vanadium wants me to end its suffering -
@html5test Vanadium wants me to end its suffering
-
CSS is DOOMed!
I've build DOOM in CSS and every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
cssDOOM
DOOM rendered entirely in CSS. Every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
(cssdoom.wtf)
Try it out! But... not every browser can handle it. This is taking the browser to its limit. Chrome has some issues. Safari too. Bugs will be filed.

@html5test FF-ESR (on Debian) renders the gun+hand in the top-left instead of in the middle-bottom.
Also I couldn't figure out how to shoot.
Very cool. Congratulations.
-
CSS is DOOMed!
I've build DOOM in CSS and every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
cssDOOM
DOOM rendered entirely in CSS. Every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
(cssdoom.wtf)
Try it out! But... not every browser can handle it. This is taking the browser to its limit. Chrome has some issues. Safari too. Bugs will be filed.

@html5test CSS it's Turing complete? Another vector to run propietary softwaer? A good thing I use Mothra under 9front and #Dillo under GNU Guix.
BTW you can provide full levels from FreeDoom (better if you build a daily compilation, as it has really good but recent changes) with Deutex and GNU make: https://freedoom.github.io
Now you can provide the two full episodes.
-
@ZoidbergForPresident It should work when you go to Full screen mode (left square button in the top right), which uses Pointer Lock to capture the mouse if supported by the browser.
-
@html5test FF-ESR (on Debian) renders the gun+hand in the top-left instead of in the middle-bottom.
Also I couldn't figure out how to shoot.
Very cool. Congratulations.
@BoydStephenSmithJr The most likely reason is the ESR probably does not yet support Anchored Positioning, which is used for positioning the gun relative to the status bar.
-
CSS is DOOMed!
I've build DOOM in CSS and every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
cssDOOM
DOOM rendered entirely in CSS. Every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
(cssdoom.wtf)
Try it out! But... not every browser can handle it. This is taking the browser to its limit. Chrome has some issues. Safari too. Bugs will be filed.

@html5test runs perfectly on Firefox!
-
CSS is DOOMed!
I've build DOOM in CSS and every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
cssDOOM
DOOM rendered entirely in CSS. Every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
(cssdoom.wtf)
Try it out! But... not every browser can handle it. This is taking the browser to its limit. Chrome has some issues. Safari too. Bugs will be filed.

@html5test The gun is appearing in the upper left corner
-
@html5test The gun is appearing in the upper left corner
@devnull this is probably because the browser you are using does not support Anchored Positioning.
-
@devnull this is probably because the browser you are using does not support Anchored Positioning.
@html5test Web "standards" they call it

It is supported only since Firefox 147 according to this. Which doesn't include Firefox ESR yet…
-
@html5test Web "standards" they call it

It is supported only since Firefox 147 according to this. Which doesn't include Firefox ESR yet…
@devnull The whole idea of this project is to see what is possible with modern web standards and pushing the limits and not to create something that works everywhere
️ -
CSS is DOOMed!
I've build DOOM in CSS and every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
cssDOOM
DOOM rendered entirely in CSS. Every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
(cssdoom.wtf)
Try it out! But... not every browser can handle it. This is taking the browser to its limit. Chrome has some issues. Safari too. Bugs will be filed.

@html5test
Wow
🤩 -
CSS is DOOMed!
I've build DOOM in CSS and every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
cssDOOM
DOOM rendered entirely in CSS. Every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
(cssdoom.wtf)
Try it out! But... not every browser can handle it. This is taking the browser to its limit. Chrome has some issues. Safari too. Bugs will be filed.

@html5test Surprisingly, it works in Firefox mobile. However, the "Doom" font color is inverted.
-
CSS is DOOMed!
I've build DOOM in CSS and every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
cssDOOM
DOOM rendered entirely in CSS. Every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
(cssdoom.wtf)
Try it out! But... not every browser can handle it. This is taking the browser to its limit. Chrome has some issues. Safari too. Bugs will be filed.

@html5test Wow, that's awesome. The only thing not working with my xbox controler was the shooting, no button allowed me to draw fire.
-
CSS is DOOMed!
I've build DOOM in CSS and every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
cssDOOM
DOOM rendered entirely in CSS. Every wall, floor, barrel, and imp is a div, positioned in 3D space using CSS transforms.
(cssdoom.wtf)
Try it out! But... not every browser can handle it. This is taking the browser to its limit. Chrome has some issues. Safari too. Bugs will be filed.

@html5test Works surprisingly smooth in Firefox.
