Brief History of Demo Evolution
- In 1980's cracked computer games had Intro Screen:
C64 Fairlight Intro
- later multiple intro screens linked together to form a Demo
- in late 1980's Demoscene (Demogroups) separated from Crackscene
- Demoscene 198X: C64, Amiga, Atari
- Demoscene today: Windows PC; Amiga, C64 and others minority
- A demo is real time software like a game
- A demo usually has no message or story, but tries to provide a nice interaction of music and graphics
Demoparty
- People go to demo parties to have a good time
- New productions are shown in the competition
- Demo (big File size)
- Intro (small File size: 64KiB, 4KiB)
- Music
- Graphics, Picture
- Important (historic) Demoparties
- The Party, 1991-2002, Denmark, end December
- Assembly, 1992-, Helsinki/Finland, August
- Mekka^Symposium, 1996-2002, Fallingbostel/Germany, Easter
- Breakpoint, 2003-, Bingen/Germany, Easter
Demoparty Photo
Mekka^Symposium in Fallingbostel/Germany
Before Farbrausch
- members were active in other demogroups
- many were organisers of Mekka^Symposium
- everybody had won at least once in various competitions at The Party
- plan to win all competitions at The Party 1999
- Elitegroup was founded
Elitegroup
- every member used new exaggerated nickname
- arrogant behaviour to make fun of people taking demo-making too serious
- Goal: win every major competition at The Party 1999:
- PC Demo
- PC Intro
- Amiga Demo
- Console Demo (PlayStation 1)
- throughout 1999 release simple intros which announce the goal (R??-series)
Elitegroup success and failures
- The Party organisers decided to change from classic 68000 Amiga to Power PC some week before the party, so Amiga Demo was obsolete
- PC Intro had lots of technical problems and was cancelled
- PC Demo kasparov 1st place
- Console Demo pawlov 1st place
- The goal was missed and Elitegroup disbanded in 2000
Tammo Hinrichs
- Nickname: kb (the artist formerly known as doctor roole)
- Coder, Musician
- C64: The obsessed maniacs, Smash Designs - Second Reality 64 (The Party 1997)
- PC: Smash Designs
- Demoparty Organiser: Mekka^Symposium, Breakpoint
- http://kebby.org
Ronny Pries
- Nickname: Ronny (herr weltschaft)
- Musician
- Amiga: Teklords
- Demoparty Organiser: Mekka^Symposium, Breakpoint
and many more
You can look at the
complete Elitegroup
member list. Their other identities have not been disclosed yet,
but many of them later joined Farbrausch.
Kasparov technical details
- 3D Modelling: Softimage|3D, all scenes were created separetely and merged with our in-game editor
- Textures: Photoshop
- Music: Fasttracker II, samples MP3 compressed, modified MXMplay
- Demo Engine contained editor for (camera)animation and scene editing
- idea for in-game editor was used in Killer-Loop game developed by chaos, fiver
The procedural Idea
- To edit the rusty textures in Photoshop, fiver always made the same editing steps
- Those could be scripted by a tool
- The tool could contain basic operators to create images from scratch
- best of two world: pixel and vector images:
- We can manipulate distinct pixels (distortion) or start with a digitized photo
- Working with operators is resolution independent
Script-Tool prototype
- chaos coded a proof of concept in a couple of days
- left window: source code, right window: texture
add(perlin(2,5,2),smooth(rect(1,2,3,4),8))
- upon every key-press in the left window, right window was recalculated
- even for a programmer (who is used to [text] source code) it was uncomfortable
Generator
- same concept, but data entry with a GUI
- left window: texture, right window: operator controls
- lower window: operator stacks to connect operators in a visual way
- just boxes (no lines or arrows) to save space on the screen
Generator screenshot 1
Generator screenshot 2
Generator screenshot 3
Generator screenshot 4
typical Texture Operators
- Rectangle, Circle, Noise, Cloud, Text
- Blur, Rotation, Scale, Translation
- Distortion (Twirl, Ripple)
- Color Corrections, Add, Mul, Blend
Operator Tree
- many operators are needed for a pretty texture
- they form a tree where output of one or more operators serve as input to other operator
- tree is displayed as stack of boxes upside-down (dst-node is at bottom)
- We can store a tree under a name and load it's result in other trees. This optimizes calculation, because the store caches the textures state
Texture Operator Tree example
(this screenshot taken from Werkkzeug1)
3D-Geometry
- After concept and work flow proved successful for textures, apply idea to geometry
- cube, torus, sphere
- rotation, scale, translation, object copy
- texturing of objects
Geometry Operator Tree example
(this screenshot taken from Werkkzeug1)
Music
- (compressed) stream or sample based music (modules) are too large
- music calculated real time by a software synthesizer
- implementation is inspired by Access Virus
- Synthesizer core (oscillators, filters) are hand written x86 assembler
- Synthesizer is driven by MIDI
Music (cont)
- song is composed with the MIDI sequencer Logic
- MIDI file is packed with custom packer:
- demultiplexed
- some parameters are delta encoded, eg. filter sweep becomes long chain of 1s
- custom player which multiplexes packed format in real time into MIDI events
ViruZ II screenshot
This was used for the early Farbrausch Demos
V2 synthesizer screenshot
The latest V2 synthesizer is available for download
(historical) EXE-Packer
- based on UPX
- used aPACK algorithm
- compresses 376832 bytes to 65024 bytes
Glue it all to together
- Farbrausch was founded in early 2000 for fun projects
- as we had all necessary tools and wanted to create an intro we joined Farbrausch, because it already had established a brand
- entry for PC Intro competition at The Party 2000
Werkkzeug1
- written from scratch with leaner code base
- uses DirectX 7 features
- contains > 100 operators (Generator ~30)
- most important new (3D) operator: subdivision (smooth rough surfaces)
- next intro should have better design, since we now knew that it was possible to make demos this way
- available for download
Werkkzeug1 screenshot 1
Werkkzeug1 screenshot 2
Werkkzeug1 screenshot 3
Disco-Style
- last scene of fr-019 showed disco-ball
- idea for a Disco-Demo was born
- should contain lyrics, so music had to be MP3, so file size made this a demo
Speech Synthesis
- speech synthesis provides much smaller file sizes, since sound is created and not recorded
- however speech quality proportional to data set size
- however we can hide poor speech quality with the right musical style
- speech synthesis is conservative: oscillators and filter banks
- music synthesizer already had oscs and filters, just needed support for phoneme-tables
Werkkzeug3
- DirectX 9: Pixel- and Vertex-Shader
- improved Animation system
- more operators
- improved GUI and usability
- downloadable version for textures only
kkrunchy EXE-Packer
- uses all unused bytes in Win32-PE header
- multiple passes/algorithms while (de)compressing
- rewrites x86 assembler code into better compressable form
- fr-08 today ~48KiB instead of 64KiB
- available for download
Any questions will be answered