CSSQuake(cssquake.com)
337 pointsby msalsasJun 20, 2026

31 Comments

buffer_overlordJun 20, 2026
is there no sound?
amarantJun 20, 2026
Is there a way to produce sound using CSS?
WaterluvianJun 20, 2026
Only screams.
circadianJun 20, 2026
Best. Comment. Ever
pwdisswordfishqJun 20, 2026

    @media speech {
        body {
            cue-before: url(/path/to/sound.ogg);
        }
    }
https://www.w3.org/TR/CSS2/aural.html
rofkoJun 20, 2026
You should be able to enable sounds with the M shortcut or through the Options menu.
thenthenthenJun 20, 2026
Wow
xenophonfJun 20, 2026
Every time I click in the window, the menu disappears. I tried both Firefox and Chrome.
AzzieElbabJun 20, 2026
Awesome! Harder to exit than vim.
deskamessJun 20, 2026
how did you exit? because nothing seems to be working.
calgooJun 20, 2026
Back button worked for me
ChrisClarkJun 20, 2026
I pressed escape, then just closed the tab
axusJun 20, 2026
I pressed Esc key, click quit. And then closed the browser tab.
pgtJun 20, 2026
In case you want to view the menu, press Tab. Click outside menu items to resume game.
gpderettaJun 20, 2026
Nice, but the view keeps clipping out to far ahead of the map (but the character seems to still be in its original position as I can die from monsters). It snaps back in place when I shoot.

edit: both on chromium and firefox, desktop linux.

edwinjmJun 20, 2026
degamadJun 20, 2026
OuterValeJun 20, 2026
Separate projects. Niels Leenheer who made CSS Doom has seen Agustin Capeletto's CSS Quake.

https://bsky.app/profile/html5test.com/post/3mok5febchs2g

panteliskJun 20, 2026
And I think both have seen these much older handcrafted css3d engines

- https://pantel.is/projects/css3d/

- https://keithclark.co.uk/labs/css-fps/ (the original)

but quake and doom took it to the next level :)

criley2Jun 20, 2026
Really cool experiment. A lot of jank. It would sometimes rubber band me back, movement was grid aligned in a way that made accessing the secret room challenging, and the whole tab unexpectedly crashed with no error. 5 star would play again
remix2000Jun 20, 2026
It seems like this CSS Quake needs JS to run…
zamadatixJun 20, 2026
CSS does the rendering, the game logic is TypeScript.
stoobsJun 20, 2026
Seems like you get stuck on corners and it really doesn't like running up/down slopes, neat though.
divanJun 20, 2026
As someone who passionately and ardiently hates prolifiration of this set of _hacks on top of hacks_ called CSS (and CSS/JS/HTML aka Web-stack), I must say this is good and valid use case for CSS. :)
kiyeonjeonJun 20, 2026
how long does it take to develop this game?
sgtJun 20, 2026
Very cool. I wonder what the limitations are? I see the dog I shot is floating in the air. Is that maybe a CSS thing or is it fixable?
freakynitJun 20, 2026
.dog { display: float; }
skvmbJun 20, 2026
You win! I laughed way too hard at this. Boss man is now giving me the side eye.
ikari_plJun 20, 2026
Wow, this will be a great project for the forever-upcoming VRML /s
ChrisArchitectJun 20, 2026
Show HN: from the dev (who's also in here, maybe a title update) https://news.ycombinator.com/item?id=48571117
alexb_Jun 20, 2026
Doesn't work at all for me. I keep jumping around and clipping through objects, can't even leave the first room without being stuck in the doorway to the elevator.
ekaryoticJun 20, 2026
have to shoot the elevator buttons in this, in the original you could move into them.
jojogeoJun 20, 2026
This is the first thing I've seen on the intertubes for a /long/ time which genuinely makes me smile, thank you op.

Checked out https://cssdoom.wtf/ and loved it too, both are far lighter than current affairs. \o/

cynicalsecurityJun 20, 2026
If this is what CSS has become, it means at some point its development went the wrong way.
RohansiJun 20, 2026
The game logic here is running in JS. Only the rendering is handled by HTML and CSS. Is it really wrong that you can do this? All it requires is 3D transformation of elements.
senfiajJun 20, 2026
It still needs JS. It just avoids using canvas and does DOM manipulation + CSS instead.
SnoopfroggJun 20, 2026
This is dope.
iandanforthJun 20, 2026
Crazy, such memories. Thanks!
jdw64Jun 20, 2026
I wish I could use CSS this well too
MattCruikshankJun 20, 2026
Don't worry, OP still can't center a div.
jdw64Jun 20, 2026
I think I've finally found something in common between OP and me
qingcharlesJun 20, 2026
I was centering divs just fine, but now they took away Fable and I'm lost.
crimsonnoodle58Jun 20, 2026
Amazing and impressive use of CSS. But at the same time, makes me appreciate what feat Carmack achieved 30 years ago on early Pentiums.
badsectoraculaJun 20, 2026
Impressive. I guess this isn't only the renderer made to use CSS but also a full recreation of the engine and logic right? My guess is because a bunch of things do not behave like the original game, e.g. some buttons need to be shot instead of touched to activate, some secret doors open by touching them instead of being shot, etc.
jedbergJun 20, 2026
This is an awesome achievement, but I can't help but notice that Quake ran smoother on my Pentium-133 PC in the 90s than it runs on my Mac M1 Pro...
poisonfountainJun 20, 2026
This engine is not optimised for performance. It's using CSS, after all.
InsanityJun 20, 2026
Yeah this is a case of “not the right tool for the job”.

It is awesome though.

jedbergJun 20, 2026
Of course, but you'd think after 30 years the compute power should be enough to overcome any lack of optimization. It's a testament to the engineering that went into the original Quake engine.
culiJun 20, 2026
Decades of optimizing a toaster to make better toast will not make the toaster any better at making meatloaf
rustystumpJun 20, 2026
I am on the ground. This is great.

Still, why css is as slow as it is given what tech like imgui can do is a little wild.

harrallJun 20, 2026
CSS is a general rendering solution, not something built for rendering 3D games.

And no one has spent any time optimizing 3D transforms to make a game workable because no one would be able to justify the use of their time like that. It wouldn’t even give you brownie points ‘cause most people would just ask “why?”

DanielHBJun 20, 2026
Wait, did Quack run on Pentium-133? I had a Pentium MMX 233mhz and I always assumed it didn't ran well so I never bother to get it.
lightedmanJun 20, 2026
Quake ran on a P75 with 8MB RAM in DOS mode. Not the best but it worked at 320x200.
jedbergJun 20, 2026
It must have, because that's what I had in 1996 and I played it.
iamphilraeJun 20, 2026
If you had a 3dfx card it would run silky smooth on a Pentium-120 (what I had at the time)! Quake 2 ran pretty well too if I recall.
UltraSaneJun 20, 2026
Quake ran well on my 100Mhz Pentium.
bluedinoJun 20, 2026
Bare minimum for it being playable was a 486DX4 100MHz or similar, but with the floating point Quake really wanted a Pentium
GarlefJun 20, 2026
I played it on a Pentium with 60mhz - it was allright
jonplackettJun 20, 2026
I think you’re missing the point
to11mtmJun 20, 2026
Either you had a Voodoo on your P133 or whatever the M1 is doing is having a bad time...

On my 7945HX this is plenty fast.

jamal-kumarJun 20, 2026
For what it's worth it works like smooth butter under Chrome on an M2, on Safari it's clunky and seems to clip alot
VasloJun 20, 2026
But can it play Crysis?
AndorinaAIJun 20, 2026
lol that's crazy. Good job.
zuzululuJun 20, 2026
this is crazy i didn't know css could do this
boredemployeeJun 20, 2026
I still play quake (world) to this day. I just can't quit it.
aggregator-iosJun 20, 2026
Wow, this is impressive. 60FPS, MacBook Air M1. I was instantly hooked and so much nostalgia.
ronbentonJun 20, 2026
Your scientists were so preoccupied with whether or not they could, they didn’t stop to think if they should
aruametelloJun 20, 2026
jacobgoldJun 20, 2026
No light theme though?
rvbaJun 20, 2026
After leaving the first area to the bridge... was the sky really so close to the ground in the original game, or the old monitors made it look differently?

Also nice achievement...!