How to make a good demo

Written by Black


First find a good Pizza/Chinese take-out place. You will be eating a lot. Try to really flesh out your idea as much as possible. Put your ideas on paper first. Diving in might seem to be the quickest way but sooner or later, you are going to hit design and programming snags.

You have not completely thought through your idea.

Designing and coding are two separate tasks that deserve equal attention.


Take three charts, and list the graphics, sounds, and music design.

- Creating a demo requires a lot of non-code components.

Make sure you have a good idea of what those will be and how you will acquire or create them.



- Effects that will be used in certain parts of the script.
- The little "finesse" the demo will have.
- Filters.
- Mood (colorful, dark,...).
- Comparison to other demos. The same start as Square/Pulse,...
- No music, no design, no demo.


Choosing a platform.

Linux, Windows or DOS? That is the question.

Linux, OpenGL (mesaGL, etc.) ... a bitch on the syntax.
- Fact: Linux was made for the Internet, not for demos.

Windows, DirectX, OpenGL, Glide ... no Assembly and algorithm optimizing.
- Gates wins again.

DOS ... Assembly optimizing, hardware problems, algorithm optimizing.

For now, DOS rules the demoscene comunity but that will end soon and DOS will become just another surplus waste that will not be that well known. These people who use DOS and think that DOS will live out Windows remind me of people who say they can ride out hurricanes and die at the height of 50m swept away by the wind and punctured in the air with a telephone pole.

A great deal of demo development does not happen on the computer. It is very important to design, document and plan your demo. I cannot stress this enough.


It's Important To Finish. Always walk before you compile!

The most important thing to consider when developing demos is to finish them. I must have started at least three projects which were beyond my means before I got smart and scaled back my ambitions. It may seem neat to make a 303 or Sunflower style demo right away. That level of programming takes a lot of work and experience. Statix and the Pulse coders have been coding for several years prior to 303, Square or Sunflower.

Start simple, learn, read, and build your skills.

A finished demo with less flash and dazzle is better than no demo. In short, learn to work within your skills and learn to finish.



Re-making 303 is not the best idea. 303 already exists. One way to be original is to just simply make it better.

Many demos are newer versions of old ideas.


When you start to code, order that Chinese food, lots of it. All of the steps in the design stage above apply while coding, too. I just want to add a few things to this.

- Take breaks to clear your mind.
- Comment your code (might be good for your co-coders).
- Write reusable code (multi resolution...).
- Brainstorms (write them down on PAPER, computers can crash...).
- Make a note of any usable idea. Even if not for the current demo.
- Read, read, read ... and did I say read? (Not only code-stuff!)
- When in doubt, write down the facts.
- Read coding books while you code.

If you don't want to code, then you can offer the demo industry (hehe :>) 2D/3D art, music and other stuff. They must have a certain quality to be accepted in demos.

If you have a special talent, like art for instance, and you understand the demo development and the part of its relation to art/music, then you might want to put together examples of your work and send them to some hot shot demo group in the scene. Most demo groups have apply forms.

You should use the C/C++ language. Compilers nowadays optimize the code very much, and there have already been written Windows graphics/3D APIs so that the use of Assembly is rarely required.

C/C++ allows extended portability from one platform to another.

What more can I say - it's the dominant language of demo development.


The Road Runner of languages.

Since you can make the fastest routines with it, some Assembly code is used in every good demo. Assembly is usually used to create subroutines to call from C/C++ for sections requiring intensive speed. Assembly language is the most difficult one to understand. The general law of computer languages states: The lower level the language, the faster it is, and the harder it is to program in it. Don't be discouraged though, learning Assembly is a great tool; 303 would not have had its blazing speed without some programming in Assembly, and Statix, who can accomplish amazing things.

With its portability and better learning curve, C/C++ is much easier than Assembly. C/C++ like Assembly "compiles" to standalone executable files. However, no one said programming in C/C++ was easy either, it is just easier than Assembly, and many people are a little intimidated by all the coding required and such. First, with a little work and some good books, programming in C/C++ is not as hard as it seems. Hell - even I know how to program a little in C! There are, however, some alternatives to programming in C.

It pays off to have English text in demos. What good does Spanish text do for a person who knows only German and English?

If you're absolutely brand new to programming and the demoscene, you have a lot of work to do. Order some more Chinese food and maybe a lot of Jolt Cola if it is accsessible to you.

Learning The Ropes.

- Jolt Cola ... Universal coders' drink.
- Hackers ..... Universal coders' movie.



Graphics files can come in many shapes and sizes. You should be somewhat familiar (if not thoroughly familiar) with the various formats and how to load them into your program for later use in animation and such. RLE, GIF, PCX and JPG are examples of these formats.



Animation in demos involves copying sections of the screen to and from sections in memory that contain the graphics information. Widely referred to as a BitBlit, it is one of the most basic graphics programming skills you will need to master.

Using them in demos in an inappropriate way or extensively is lame.



In DOS, coders mainly use MIDAS and IMS to play the music for the demo. Earlier versions of MIDAS and IMS allow editing the main kernel code, allowing loading of the module from memory instead of disk. That allows music compression. Most demos have a sizelimit of 4mb. One way to keep it small is to use JPEG code from the Independent JPEG group, or to write a packed file system for the demo (RLE+LZ style compression).



- Scan it up.
- Draw it up.
- Fire it up.
- DON'T burn it down, keep backups.


This is the main 3D modeling program used by many demosceners just because they can not afford Silicon Graphics Workstations. :> There are many docs about writing a 3D Studio loader and also a 3D studio keyframer.



Music is the hardest thing to get if you're going to do it alone and don't have a lot of money. Team up. 2 brains are better that 1. 3,4,...

The most used music style for demos should be ambient music, because you can think up a design only by listening to it.


I hereby claim I will not be held responsible to the damage to your computer in the process of interpreting this text file to make your own demo. If something good hapens, then it's my fault and I would like a copy on my e-mail address. All you can do is try. Have a nice life.

- Black / Twilight