It’s time to write about the project I’m going to develop and what I would like to talk about in forthcoming posts. The basic idea is to create a demo.
Now, if you just thought “A demo of what? And can’t you just code a full version?” please read on. Those who just did a big facepalm may skip the next section :).
What is a demo?
In short, it’s a computer program that shows (demonstrates) various graphics effects synchronised with music. The effects are calculated and drawn in real-time, just like in a 3D video game, except that they’re not interactive. The purpose of creating such programs is to show off skills of the creators and to express their artistic vision. Demos are created by groups of people made of programmers, musicians, graphic artists, designers and others. Such demogroups compete with others during demoparties. All the groups forms a computer subculture called the demoscene.
There is no way to select just one best demo as an example, but you may want to check out this one. It was released at the Breakpoint party in 2007, and what’s interesting, the executable’s file size is only 177 kB.
Obviously, there are newer demos and this is a topic for a separate article, but if you would like to watch some more productions, visit www.pouet.net and check out “all-time top” entries in the left column. The proper way to watch a demo is to download it and run on your computer, but most of them have captured version on YouTube.
It’s always nice to create something, especially if you can have some fun while doing it. Some programmers would like to make another Web API or Sudoku solver in their free time, and that’s fine. For me it’s more interesting to explore 3D graphics programming as there’s always something new to try. It’s also a good way to review and refresh my existing code.
Most of the demos are prepared by a group of people. That is, even if there are some multi-talented people out there, you probably won’t be able to compose music, draw pictures, model complex 3D objects and prepare textures for them on your own. As this is (almost) a solo project, the effects should be based on math and algorithms, rather than hand-made 3D scenes. Good candidates are: procedurally generated 3D objects, particle system, fractals, all kinds of physics simulations.
Some post-process filters will be required to put on top of the actual effects. The most common are: depth of field, glow, color correction, ambient occlusion, chromatic aberration etc. We will take care of writing them if needed.