Settings

Theme

CSSQuake

cssquake.com

546 points by msalsas 12 days ago · 124 comments

Reader

jedberg 12 days ago

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...

  • poisonfountain 12 days ago

    This engine is not optimised for performance. It's using CSS, after all.

    • Insanity 12 days ago

      Yeah this is a case of “not the right tool for the job”.

      It is awesome though.

    • jedberg 12 days ago

      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.

      • culi 12 days ago

        Decades of optimizing a toaster to make better toast will not make the toaster any better at making meatloaf

        • billfor 11 days ago

          We haven't had a toaster that makes better toast since 1997 (Sunbeam radiant control).

        • qmr 11 days ago
        • libria 12 days ago

          Is this the right analogy? The product is the same, the appliance is different.

          It should be "Decades of inventions from toasters to IOT AI Smart Air Fryers will not make better toast than the original"

          But I'd argue the IOT AI Smart Air Fryer should make really good toast. Which is what GP is saying.

          • matt_kantor 12 days ago

            It'd be like if the IOT AI Smart Air Fryer had a constraint of only being allowed to use friction to create heat.

            CSSQuake uses an intentionally-absurd rendering pipeline. It's not surprising that the result is sub-optimal.

            (Though I agree that the meatloaf analogy is not very good.)

          • culi 11 days ago

            I stand by my analogy.

            Both a toaster and an oven might benefit from improved electronics but in the end—whether its a toaster from the 60s or a toaster from 3008—you are still using a toaster to make a meatloaf.

            CSS is not remotely comparable to a game engine. It's not even a programming language.

        • rustystump 12 days ago

          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.

          • harrall 12 days ago

            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?”

  • amatecha 11 days ago

    Err, strange, what browser? I'm using Firefox on a ThinkPad from 2018 running Linux, and cssquake was running at a smooth 60fps just now (and at 1080p resolution vs the 320x240 or 320x200 someone would likely be running on a P133)

  • jamal-kumar 12 days ago

    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

  • jeroenhd 12 days ago

    Zero issues on Firefox + Linux. Gnome Web is stuttery and weird, though. Must be a WebKit/Safari thing.

    • jedberg 12 days ago

      Possibly, I did it on Safari. Trying it now on Chrome and it's fine.

  • api 12 days ago

    Quake compiled in C will run insanely fast at 8K full resolution on an M1.

    • jedberg 12 days ago

      You wouldn’t happen to have a pointer on where to get this version would you?

  • arendtio 11 days ago

    Maybe try Firefox.

    Most of the time, things seem to be optimized for Chrome, but with this, I actually had the impression that Firefox ran a bit smoother, but I tested it on Linux.

  • itvision 11 days ago

    Runs perfectly fine at over 60fps on my Intel Core 358H at roughly 2560x1600.

    Perhaps there's something wrong with your web browser. Try Firefox - it works beautifully there.

  • DanielHB 12 days ago

    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.

  • to11mtm 12 days ago

    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.

  • jonplackett 12 days ago

    I think you’re missing the point

jojogeo 12 days ago

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/

AzzieElbab 12 days ago

Awesome! Harder to exit than vim.

badsectoracula 12 days ago

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.

  • rofko 12 days ago

    Hi there! Thanks for the report, buttons should work properly now.

    Regarding the game logic, the build step has a small JS extractor over QuakeC/progs.dat to generate JSON source facts: states, models, attacks, sounds, etc. The browser runtime is TypeScript and consumes those for Quake-ish gameplay.

  • slopinthebag 12 days ago

    No it’s just the renderer. The game itself is Typescript.

remix2000 12 days ago

It seems like this CSS Quake needs JS to run…

  • zamadatix 12 days ago

    CSS does the rendering, the game logic is TypeScript.

  • rikschennink 12 days ago

    Maybe possible with https://lyra.horse/x86css/ ?

    • rebane2001 11 days ago

      (author of x86css)

      Not possible, but it would be possible to reimplement Quake's logic and controls in CSS to have it run without JS. I was considering doing that for my next CSS crime project, though now that CSSQuake has hit the hn frontpage there is little point in doing so.

criley2 12 days ago

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

ChrisArchitect 12 days ago

Show HN: from the dev (who's also in here, maybe a title update) https://news.ycombinator.com/item?id=48571117

divan 12 days ago

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. :)

ckeck 3 days ago

Just in time for the 30th anniversary. This looks great, well done!

itvision 11 days ago

Source code: https://github.com/LayoutitStudio/cssQuake

edwinjm 12 days ago

Is this a rip from https://github.com/NielsLeenheer/cssDOOM

sgt 12 days ago

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?

jdw64 12 days ago

I wish I could use CSS this well too

gpderetta 12 days ago

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.

msephton 11 days ago

This is a great showcase of both the PolyCSS library and CSS itself!

koolala 11 days ago

Using the Inspector on it is awesome. You can select each map piece.

alexb_ 12 days ago

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.

  • ekaryotic 12 days ago

    have to shoot the elevator buttons in this, in the original you could move into them.

rvba 12 days ago

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...!

jacobgold 12 days ago

No light theme though?

crimsonnoodle58 12 days ago

Amazing and impressive use of CSS. But at the same time, makes me appreciate what feat Carmack achieved 30 years ago on early Pentiums.

system2 11 days ago

My dark reader was on, and half of the map was black, but I played the first level from my memory. Amazing stuff, thank you.

glerk 12 days ago

Wow this is really awesome. Really really smooth. It's insane how after 25 years or so my muscle memory is still intact.

ulrischa 12 days ago

Though this is impressive, I think this is something that should not be possible with a declarative styling language

zftnb666 10 days ago

This is what I show my friends when they say CSS isn't a real programming language.

stoobs 12 days ago

Seems like you get stuck on corners and it really doesn't like running up/down slopes, neat though.

aggregator-ios 12 days ago

Wow, this is impressive. 60FPS, MacBook Air M1. I was instantly hooked and so much nostalgia.

xenophonf 12 days ago

Every time I click in the window, the menu disappears. I tried both Firefox and Chrome.

boredemployee 12 days ago

I still play quake (world) to this day. I just can't quit it.

  • amatecha 11 days ago

    Hell yeah, I still see it as the optimal arena FPS. The sequels add too much IMO. Quake 1 (QuakeWorld) was such a raw competitive arena shooter that is just pure action, no weird extra mechanics. Pick up items, get some health, shoot people. Q2/Q3 are totally fine too, but I feel like QW really just nailed everything.

    • boredemployee 11 days ago

      Yes. Quake 3, "rebranded" as Quake Live, is the second best for me. I can play both for hours.

casey2 11 days ago

Pretty fun to go into f12 and delete the enemy's face.

elinear 12 days ago

I noticed my cursor was continuously sliding upward first in Neal.fun's latest canvas multiplayer game and I experienced it here as well. Anyone else see this behavior?

And maybe a skill issue but I was unable to jump out of the slime...

justaj 11 days ago

If this is CSS only, then why does in need JS to run?

iandanforth 12 days ago

Crazy, such memories. Thanks!

xyproto 12 days ago

Has science gone too far?

cynicalsecurity 12 days ago

If this is what CSS has become, it means at some point its development went the wrong way.

  • senfiaj 12 days ago

    It still needs JS. It just avoids using canvas and does DOM manipulation + CSS instead.

  • Rohansi 12 days ago

    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.

Vaslo 12 days ago

But can it play Crysis?

zuzululu 12 days ago

this is crazy i didn't know css could do this

joehabeebs 12 days ago

Really impressive

kiyeonjeon 12 days ago

how long does it take to develop this game?

Snoopfrogg 12 days ago

This is dope.

ronbenton 12 days ago

Your scientists were so preoccupied with whether or not they could, they didn’t stop to think if they should

vldszn 12 days ago

lowkey amazing!

buffer_overlord 12 days ago

is there no sound?

AndorinaAI 12 days ago

lol that's crazy. Good job.

AbraKdabra 12 days ago

Bro how tf.

This is insane.

ikari_pl 12 days ago

Wow, this will be a great project for the forever-upcoming VRML /s

  • perilunar 11 days ago

    Well, Quake and VRML were contemporaneous, but VRML was a plugin in the browser — it was never as fast as Quake, and not intended as a game engine, though there were many worlds and models built in VRML that were at least as detailed as the Quake maps.

thenthenthen 12 days ago

Wow

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection