Monday, December 14, 2009

Discovering the Demoscene

You know those computer graphics demos, where some trippy computer generated imagery animates to music? Well, apparently there's an entire underground scene of programmers and CG artists that get together in conventions, and contests and parties and just make demos.www.Demoscene.tv

It's all pretty obscure and hard to appreciate if you're not a demohead and have a pretty extensive knowledge of the challenges that come with coding the demos. But it's fascinating, nonetheless. Especially seeing how many demos are made using really old technology.

According to the site, the demoscene started when programmers would encode their own imagery on the Commodore 64, or hack existing animations and images. That, along with Atari software, still gets heavy usage from these guys. Apparently, it's the challenge of the limitations. Seeing how much you can pull off with ancient tools, or, with the newer stuff, seeing how far you can push the limits.

The key is real-time computing. Now, for a long time, I've been under the impression that I knew what that word meant, but here's the definition (according to Answers.com):

(computer science) A system in which the computer is required to perform its tasks within the time restraints of some process or simultaneously with the system it is assisting.

and from Wikipedia.org:

In computer science, real-time computing (RTC), or "reactive computing", is the study of hardware and software systems that are subject to a "real-time constraint"—i.e., operational deadlines from event to system response. By contrast, a non-real-time system is one for which there is no deadline, even if fast response or high performance is desired or preferred. The needs of real-time software are often addressed in the context of real-time operating systems, and synchronous programming languages, which provide frameworks on which to build real-time application software.

This is getting harder to understand. The narrator in the intro to Demoscene.tv says that real-time graphics are different from the norm in that the things you usually see (say, in a Pixar film) are all pre-rendered graphics. This makes the concept easier to understand, and now I'm slapping my forehead. Of course. This analogy covers it:

Pre-rendered : Animated Movies :: Real-time : Videogames

D'uh. Okay, jeez. I get it.

Maybe.

So, let's see if I've got it: the videos you see on Demoscene.tv are all reacting to coding that sets a specific set of rules for various outcomes. Unlike a CG-animated film, in which things are molded to happen within a framework of pre-set rules, then played out and essentially recorded (read: pre-rendered), a demo, in the sense of the Demoscene, plays out "live," as the coding works with the hardware to render what you see as it's interpreted. REAL-TIME.

I think I got it.

So, I've watched a handful of them. Like I said, they're hard to appreciate without a full understanding of the challenges the creators faced, but even with the very basic (and probably still inadequately informed) understanding I have now, this one is my favorite: