Demoscene: 64k Intros At Revision Demoparty
An anonymous reader writes "Last week-end at Revision demoparty, demosceners have pushed further the limits of what can be done in a single 64kb executable file. Using extensive procedural techniques and compression, Gaia Machina (video capture) and F — Felix's Workshop (video capture) are realtime animations, featuring high quality rendering, sound, 3D models, and textures."
in Saarbrücken, Germany
For some reason they never have demo parties like this in North America. Why is that?
/. is really making me feel old these days -- I was writing demos in the early 90's. I don't know if its my overall grumpy old-man mentality or not, but as impressive as these are, they're powered by a crap-ton of software running behind them. There's not 64k of assembly pumping bytes into a framebuffer and twiddling the PC speaker port to synthesize digital audio.
One thing I couldn't find in there (and I've been out of the scene for a LONG time, so I don't know how this works on new-fangled fancy computers...) -- do these write directly to the video hardware? Or do they use OS services like DirectX11, etc? When they say 64k, is it a 64k executable using up another dozen meg of OS DLLs?
I have to give it to them, they are very impressive. But are people still getting down and counting clock cycles?
Anyway, for you youngins, this might explain the demoscene a bit better: http://www.youtube.com/watch?v=iRkZcTg1JWU
During the nineties, I've done a lot of scene-related assembly code (mostly graphics and infrastructure - extenders, memory managers, etc), so I'm well aware of the limitations imposed and the usual workarounds. Most sourcecode I've seen is an ugly mess, even if it works. There are some true clever and elegant algorithms in the lower categories (128/256b and 4k), but what I've learned since then is that computer processing power is cheap, but software lasts. One of my favourite demos of all time is Heaven7, mostly because it implements a realtime raytracer than runs smoothly on a P200. But probably many of the optimizations that allowed it to run smoothly in such a limited processor aren't valid for a P3. Or a P4 (handcode optimization for any of the P4 lines is a _nightmare_). So, if it was a maintained application, the highly optimized algorithms would probably have to be rewritten, to take advantage of the latest features, and keeping "pushing the boundaries".
As an example (and more in line with the nineties), a lot of effort was put into highly optimized bresenham line algorithms, because traditional implementations implied a div operation per pixel, and integer division was awfuly slow (like 40 cycles on a 486). So, even if bresenham's requires extra instructions, it would still be a lot faster. Well, on a pentium, not only the div instruction took 1 clock cycle (like most of the other instructions), some instructions could be paired for execution (the processor had 2 execution pipes), so the bresenham implementation is usually a lot slower than using the div instruction. If you had to write maintainable software, would you worry about implementation details that could double your development time, but be obsolete on the next processor to be released? I guess not.
Demos are a kind of development on its own. They require no user interaction, no external data pulling (other than already packaged resources), have no error checking whatsoever and usually are buggy as hell - slightly different hardware may give you completely different results, or just don't run at all. So, that's why I don't like to call scene coders "real programmers". They are more of a class of "code artists", and yes, they should deserve more merit than "regular" coders, not only because their algorithmic skills, but also because of their creative way of implementing them.