Making of Roadside Picnic
by Preacher of Brainstorm
Download the pdf here
The Story So Far
It is now the 10th of March 2009 and Axel has asked me to write this diary for ZINE. I've decided to write a bit each day, because that'll probably also motivate me to work on the demo. It's regretful that I've only started the diary now, but I will do my best. The development of the demo actually started right after Breakpoint 2008, because I got both motivated to do a new demo and fed up with our current demo system that was buggy, badly designed for the most part and that had grown organically from a small lean engine into a huge monster whose internals were somewhere between indecipherable and disgusting. I spent about a month doing the basics, taking some parts from the old one and reworking them into a small core and lean. After I had gotten the core effects, mathematics, script system and rendering running, real life and work pressures caught up with me and I left it alone for a very long time, until I realized that I need to get moving again if I want to get the demo done for Breakpoint. The demo song from Bit Arts was received in August already. It was supposed to be a very quick demo for some party, with lots of "glitchy and beepy" effects, but since when do things go according to plan?
What follows is a development diary of Roadside Picnic that's both direct and for the most part unedited. It's meant to offer insight into the way I design and do demos. I've tried to bring out what's been happening outside the actual development process to give it context. It's been written over a course of time and finally cleaned up afterwards during the summer 2009. The crucial thing about my development process is that I rarely know where the demo is going before I actually work on it, so at the time when most of this was written, I didn't know myself how it would look in the end. I decided to keep the original entries intact and let the reader figure out what I am talking about.
I decide to finally start doing stuff properly and implement a general class for ground planes (a flat thing that accepts a texture and some parameters and all that). I also tweak the exploding particles, implement a particle wind thing that can be made to look like a snowfall and tweak a bunch of numbers in the code. And suddenly I have a scene that's eerily mfx-like, but somehow more peaceful. The snowfall really does tie it into the "real" world. Maybe the demo visuals should work more around the snowfall/particle wind thing... Finally, I add a bit of noise on top and there we go: The first somehow proper looking scene in the demo, I guess. Maybe I should try to add some color distortion, more organic movement to the camera / camera shake on "explosion" and perhaps some more details. But so far, this is the best part of the demo. Next, I want to make something that grows out of the ground. More glowing, growing tractiony things?
I go to bed after 2 am. Overall, a good day's work for once in a while. The only thing bothering me is a bug that makes some textures clamp to the edge, making stuff that uses repeating textures completely unusable. This needs to be debugged ASAP, but it can wait until tomorrow.
Today's music: The Church - Priest=Aura
I put the ground plane and the snowfall into the scene with the striped lines and redo the cameras so that they move. I also tweak the snowfall to look a bit like wind sweeping across the barren scape. I honestly feel that I have found the concept now.. alien things moving in a desolate, barren landscape. Fits the theme with the music and Anna, my fiancée, seems to agree. What we need now is both better landscapes and a skybox or something like that to make up for the sky. Or, I could do a bunch of stars with GL_POINTS or something. Might be cool to have constellations in the sky in some scene, with them changing around or something. And oh yeah, the ground plane sucks as it's now.. it needs to have multiple textures blended together to create more detail. But, it's a start. I disable the texture clamping completely and all the bugs vanish. What the hell is wrong with the code? I'll make a build (preview2) and send it to Brainstormers for review. Final thought for today: This demo positively screams for shadows. Shadow mapping, here I come...
Today's music: The Church - Starfish. I seem to be into Australian alternative rock recently. Perhaps there could be a bit of Joy Division bleakness in the demo?
A long day at work, but I got two ideas that I think are good. First, I've started looking into Kubrick's 2001 for inspiration. I've had monolith references in a lot of previous demos, but what if this demo happened on the (or on "a moon", since we're talking about alien and weird stuff here) and it had a bit of the same ambiene as the famous scene at the moon with the Monolith and the haunting Gyorgy Ligeti score? Two effect ideas spring into mind: First, a flyby on the moon surface with a wireframe and glowy map superimposed on top of it, a bit like a HUD display. Second, instead of building stuff after the fallen particles and then demolishing it, why not make something grow slowly at first and with the rhythm changes, make it suddenly grow huge and complicated? After the eats in the music, there's the same humming sound as in the scene with a lot of squares, so put some electrically charged flowers or lasers or something coming out from the thing that has just grown. I like that idea. A lot. I made a effect skeleton in the
timeline for it, called "blossom". Let's hope the name bears fruit.
I've also done some minor tweaking, like adding the ground to the last scene that was missing it. I also heard from Axel that Parsec's going to do models, which is an insanely cool thing. Perhaps in the second scene the beating equalizer can now have a proper frame around it instead of a couple of lines and hardcoded quads. With all these new ideas, my hands are itching to start coding, but I'm way too tired after a long week at work so I'll head to bed early. Possible name for the demo: TMA-2? (TMA-1, Tycho Magnetic Anomaly-1, is the the original Monolith in 2001). One more possible source of inspiration: Roadside Picnic, by Arkady and Boris Strugatsky. That's the novel that Tarkovsky's Stalker is based on. Incomprehensible journey to a Zone filled with incomprehensible artifacts from an extraterrestrial civilization.
Today's music: m83 - Saturdays = Youth. If there's one album lately that's really captured my imagination, it's probably this one. I think I've racked up at least 50 plays of it in last.fm, and I've enjoyed every single one. The long, endless summers of childhood combined with a nostalgic look at the wonders of the teenage years, laced with shoegaze and eighties shoegaze pop. Totally antithesis to the demo, but beautiful.
I checked and since TMA-0 to TMA-2 exist in Clarke's work, I think we should use at minimum TMA-3 then. Perhaps the demo should end with it. We encounter strange stuff in the world that all leads to the monolith/whatever. The last effect should thus be something like the monolith being found and the camera should look up towards the stars from the base. Yeah, that should work. Also, the first effect.. why not encase that into the monolith itself, and just zoom the camera from it when entering the equalizer scene. Circular timeline and a nice ASD-type transition..
|"MAKING THINGS THAT FAIL IS NEVER FUN, BUT ALWAYS EDUCATIONAL"|
Today's music: Still m83, plus the theme song to Tao Tao the Panda Bear (an old children's TV series). I've been practicing the latter on guitar.
Long lazy weekend means no tangible progress with the demo.
Okay, time to start kicking again. I saw a screenshot given to me by Kelsey that has screwed up colors. Could it be that ATI drivers don't clip color values to 0 or something? I don't know much about shaders. Let's hope I can get access to an ATI machine at some point to debug them first hand. The first thing I do is to complete the timeline so that it doesn't have any empty parts in it. Unless you count a desolate landscape with snowfall empty, but at least there's *something*. Then I try to do the "encase the effect inside the monolith"-bit but no matter what I do, it just looks silly so I decide to scrap the idea. I keep the scaling I implemented for it though and make a simple crossfade between it and the equalizer. Not the prettiest or smoothest solution around, but it's good enough for now and I can live with it even if it was left in the demo as it is. I also try to implement camera shakes into the part with explosions, but that looks just bad and I think I will just scrap the idea. Yet another failed attempt.
I think that's enough for today. Making things that fail is never fun, but always educational.
Today's music: I listened to a lot of downtuned guitar noise at work, but I decide that Gary Numan is what I need now. Apparently not, since things just fail.
I skip a day of work because of a nasty migraine headache, but somehow manage to motivate myself to code once it's eased off enough to let me see the screen. I tweak the Aura-effect a bit, adding some flow (the portal now opens and closes, the streams start and shut off etc) and mechanics to it, but somehow it just doesn't feel right. I might need to rethink the entire thing. The scene just does not connect. Also, I can't seem to come up with proper colors of any kind. Might be the aftereffects of the headache. But then, just as I am going to bed, the king idea of the day. The tree that I'm planning after the explosions thing should be made of rigid particles and not be a mesh. Perhaps the explosions could leave behind seeds or whatever, that would then somehow burst open or something. Now I really need the Kewlers-billboard particle thing/engine, as well as a bunch of more different particles. I was contemplating on doing it as a mesh, but the reason I probably haven't started it yet is that it'll take some extra effort to make the mesh stuff look good. But particles... they're easy. Damn. Today's music: The concert of pain in my head, plus The Comsat Angels - Chasing Shadows. A fantastic eighties rock album from the best lost post-punk band ever.
I play Nirvana with guitar all night. (and I suck)
Okay, time to get back on track. I promised a third preview today and thus I need to do stuff for it. I get the first meshes from Parsec and I have to say that I like them very much. Creepy and atmospheric, just like the demo should (hopefully in the future) be. One is like a wheel from hell (called "alienengine") and the other is a rather "demoscenish" hollow thing called "sacredframe". I also get a third one but no 3D program that I have actually loads it without crashing, so that'll have to wait for now. First, I put the alienengine mesh in the scene with the little squares and then get the idea that it could, in fact, be an engine! So I quickly add some quirky looking lines of energy that come out from it. The effect is strange and unsettling, though there are transparency issues (damn you, framebuffer object!) and it needs a lot of tweaking. I screw up a bit with the code and the glow turns a bit instead of going straight, but I kind of like the weirdness and keep it that way.
|"AS I START TO WORK ON THE DEMO, A SUDDEN REALIZATION: IT'S LACKING CONTINUITY IN A VERY PAINFUL WAY"|
The other model, sacredframe, goes into the heartbeat scene as a temporary replacement for the bust of Athene that I've been using as a placeholder. I hope now people will stop asking about the funny heads :D The model deserves better than that though, and I don't really think it's proper for those things just to float there. Will need to think of something else. As a final act for today, I put in some kind of cameras in the last scenes so that they move. Then I call it a day and ship a preview to the Brainstormers.
Today's music: My Bloody Valentine - Loveless. A blissful wall of guitar noise and one of the best albums of all time.
So, it's Tuesday already. Both the weekend and yesterday were used mostly by drinking beer and seeing various bands (including The Sisters of Mercy, Mortiis and Ulterior) play live. The deadline is looming fast, but dammit, I need some time to relax. And after that, some more time to relax from the relaxing. I have a bit more to work on now though, as I've got a shipment of nice particle graphics from Ivy and a bunch of fantastic paintings from Mantraz. I'm a bit skeptical on the possibility of putting the latter mentioned into the demo, but let's not give up hope just yet. The first thing is to redo all the particle visuals though, so that's where I start from. As I start to work on the demo, a sudden realization: It's lacking continuity in a very painful way. While in the same world, it's still just a collection of perhaps pretty but unconnected scenes. That's something I really need to work on. Too many of my demos suffer from that already.
I start today's actual work by trying out some new particles for particle effects and then write a particle explosion system from the top of my head, complete with a shitload of adjustable parameters and dynamic memory management. I surprise myself and the world by not having it crash on the first instance. Then again, instead of working, it creates funny looking explosions that could be mistaken for soap bubbles. I add a bunch of values to the tuner, tweak and reduce it to a dull smoke. I don't like the dull smoke at all, so I tweak it around a bit and end up with something, thick and dark purplish. I am pretty satisfied with it, but end up tweaking the colors a bit more and making the explosion particles more red. I then get excited by the whole concept of smoke, so I replace the "bottom" particles in the aura scene with smoke and tweak it until it looks good. Now it's definitely smoke + glowing particles in this demo. I start visualizing stuff like glowing and growing pillars made of smoke... hmm... it's still weeks away :) I might have time to try something like that. As a final deed for today, I add some floating meshes in the aura scene background and despite looking a bit clinical, I decide that they fit just fine.
I have finally decided a name for the demo. Let's not get too complicated with 2001 and such, let's just call it "Roadside Picnic". I don't expect a lot of people to know the book, but the name itself is a bit creepy by itself and I'm sure someone will google it up and chuckle a bit. And, it ties the "random scenes 1 to 9"-design together in some way. There are people who call this "design", and then there are people who... I go to bed half past two.
Today's music: A Place To Bury Strangers - s/t. I've heard the band being called "the loudest band in the US", and whether that's true I don't know, but their combination of oldschoolish shoegaze reverb and pure screaming industrial noise is quite a beautiful and unsettling thing to hear. Apparently the band lead guy designs all kinds of guitar pedals for living, and you really can hear that in the music.
I have taken a bigger task for today: Namely, one of the missing scenes. For some reason, actually starting to build a scene from scratch always seems like a huge task and I tend to postpone it for as long as I can. The original idea, as outlined earlier in this article, was to build trees or something out of particles, so that's what I put my mind into. After a few hours of tweaking and wobbling about, I have vaguely tree-like things with glowy orange bits on top of them. What I imagined early would be some kind of "sterile" trees, but what I end up having looks like MFX on a bad day. I compensate the overall ugliness by putting more snow particles and noise in the scene. The end result is... creepy. Whether it's creepy in a good or a bad way, I can't tell. I'll let it be for now.
I also do some smaller things, like fix cameras, tweak colors, add more particles to some scenes, and especially add more noise. The end result is kind of confusing: On the other hand it looks MFX-weird, but on the other hand it's both slow-paced and somehow lacking. Now that the look is more uniform, the fact that something is missing is glaringly obvious. But what to do? I can't just go adding more noise or more particles and hope that it will be okay. The pacing needs radical reworking: Perhaps the problem is that it's still basically an "effect in the middle of the screen"-demo. Well, I leave it for today and go to bed. In any case, one of the two last missing scenes now has *something* in it, and fixing those is always easier than making new ones. Last idea before bedtime: The world is too flat. That must be a significant part of it. I need mountains. And more smoke particles for the explosion particle thingies.
Today's music: Lush - Split. One of the forgotten bands of the nineties, Lush is kind of like sunshine on a lazy Sunday morning. Balancing between rock, shoegazing sound wall and dream pop, listening to it is kind of like cotton candy as a kid. It's fluffy, you love it and once you're finished, you want more. I don't know if it's proper for this demo, but I'm tired and feel like listening to the upcoming summer.. I wish I could play the guitar like that.
I make a preview after I have woken up and the feedback is pretty unanimous: It needs more action and flow. That doesn't come as a surprise, but I need to figure out some proper ways to achieve them. First of all, however, I start working on more particles. I finally, after a bunch of years of doing demos, implement a simple general purpose particle system and add smoke to the debris flying from the explosions. This seems to be the final straw for the framerate but at least it looks properly MFX'ish now. Dunno if that is a good thing or not.
Today's Music: Heroes del Silencio - Senderos de Traición. Like a Spanish version of U2 meets a goth rock band, I think this is one of the sad cases of "local band that has something in it but no one outside their own country ever hears it", even if their charm mostly consists of only playing arpeggiated chords with a lot of chorus and reverb. I think they had a major hit in Germany at some point with "Entre dos Tierras" and that was pretty much it.
I am tired as hell after a week at work so I do very little. I do take my particle system from yesterday and put simple smoking things in the last scene. Perhaps it could be something like remains of a battle. I go to bed early and leave it at that. Today's music: The Cure - Pornography. One of the best dark albums of all time, and one of which the first line of lyrics says everything essential: "It doesn't matter if we all die". Fits my mood today with all the wailing guitar noise. "I cover my face as the animals die.. in
the Hanging Garden"
Feeling fresh and rested (first time for a while!), I first succumb to the temptations of doing other stuff like playing goth rock on the guitar and reading books, but then start working on the demo again. I put The Cure on and suddenly I am in the depressed demomaking mood again. I don't really know what's causing it, but I find it very hard to work on demos when I'm feeling alert. It's no problem when I'm sad, depressed or just really tired, but I like to spend "good" moments on other stuff. Perhaps that's why I like to do gloomy things, or why a lot of my demos never seem to be quite "there" or finished. Still, the party is approaching and I need to get things done, so I get going.
The first thing I do is to start working on the last scene. I think that in an emergency, the demo could be released as it is, save for the last scene. I tweak the smoke stuff so that it looks proper and then add fire. It's funny how demo development at this point always ends up being ugly repeated code.. I wrote a particle system explicitly for the reason that I wouldn't have to deal with all of this, and now I find myself copypasting the same thing over an over again. Oh well..
Today's music: Still listening to Pornography.
I finally get an "idea" that will lead the demo into the promised land. Hopefully, at least. Let the blue "fire" things from the smoke scene be present everywhere in the demo and let them "do" something. That will give it causality. I put them in the first scene and tweak some minor things like the loading screen (I always wanted one with a circle). How could limited time be spent better? Besides, the loading screen is the first thing you see of a demo and having a bit unconventional one might not be a bad idea at all. I wonder if I could make it look a bit like the demo without too much trouble?
|"TODAY'S MUSIC: NOTHING. SOMETIMES IT'S BETTER THAT WAY"|
Today's music: Nothing. Sometimes it's better that way.
Daylight Saving Time always kills my productivity for a day or two, but after arriving home from work and taking a nap, I continue my adventures with the evil blue alien fire things. So now the demo is divided roughly into the following parts: Arrival - Multiplication - Departure. I got this idea of an interstellar lifeform using entire planets to reproduce, exterminating the planets of life when doing so. Probably a bit too pompous and grand, but perhaps a "lite" version could be implemented here. It would give it concrete structure without taking away from the other visuals. So, I put them in a couple of scenes and then realize: There's no reason to assume they're "evil". They just are. That's better. Today's music: The Cult - Sonic Temple. Sometimes, all you need is rock'n'roll, and this certainly fits the bill. Big enough for stadiums (for a little while before they succumbed to the rock'n'roll..) and groovy enough to be credible and make you smile, plus I envy those pinch harmonics on Sweet Soul Sister. The album makes me think of drinking beer in a Breakpoint sunset.. only a bit more than a week to go! (a scary thought.. so many tweaks to do)
I receive a bunch of new ground textures from Mantraz today, as well as a first draft of the alien gate model from Parsec. I decide to put off the gate for now, but since the ground textures are easy to plug in, I do just that. And wow, what a difference they make! Simply put, they completely transform the demo. I also do a lot of miscellaneous tweaking and small stuff, add more particles, tweak the cameras a bit and so on. It's really shaping up now. It has a distinct look, but it's still somehow "flat". A random thought: Is there a point in demomaking when all code you write turns into a mush? I have a gazillion copypasted particle systems, ugly hacks and no sense whatsoever in splitting the parameters in a sensible way, but yet I still enjoy that in a strange way. The code is painful to maintain though and I've managed to find a crash bug that happens only sometimes. Let's hope that it turns out to be easy to fix.
Today's music: Still The Cult.
Today I wrote a bunch of shaders, implemented loads of cool effects that weren't in the demo and wrote a complete 3dsmax exporter from scratch. (April fools. In real life, I concentrate on band practice and watching important TV shows.)
Only a few days left to work on it, so best get busy. I have noticed that my tendency of doing the first 95% and then procrastinating and submitting unfinished things is raising its ugly head again. I must fight against it, so I start by taking Parsec's new mesh for the "alien gate" and plug it in. It consists of two parts, the "alien" part and a frame that goes around it. Despite my best efforts, I just can't make the frame part look good so I decide to unilaterally drop it and concentrate on the alien thing. I also fix the particle sorting issues so that the smoke goes through the mesh properly. With all that done, it still looks like crap. I then decide to totally get rid of the white particles and replace them with something more fitting. With a lot of iteration, I end up with a greenish poisonous looking smoke. Not good, but I guess this I can live with... at least for now. The problem is that I have a lot of "yes, I will fix that"-issues and the time to actually fix those is running out fast.
Today's music: The Church - Starfish. Chorus and reverb do their nasty trick again..
The first thing I realize is that, perhaps due to lack of sleep, I have typed a bunch of stuff in the script file and that's why a lot of stuff in the aura scene wasn't working properly. This includes lighting and with a bunch of simple tweaks to the material parameters, it looks a lot better immediately. I then decide that the smoke just simply does not cut it and start thinking of ways to make it better. I then watch a bunch of scene stuff for inspiration and Nucleophile catches my eye. Perhaps if the smoke wouldn't just simply raise from the ground, but it came in a long smoke "snake"? After implementing the snake, I start feeling good about the demo again. One of the last two "poor" scenes has been saved. It requires still a night's worth of tweaking, but it's no longer desperate. Whew.
Tweaking time! I change cameras, smoke paths, camera shakes, distorting values, noise filters, shader and material parameters, particles, colors, timeline, add credits and the demo title and do all kinds of last minute tweaking stuff. I printed out all critique and tips I have gotten from various Brainstormers and others. The end result is, at least to my eyes, a lot more pleasing. Especially the blossom/tree scene really benefited from another viewpoint to the world. Despite this being a Brainstorm and not a Traction demo, I think it still has "that" vibe. Except that if Fairytale was "Traction does ASD", this is "Traction does MFX". Oh well, that remains to be seen... there's still a bunch of stuff to do, and a lot of the good stuff in the feedback is more than non-trivial. One scene (the original heartbeat one) is still missing the point. I am getting slightly worried about that. That _definitely_ has to be on the list for tomorrow. It's 3:03 in the morning when I turn off the PC and going to bed.
Today's music: Nosferatu - Rise. I don't know if I was dropped a bit too many times on my head as a kid, but I still seriously enjoy this music. It might be bland, somewhat generic eighties-style gothic rock with weak vocals definitely more (bland) style than substance, but sometimes even that sounds good. Go figure.
See above. Still no heartbeat scene, just an absolute shitload of random fixes.
Today's music: Nirvana - Nevermind. I seem to be regressing.
I finally fixed the resolution selector bug that caused it to be three pixels high and an absolute pain to use. I also get a new logo text from Parsec, and despite instantly hating them, they seem to work in the demo in a curious way. I can't put my mind on it, but.. Perhaps it's in a releasable condition now?
Today's music: Apoptygma Berzerk - Harmonizer. How low can you go?
And.. that was it. Breakpoint came as suddenly as it does every year, tweaks were left undone and I again submitted an unfinished demo to the competition. It was played last and took the second place, which was a total surprise. Then again, the compo was pretty tame compared to the previous years. I only have an OS X laptop and I was prepared to do the last tweaks using CrossOver (a program that runs Windows exes on Mac), but as I travelled to Germany I never actually got around to it. On the train to Bingen, me and prm tried to tweak some small things, but it mostly stayed as it was. And Breakpoint was most awesome, as it always is.
I have to say that this diary _really_ motivated me to work on the demo, and I am going to keep such a diary of each and every scene production I'll ever make again, since putting ideas down means that they will not be forgotten and even more so, writing them down means that you'll actually have to both work on them and evaluate them. Next time I will also not start the diary from the middle of the demo, and next time I will not submit a demo that I am not happy with to the competition. Next time I will make things not suck, next time I will do everything better and next time I will have a concept from the start. Next time, I promise.
If you want to see it for yourself, what a mess the demo source code is, you can get it from the Brainstorm homepage at http://brainstorm.untergrund.net - I promise a bottle of my famous homemade Salmiakki to the person who ports it to OS X. Any takers?
Go back to articlelist