Mooncheese, Old-School Graphic Demo in Pure DHTML/Javascript

The Assembly demo party in Helsinki is one of the largest geek gatherings in the world, where thousands converge to watch and compete in graphic demo competitions. (View the panorama photo from last year’s event, with over 5,000 attendees.)

This year, the winner of the “Browser Demo” category was Mooncheese, written in pure Javascript and DHTML. Several classic real-time demo effects are represented, such as copper bars, tunnels, voxels, Mandelbrot zooms, and various vector effects. In Javascript!

You can view the Mooncheese demo mirrored locally on my server, or download the source locally.

It works well in Firefox 0.9 and Internet Explorer 6, but not Safari. Read the release notes for more information.


    I think it’ll still be a while before something of Second Reality’s magnificence, given the fact that this little demo was keeping my CPU steadily at 100% 🙂

    But it’s really impressive nevertheless.

    Heh, that sure does remind me of old-school demos: it didn’t work right. Firefox just showed a black screen after loading and IE managed not to load all of the images so I got neato animated placeholder boxes moving around.

    Cool, but ridiculously oversized at 3.6MB: almost every scene consists of pre-rendered pngs. Honestly, 179 pngs to show some copperbars? Could’ve at least generated them with css border styles instead…

    Indeed, pretty cool. But to avoid the many problems of preload, one must download the sources and run it locally. The demo as a whole is nice, but the effects seems slow and badly optimized ( in term of execution speed and size ). Now I suppose that after moaning like I just did, I’ll have to release a complete demo in DHTML. ^___^

    Woo, I’m famous 🙂

    As far as optimisation goes: the size limit in the competition was 5Mb, so size optimisation wasn’t really my priority – no reason to compromise the eye-candy for the sake of practicality. We’ve got the 5K competition for that – well, when it isn’t in limbo anyway.

    Speed optimisation – hmm, possibly. This is the first time I’ve implemented proper 3D algorithms on any platform, so I may well have missed a trick or two. The strange thing about Javascript, though, is that the hard number-crunching takes up comparatively little time in comparison to the pixel-pushing. Anyway, Mathieu… yes, you certainly will 🙂

    Incidentally, the demo will grab as high a frame rate as it can (up to a maximum of 50fps), so 100% CPU usage is to be expected.

    This is great stuff! I’m going to show this to the folks at and see if they can use it as a benchmark for dhtml…

    Anyway, if you are looking for like minded folks – there are many folks doing pure javascript and dhtml demoscene kinda stuff here:

    For instance someone created a wolfenstein-style raycasting engine, and there’s some 3d metaballs, etc.

    as a follow up:

    tomorrow (thurday august 26th) is “art night” here in helsinki. there is something on that is related to the assembly demo party:


    Computer music and graphics demos and a mood-lit room with background music made up of the most peculiar ring tones. Demo team rep to answer questions. Note! Doors close at 6.45.

    WTC • ALEKSANTERINKATU 17 •6 to 7.30 pm ”

    i’m hoping to have a look and take some pictures.


    Over a dialup connection, no music, in Firefox 0.9 on Windows, I get nothing but moving image placeholders.

    Well – I tried running Redbug on Win XP, IE6, P3-1000 machine, and after about 10 seconds the PC powered-off. On reboot I got a prompt saying overclocking failed, F1 for setup, F2 to continue. I chose F2 and got a disk-read failure message. I rebooted again, and then about 5 seconds into the reboot, before any text was displayed, the PC powered down again. And now I’m here searching for answers. I hope this was purely a co-incidence, but something makes me wonder…

    Correction. P4-3000. I am thinking the BIOS has been reset and now my boot configurations are wrong. I’ve seen a similar message before, including NTLDR is missing – which is probably because it’s booting to the wrong drive (one of the IDEs instead of the SATA)… but I don’t recall the correct configuration.

    Whatever. Nasty side-effect, I’ll say – maybe it just exposed a hardware bug on my PC. shrug.

Comments are closed.