How Masagin Was Born
By Leonard "paniq" Ritter
First of all, thanks to Magic for nagging me to write this! Now that it is a few months after Breakpoint, I did not really feel like talking about how that thing came into existence. Maybe that is because I am still not convinced that I made something that deserves its own article. Some people think that Masagin was nothing special. On Last.fm, somebody wrote: "Thanx for the Masagin soundtrack. Makes up for 75% of the demo." There was a smiley behind that sentence, but I tend to take such comments seriously.
It was in November 2007, almost two years after the release of "Die Ewigkeit schmerzt". I felt like doing a new demo, but neither did I have clear plans what to do, nor could I explain why to do it at all. I was working at 49 Games in Hamburg by then, where most of the other guys from Farbrausch are working. I was lucky to be at the right time at the right spot, you could say. Chaos came in one evening and asked me if I would like to be in a meeting with Steeler (Ekkehard Brüggemann), who had just returned from the Demoscene Outreach Tour from the states, to talk about some kind of cooperation with "a big company" that Steeler had talked to.
In the meeting, Steeler told us that Nvidia wanted to do a demoscene event as a part of their big NVISION exhibition. They were looking for a group to make an invitation for that event. Chaos, Fiver2 and almost everyone else of Farbrausch were busy with $other_secret_project. I felt like this was my chance, so I said: "I wanted to do a demo anyway, so yes, I'll do it." Besides, they offered everyone of us a Demokit, and I was in desperate need of a new box.
Since I am pretty much a one man show I figured I could do most of it myself, with a little bit of help from the people I have previously worked with and whose input I enjoyed very much: cp of Farbrausch and Tournesol of 7th Cube (who would later join at the end of the project). Gizmo/Farbrausch was also a part of the team during the concept phase, but was quickly pulled off to help with $other_secret_project instead.
It made sense to pick up on the technology of "Die Ewigkeit schmerzt", since I had plenty of experience doing recursive vector graphics zoomers. Several other groups had tried to imitate the effect with more or less success. There was still a lot of room. But what would be the content of the demo, what would it be about?
I was under pressure. I was doing this for a big company that had put high hopes into Farbrausch and had seen our previous productions. Maybe they were not interested in that hippie psycho shit that I am so fond of? I imagined them looking at the production, being like: "We can't put that on our site! What does this have to do with us? This is amateur crap!" Also, how would the Breakpoint audience react? Should I play it safe and do something that Nvidia would certainly be pleased with? Then I would be selling out to a corporation and give up what I believe in.
I felt crushed. I talked less and less, and sighed more and more. My girlfriend began to worry about me. One evening, I laid down in bed and stared at the ceiling. My girlfriend crawled up next to me and waited for me to say something. After a while, I began talking about what haunted me. Talking about it helped a big deal. I said: "I really hope that this company cares for what they do. They produce video cards. I hope that they do this not because they believe that there is money in that segment, but because they love computer graphics. They could be selling cars or shoes if it was only about cash. So this demo will be a test. I want to show them what a company should be about. I believe everybody feels about it the way I do, deep down. I can't believe they would reject that. And if they did, I would know what to think of them."
I knew that I wanted to do something large, maybe about seven minutes long. Back then I was inspired by the work of musical artist Shpongle. I wanted to turn the demo into a kind of trip, travel across different kinds of emotions, have parts that are energetic, thoughtful, crazy, happy, dangerous, all of my favorite emotions.
I remembered that Johann Wolfgang v. Goethe had said: only the limitations can give us freedom. So I set some very rigid limitations early on in the project. The palette was fixed on a base set of colors (we dropped that later, it is a stupid idea for seven minutes of film). All art had to be done in Inkscape, because I already had code ready to deal with SVG's from the last project. Animations and scene graphs had to be written in a custom script language which I invented especially for this project.
I created visual guidelines. I wrote down a few topics that I felt were suitable for what I wanted to achieve, and Faith of Neuro (who also happens to be my girlfriend, hello Fräulein Knutschiknutsch!) helped me weed down the topics down to six. Everything turned around the number six. The original design dealt a lot with hexagons. We had six different topics. Six shapes for each topic. Six colors in three brightness levels.
This is not your usual hollywood success story. While working on the script language, I asked cp and gizmo to create six key visuals on the six topics. They were overwhelmed. Gizmo was just in an early phase of learning Inkscape and struggled a lot with the guidelines. I guess I wasn't very helpful either, with my loosely associative babbling about why and how I wanted it, when I actually didn't really know why. Cp was a pure Photoshop freak. He started out by vectorizing bitmaps, but after explaining that importing bitmaps into Inkscape was a bit like bringing your own meal into a restaurant, he worked hard on improving his skills, and went from noob to awesome in just a few weeks.
A lot of initial work went into finding out what I had to put into the demo. Nobody did any major work on the visuals. Nobody felt motivated. What I had prepared was going nowhere. That was a clear sign that I was leading the wrong way. Instead of arguing with everybody about the lack of progress, I decided to do the soundtrack. The soundtrack would make clear what I wanted to achieve, what the demo would feel like. It would also help me to put clear pictures into my own mind.
So I sat down one weekend in January and worked on the track straight for two days, while Faith made tea and comforted me. The workflow went astoundingly smoothly, as I progressed linearly through the three big segments of the track. The beginning of the track was meant to create tension. I added the sound of an alarm clock, because that is one of the most haunting sounds I know (it was also a hommage to a short demo by ASD that ended with an alarm clock).
When I reached the second part of the music and started folding out the main theme, a sudden feeling of enlightenment struck me. The melody felt like a simple basic explanation for existence, what it actually means to live, how everything works together, it was truly unifying. At times it felt like the music was guiding me, instead of me being the writer. The melody drifted off into space, so I added a choir to bring it back to a human level. From there I felt like driving the peaceful mood into a sweet happy childlike state, enjoyable but unreal as well. The unreality would fold out from then on, distort and engulf everything and focus everyone on that particular moment, wondering what the hell is going on.
At this point in the track it was time to bring in as much willpower and strength as possible, so I took the "James Brown is Dead" theme which I had toying been around with for months and translated it to the unusual 6/8 structure of the song. I messed around with the rhythm to make it more energetic, and that part turned out to be very selfmotivating. In fact, it was so great that I didn't know how to continue.
I put what I had so far on my MP3 player, and listened to it while going to work, while working, and while travelling home from work. After four days, late in the evening, waiting for the subway train to arrive, I went over the James Brown part again and started whistling over that part. It felt really good. On the next weekend I finished the track.
Yet, something was still missing. Some real instruments. Faith played the German flute. A fan and friend of mine, Peter Wolters aka Pittip, played the guitar. When I asked Pittip, he said: "This is the moment I've been waiting for for years!" To convince my girlfriend was not so easy. It had been some time since she had her classic flute lessons, and she felt uneasy about it. But uneasiness was exactly what I needed for the introduction. We had pretty good takes after 30 minutes of recording. Pittip's recording took a bit longer. Since we live a few hundred kilometers apart, he had to record his guitar in his own studio and send me the results. After about four to five exchanges of music and opinions, we had really good stuff. I added all instrumental takes to the music and finalized the track, including a quick mastering session.
Steeler had given me the email address of Temis Numez from NVidia, who is the main organizer of NVScene. Although I had decided to do the project as I pleased, I did not want to drive the project into a direction which would make NVidia unable to accept our work. Temis had also asked for regular reports on how things were going, so I sent the track to Temis, along with a little explanation of how we would do the demo, a few video captures from test scenes for the engine and some early SVG graphics we had made. I was really afraid that he would criticize the music, that it was too long or too electronic or too whatever.
During all this time, I was also working on the engine, about three hours in the evening of each workday for three months. My player was based on Chaos' Altona engine, a kind of cross platform lowlevel 3D interface to OpenGL and Direct3D. I called it "Billstedt", since Altona was the district of Hamburg where Chaos was living, and Billstedt was the one where Faith and I were living.
The SVG loader from "Die Ewigkeit schmerzt" was ported to output a mesh format that could easily be loaded into Chaos' engine, and the custom script interpreter was slowly extended to support organizing shapes in trees and do SRT and color animations. I wrote a longer documentation for it because I had expected it to be used by others such as cp. Cp did a good job at writing a few scenes, but none of them was like what I had in mind, so we agreed that he would only supply additional shapes and do what I call "the dirty work" (such as applying individual gradients to 30 layers of text), while I kept scripting scenes, among other things.
Since the soundtrack was changing mood in fixed intervals of 64 beats (about ~29 seconds each), the demo was designed to be organized into 16 segments, adding up to about almost 8 minutes of demo. Listening to the music, I had written down a short concept of what I would like to see in each particular segment, and we followed that concept without any further changes. The sails were set, the ship was driving steadily. But too slowly.
A WYSIWYG editor is clearly the best thing you can have when doing a demo. I had none. Every change to the script had to be tested in the player, which I fortunately designed to reload the script without changing time indices. It could also loop across a segment of time, which helped a great deal. Still, I estimated that at the pace we were running, considering the time that was left, we would have to finish work in two days per segment. That was impossible.
Also, I kept fumbling on the rendering style. I had already burned three different ways to do motion blur, and ended up using the least performant but best looking one. The 2D scenes looked too flat, so I devised a method to morph flat scenes into 3D and back without giving up on support for infinite zooming. The engine was designed to adjust scene and camera invisibility whenever the floating point precision would hit its maximum. That system needed a lot of tuning until it worked well, but it allowed us an uninterrupted steady workflow in the last days without any failure and any need to fake any of the zooming stuff.
A few days after I sent Temis our work previews, Temis wrote back and told me that he loved the soundtrack and had even put it on his MP3 player. He let me know that he had full confidence in my talents, and wouldn't want to interfere with anything I was planning. A truckload of stones fell from my heart.
When I arrived at Breakpoint (finally! thank you for still reading this!), only about 20% of the scripts were done. Everything else was half-finished. Some scenes were missing. But Tournesol was there! And by pure coincidence, Tournesol had made a lot of experiences with Inkscape in the past weeks, and was willing to help with the project. Faith and I arrived early at the party place on Thursday, and while Faith helped organizing a great party, BP main organizer Scamp had assigned me a room in the container to work on the demo in silence. Work went swiftly. Friday evening, cp and Tournesol arrived. We worked like these TV teams and journalists always exaggerate in their reports, with almost no sleep, day and night.
On Saturday, Steeler told me that Temis had arrived. I was tremendously worried, since we were hours away from finishing the thing, and it didn't look presentable at all. I was already imagining the comments: "You had three months of time, and THIS is what you give us?!" But when I met Temis, I felt relieved. I had imagined him as one of these corporate bullies in suits, but he looked really peaceful and friendly in his beige sweater and jeans. He seemed very excited about the atmosphere, and I had a hard time not appearing too worried. When I'm stressed, I can seem pretty unresponsive, all curled up in my worries.
Saturday evening, plumbing away on our project, Steeler came up to us and asked if Temis could come by and have a look at the demo. Leia from Scene.org (who were presenting NVScene along with NVidia) had seen our unfinished work previously and seemed to be impressed. But insecurity was nagging on me like locusts on a rampage. The scenes were not even connected, you had to start up each part of the demo independently. I said: "Ok, but it is far from being done." Steeler said: "It will be fine, it looks great so far."
Ok, just a private presentation, I thought. I am going to explain what is missing, and he will understand, and perhaps not be too disappointed. And then he came. Along with a procession of people with Nvidia name tags behind him, all cheerful and smiling, hyped up by what Steeler had told them, waiting to see the show of their lives. It scared the crap out of me. "NO NO NO!" I shouted, "Not all of them! Not now!" Steeler explained and they agreed, clearly disappointed. The rest of them left, and we showed it to Temis in private. I explained what was missing, and Temis still seemed to be very positive about it, and agreed with all we had done. We joked around about different parts, and I felt a lot better than five minutes ago. Still, my hands were trembling.
It was really hard to remain patient with what we were doing. Time was flying like it was on warp drive. I had no choice left but to trust in the magic qualities of what they call "perfect timing". I made sure that we could enter a final version of the demo into the competition at the last possible moment. That brought us some time to solely work on polishing in the last eight hours. All scenes were done, it just required proper blending between scenes.
We finished work on time, tested it on the compo machine where it ran flawlessly, and even Chaos commented it with: "That's one of these demos which just make you happy." Work was done. Cp, Tournesol, Faith and I felt burned out, but relaxed. We contemplated about our work and got ourselves some real food.
The demo competition ran and ran. Impatiently we were waiting for our demo to show up. I had expected it to be among the first ten or so, because I still was not convinced that it was good work. But the more demos we watched, we got more and more bored. Clearly most of these demos were pretty, all of them had beautifully rendered abstract 3D scenes, but they were all lacking what we cared for the most: content, emotional commitment and story. They were what they were supposed to be: demonstrations of programming skill. Nothing more. This was when it dawned on me that we could have made something special.
Masagin played out beautifully. We watched electrified. The people cheered at all the right places. MBB, a good friend, came up to me and made me laugh by just staring at me in ecstasy. Lots of people thanked me for the demo, but also a handful of people told me that they expected a bit more from Farbrausch. Damn that Farbrausch stigma of small executables and headline 3D graphics ;)
Temis was totally bombed. He came to us and thanked us over and over. I am so grateful for this moment, I am close to tears when I think about it now.
Although Masagin is certainly no big step for mankind, it was a big step for me, and I am still proud I did this. I think I could have done better. But that is a feeling that I carry with me all the time, no matter what I put my dedication to.