"Do you program?" Robin asked. "No," I replied, shaking my head.
We were sitting next to each other on a plastic bench. Robin Baumgarten, well-known indie developer, game jam veteran and the creator of Line Wobbler. Charlie Hall, writer at Polygon, an internet website.
Outside the window, miles of Iowa farmland stretched out toward the horizon. Massive white windmills swept past us on either side as the train gathered speed.
"Alright," he said in his charming German accent. "What about art? Have you ever done any 3D modeling? Animation?"
There was a pause while Robin thought.
"Do you," he asked, as gently as he could, "have any skills?"
It wasn't the first time I'd mentioned to him that I was new to making games, but perhaps it hadn't quite sunk in until now.
"Well," I said, "I'm a writer."
Another pause. Robin seemed to take a deep breath.
"Well," he said, "you're going to learn an awful lot, then."
He turned his computer slightly toward me, opened up a piece of software called Unity, and began to explain to me how games are made.
He was right, of course. Over the next three days I would get a firsthand view of how teams make games at a game jam. Together our foursome succeeded in making something one of a kind. And without Robin and the rest, that game would have never existed.
I wouldn't say that I was just along for the ride, but now it's time to do my part — the rest of my job, basically — and tell the story of how we made Runaway Train.
In 2014, I was lucky enough to convince my editors to let me ride along on the first Train Jam. At the time it was a ludicrous idea: Take a few dozen indies headed to the Game Developers Conference in San Francisco, smash them all onto an Amtrak train and, while sitting among the general population of travelers, have them try to make games along the way.
I was as surprised as anyone when, after a 52-hour, 2,500-mile trip, everyone arrived safely and with some amazing new games to show for it. Since then Train Jam has attracted an international following. Tickets this year sold out in 35 seconds, and brought in participants from as far away as South America, Australia, Saudi Arabia and Zambia.
I wanted to go again, and after that first trip, organizer Adriel Wallick said she'd hold a ticket for me if I wanted one. There was just one condition: If I was going to be allowed on her train again, she said, I had to actually make a game. And so this year I decided to take her up on the offer.
Roughly 24 hours before my train would leave Chicago's Union Station, I started preparing.
I frantically downloaded a few pieces of game development software, including Unity, Unreal and GameMaker. At the suggestion of a few folks on Twitter, I also ripped some YouTube videos on how to use the software. Not just tooltips and tutorials, but entire series on making your first game.
One unexpected feature of Train Jam is that there is little to no internet access. There would be no safety net if I ended up working alone, and if that happened, I fully expected to fail. But at least that failure would make for an entertaining story. If nothing else, I'd have some of the most amazing scenery in the country to keep me company.
But when I showed up at Union Station, the Train Jam community welcomed me with open arms. Adriel was among the first to demand a hug.
One of the people I bumped into was Robin Baumgarten, whom I'd met on that first trip in 2014. There, in a tiny bar inside the train station, we caught each other up on our lives, and before long Robin asked me if I wanted to join his team. He'd already roped in his friend Gorm Lai, an experienced game designer and co-founder of the Global Game Jam.
There were probably no two people on the trip with more game jam experience, so I jumped at the chance to join them while taking care to explain that I had less than zero experience.
"You've got to start somewhere," Robin said cheerfully. "What better place than here!"
Before we boarded the train, Robin, Gorm and I spent some time brainstorming on this year's theme, really nothing more than a phrase — "maximum capacity." Our idea was to create a game where players ran along the top of a completely full commuter train, an endless runner of sorts with all kinds of scenery flying by in the background.
There was just one catch
There was just one catch; Robin and Gorm wanted to make the game for the Oculus Rift. So much for baby steps, I thought.
To experience the game, players would stand in the middle aisle of our Superliner train car, facing forward with their knees bent. Because the Rift can detect motion, players would be able to bend down to duck and stand up to jump. The game would be completely buttonless.
Robin wanted to go a step further, though. He'd brought along an Arduino microcomputer and an accelerometer. As an added feature, the accelerometer could read the motion of the train car players were standing in, and the Arduino could feed that information back into the game. In this way, the cars in virtual reality could move in tandem with the train players were actually riding.
"What about giraffes?"
It was a brilliant idea, but could we make it work in the allotted time? Robin and Gorm both thought it was possible. All we needed was an artist.
We got to work thinking about what kinds of obstacles we could present to players. There would be regular train cars, of course, but also uneven box cars and tanker cars with pipes and other things to jump over. There could be a car filled with coal, and a car with logs. Perhaps we could let players turn their head slightly left or right, giving them the ability to strafe side to side as they ran.
"What about giraffes?" I asked. Robin and Gorm stared at me blankly.
"Have you ever seen that Indiana Jones movie, where the young Indy is running along the top of the circus train?" Neither of them had, but the idea was so comical that it quickly moved to the top of our design document, which by now was now taking up two entire cocktail napkins, front and back.
About 20 minutes was all the time we had to prepare, though. At noon on a Thursday, we gathered up our luggage and headed for the train platform to board.
By 3 o'clock that afternoon, our small team was gathered in the observation car. Robin, Gorm and I were joined by digital artist Raymond Stump, an earnest computer science and game development student from Indiana University. He began creating train cars and other assets as quickly as possible. Gorm busied himself by putting together a prototype for the guts of the runner.
Meanwhile, Robin had turned his computer toward me, and began to quickly and concisely explain to me what the hell was going on.
It was the most incredible 20-minute tutorial on game development I've ever had.
The engine we would use, called Unity, effectively had two sides. Robin flipped casually between them: first a game design side with a bunch of tiled windows, and then a programming side with multicolored lines of code.
It was the most incredible tutorial on game development I've ever had
Some of the windows on the game design side were familiar to me, since I've spent a lifetime playing games. There was a first-person view of the game in motion, the same view players would have as they experienced the game. There was also a third-person view that a designer could use to move environmental art and other assets around. The other windows contained variables that could be tweaked to change the gameplay.
To make the player jump higher or fly farther, Robin said, he could change one of those variables and then run the game to see how it worked. But those variables didn't show up without someone messing around on the other side of Unity, using the dark arts of programming.
He flipped back to those cryptic yet colorful lines of code.
"I probably can't give you a 20-minute tutorial on programming," Robin said. But with luck, he said, I might be able to mess around on the game design side once he and Gorm straightened things out.
By dinner, I was playing a very early prototype of the game. Gorm pushed his computer over and I hit run. There was a placeholder for the player model, a rough capsule grabbed from the Unity database with a camera glued to it. With collision turned on, the capsule bounced off the rectangular train cars as they passed underneath at a steady rate. By hitting the space bar, I was able to leap from rectangle to rectangle.
It was a little rough, especially on the landing. The way the jump was set up, the player capsule moved like it weighed several tons, and Gorm spent a lot of time smoothing that movement out over the next few days. But for just a few hours' work, I was pretty impressed.
Gorm and Robin stressed caution, however. There was a long way yet to go, they said.
Meanwhile, Robin began wiring up the Arduino. With a little pair of wire cutters, he connected the accelerometer to the microcomputer and then attached it via USB to his PC and started programming it. The goal, he explained, was to convince Unity that the accelerometer was a joystick. Any inputs along the x-axis and y-axis that the accelerometer picked up would be read as movements of that joystick. With a bit of programming, Robin could expose those variables to the design side of Unity, smoothing out the jerky movement into something pleasant that mapped well to the movement of the train.
The Arduino portion ended up being a little more challenging than Robin had originally hoped. It would be until the morning of the next day before he got it right.
I spent that first evening looking out the window, trying to think of something useful I could contribute other than moral support.
"You know what?" Robin said, in between shaking and silently cursing at the Arduino. "We are going to need some sound eventually."
It's very hard to find a quiet place on an Amtrak train, even late at night.
It was 10 p.m. and well after most everyone had gone to bed. Outside the train, Nebraska was passing us by. Inside, I was balanced on one foot, holding my breath with a voice recorder in one hand. I was searching for a sound, straining against my headphones to find something more felt than heard — the sound of the rails, the sound of our train itself.
Thanks to Elias Farhan, another game developer on the trip, Runaway Train would have its own soundtrack. But I was trying to create the rhythmic, throbbing white noise that would accompany the player as they ran.
Each train car was connected by a short passageway, perhaps 4 feet long and 8 feet high. Electric doors divided this breezeway from the passengers sleeping in their seats on either side. Thick nylon sheets covered up the umbilical cables and other mechanical elements that connected the two cars, and as they rattled they made a terrible racket banging against the sides of the passageway.
With my left hand I was pressing one nylon sheet to the side of the breezeway to silence it, and with my right foot I was holding down the other. Standing then on one foot, I was searching with the business end of my voice recorder, probing the nooks and crannies of the space for just the right sound.
I spent the better part of the next morning using Logic Pro to clip, loop and layer those sounds together to make a minutelong MP3 file. As we left Denver and headed into the Rocky Mountains, I hit the button to render out the background sound of Runaway Train.
Robin, Gorm and Raymond loved it.
"Now we just need the sound of jumping," Gorm said. "And also landing. We need the sound of running. Of stopping. Of ducking. Of falling.
"We also need," Raymond added, "the sound of giraffes."
And that's how I ended up spending time in the restroom of an Amtrak train — the quietest space I could find — making various animal sounds into a voice recorder.
Had there been more time, or had the game concept itself not been so ambitious, I have no doubt that I would have had more hands-on time actually crafting the gameplay. But in the end, even though I couldn't program I still had plenty of work to do.
Of course, much of my next few days was also taken up with playtesting, including some time inside the Oculus Rift itself. With the motion sensing turned on, these tests would be the only way to experience the game as it was meant to be played without booking another Amtrak trip, and we tried to get as many players and opinions as we could along the way.
It was just extraordinary to watch the team work, and to be present for its creative and technical process. But it was also fascinating to watch the prototype evolve in bizarre ways.
At first, the way Gorm had built it, our virtual train wasn't actually moving through space. Instead, the 3D terrain that Raymond had created was just moving along underneath while the train stayed in one place. Eventually Gorm flipped that around so that the train moved forward while the terrain stayed still. That made the implementation of Robin's accelerometer data much easier.
To save memory and provide a smooth experience for the player in virtual reality, each train car the player jumped over, as well as all the trees and other bits of scenery that passed them by, had to be destroyed once they were out of view. Looking at it in motion from inside Unity, behind and above the player's point of view, was surreal. Our train moved along at one speed — never more than four or five cars long — while the world that surrounded it flashed into view for a few moments and then vanished.
Meanwhile, Raymond was making more and more 3D assets. There were train signals, trees and a mountain with a tunnel running through it. There was our boxcar, and an observation car filled with little square people looking dumbly up at the player as they ran by.
There was even my circus car filled with giraffes.
By the end of that second day, my sounds began to slowly get added into the game. Each one was attached to an event or an object. Thanks to Unity's built-in bells and whistles, we even got the doppler effect of them all passing the player by, basically for free.
If I'm being honest, I still really don't understand how the game got made. Yes, I was there for it. I asked a lot of questions and contributed to a lot of discussions. I gave my feedback, and requested changes along with everyone else. But really, it was Robin and Gorm and Raymond that did the heavy lifting.
It's a wonder to me that they managed to pull it off.
Sadly, the California Zephyr we were riding ended up arriving at the station in Emeryville, California, about an hour ahead of schedule. While that was great for the other passengers on the train, most of the Train Jammers — my team included — were a little upset. It meant that we didn't get the chance to have as many people play our game as we wanted.
So now, it's up to you to be our final playtester.
I've included the whole game here, for both Mac and Windows machines. It's somewhat unfinished, as jam games tend to be. It works much better with an Oculus Rift than it does with mouse and keyboard, and there are no menu screens to speak of. But it runs, and I've included the entire Unity project file so you can see for yourself all the amazing work that my team did on the train.
And yes, those files even include my very best giraffe impression.
Let us know what you think in the comments below.
Photos by Robin Baumgarten, Izzy Gramp and Charlie Hall.To hear more about Train Jam, and organizer Adriel Wallick, check out the latest episode of Polygon Backstory below.