Demoscene

Killotrona by PPG

Killotrona was our second demo, and our third production. For this production, I wanted to code something a tad cleaner and easier to follow. Casually I had just be given the sources from the other demo I participated in for bcnparty11, Broken Minds so I took some ideas from there, mainly the way the demo was divided into "Effects" (which are roughly equivalent to "scenes") and the way the demo was scripted (instead of having a big switch, there was now an array with effects to be played and the order at which they should start to play).

So now instead of having the big and dreaded scenes.cpp I got several C++ classes which subclassed the Effect class. Each main Effect subclass (prefixed with FX to keep it short) would be started and stopped as the script specified. This made things simpler and more isolated but in a way was a bit tedious because I couldn't share stuff as easily as before (for example, I had to declare several variables as extern in some files so that they could be accessed). But I guess everything has a good and bad side.

On to the demo itself: it was started approximately a month before the party. I had been busy organising the party as well, so I hadn't had time before for sitting down and opening VisualStudio. Instead, what I did was opening Word and prepared reports, application forms and whatnot -- the usual administrivia which surrounds organising events.

We were toying with the idea of making a hardcore-ish demo since well before Stravaganza's Cafre was released, yet some people wrongly believe we made our demo as a copy of Cafre. I had done some draft songs with Buzz but never managed to finish one that we totally liked. So at the end I just sent Sardu the song we used (herecomesdaradhge) and said: hey, I'm going to use this song, are you ok with that? She listened to it and totally agreed.

Killotrona

The demo begins with "walls" which feature parts of some graffiti pictures Sardu took somewhere at Barcelona. It was funny because one of them had a drawing of a powergirl in exactly the same colour we had decided to use in the demo, so it was an interesting coincidence.

Allow me to explain part of the process we followed: before doing a demo, we not only decided a theme but also a main colour. So we would say something like: this one is going to be about "killotronas" and it is going to be pink. And then that should be the main rule when in doubt: Make it pink or so that it matches with pink, for example. That way we could avoid the usual Coder Colors syndrome (i.e. using all possible colours, at the same time, if possible).

And what is a "killotrona", you might ask? I think it's a very local word (I haven't heard about it outside Barcelona) but I would say it refers to certain groups of young girls which behave in certain manners, and always dress the same way, and listen to the same hardcore/gabba music along with their mates, the "killotrones". They could also be described as "bakalatas", or "canis", in Spanish. "Chavs" would be the most appropriate term in British English, I think (although most of the chavs I've seen do not listen to gabba but to hiphop instead).

Killotrona

The powergirl is above.

Killotrona

After those scenes, the music quickly gets an insistent bassdrum kicking on pretty much every beat (sometimes a bit more at the end of each pattern), and there's an strange scene featuring a bouncing K and a bouncing Pucca dressed like a Killotrona, with a rotating K in the middle.

The idea of using a pucca... well I don't know why we chose that. I think it was because we wanted to "pervert" the same pucca that had been used in another demo some months before. Actually I think I just got the picture from the demo and painted over it. Because a week after the demo was started, Sardu's computer got broken and she couldn't do any more graphics -- so I had to do them all!

As a curiosity, the K is "hand drawn", not a 3DSMax path or ASE file. It is based on several lines which are painted 9 times to make it thicker, and then gets a treatment of a very basic and rudimentary radial blur (which is used throughout the demo, actually). There are also some background elements which I draw using gluQuadrics. I think it's the only demo where I used them. They always lead me to wonder why there's gluQuadrics but not gluCube :-)

Killotrona

Then comes a bouncing Ford Fiesta with plate number V-1337-FK, and some abstract shapes. The car idea comes from a certain urban legend that said that whenever you heard a car whose sound system was banging your ears while playing techno music, it would for sure have a V-FK plate number. V for Valencia, where most of the techno scene was developed in Spain, and FK because that ought to be the series with most registered Ford Fiesta's ever. And if you don't know what 1337 means, well, think leet.

The scene also has a particle system which generates a bunch of floating K's while following the car's position. It was all about getting on the nerves of the viewers so that they wondered what is up with the K. Why is there a bunch of K's over there? And so on.

Supposedly there should be another scene in here but I never had time to develop it. That's why this one is so long!

Killotrona

Finally comes my favourite scene: the rotating-pulsating nest of gluQuadrics with laser! It just begins slowly with a "dezign" layer over it and then it does what every other demo featuring a cylindrical object/formation would do: move to the beat, four to the floor!

Killotrona

The "laser" is just a couple of very very long quads, in a 90 degrees angle. The texture coordinates keep changing and that's what makes it look like something cooler than it really is. The rest is OpenGL interpolation magic!

By the way, I have taken the liberty of fixing an error where the laser didn't continue growing until the infinity. I just love how it looks now! Much better, with its ends just converging to infinite.

Killotrona

The plasma effect is something that totally puzzles people: why is there THAT effect in the middle of the demo? it just looks so out of context!, they say. Well, it turns out there's a very simple explanation for that. Since the party featured a retro theme, I wanted to have some sort of "retro effect" in the demo. In fact, at the beginning the demo was intended to be executed at 320x240, and that's why the textures are so low-res.

Killotrona

And after the plasma comes the most confusing scene in the demo: the strange tunnel with the credits and the greetings. There are plenty of camera bugs in it (mostly clipping errors) but they are part of what that scene is. It is meant to convey a "being high" feeling, so to say, so the camera just moves up and down the tunnel while rotating and changing its FOV angle continuously.

Killotrona

At a certain point it even gets a flash every second row. I was going to make it flash every single row but I thought that maybe the projector couldn't cope with so many flashes, so I restrained myself (and just in case there really was an epileptic person in the audience!).

Killotrona

Finally there's the closing screen. After some failed attempts I found the way of making this type of negative blending. I had seen it at the end of the 604 demo by AND and I knew I wanted to do something like that at some point.

Code

The code is in my git repo:

  • Browse it
  • Check it out: git clone git://github.com/sole/demoscene.git Then it is in the releases/ppg/ppg_03_ktn directory