Indie Game Jam 1
Feb 28 - Mar 3, 2003
Hosted by Chris Hecker and Sean Barrett in Oakland, California
Recap by Mike Linkovich
This is a recap, from my perspective, of the 2nd annual Indie Game Jam which took place at 'The Barn' in Oakland, California. I was invited by Chris and Sean to help provide artwork for the games developed at the Jam. Last year at IGJ0, everyone used the same textures and DOOM demon sprites, so I think there was a desire to raise the production values this time around.
The people involved, in alphabetical order:
Also visit the Mine-Control website for more on the technology used and other projects by a number of the Game Jam participants.
Zack Booth Simpson
So, in roughly chronological order without to much introductory fanfare, here is a recap of my trip as I remember it...
Feb 27 - Travel
Leaving from Toronto, early morning on February 27th, on a slightly warmer than average day for this bitter-cold winter of 2003, I have good weather for takeoff. The flight takes me through Philidelphia, and then west across the U.S. Along the way, I manage to snap a few nice pics from my window seat. (Although I find it ironic that digital cameras now fall under the category of 'electronic devices' prohibited during takeoff and landing!)
Eventually, after 2 planes, a bus ride, and a B.A.R.T. ride, I arrive in Oakland, California. Chris Hecker offers to pick me up from a convenient location and shortly after we drive over to his 'barn' where the Game Jam is going to take place. By this point however, I'm beginning to feel pretty ill and weak after so much travel and almost no sleep or food. Sean and Casey are there already, as well as Zack (? I think it was Zack, but I was pretty tired) sleeping on the futon. Sean takes me over to a Vietnamese restaurant but as soon as the food arrives, I realize that one bite of it will make me hurl. So we walk back to the barn and I spend the rest of the evening mostly passed out on the futon, drifting in and out of concsiousness listening to California techie banter (a strange English dialect) while the guys set up the equipment Intel loaned us to get ready for the next day.
Chris has graciously invited Casey and myself to stay at his mewst excellent pahd in an Oakland suburb. I get a good night's sleep, which, combined with my napping earlier that evening, completely erases any nausea and snaps me over to west coast time.
Feb 28 - Day 1
Next morning, I wake up early, refreshed and ready to go. We grab a coffee, get some supplies and drive back to the barn. I take some shots from inside the car, of what I imagine must be some of the nicer parts of town.
Back at the barn, the computers and network are mostly set up. Atman shows up. The guys from GameLab in New York show up. Dean from Intel shows up. Zack, the creator of Shadow Garden, the core technology being used this year arrives. Ken, who has worked with Zack to produce some Shadow Garden demos arrives. People start staking out their territory. Zack and Ken get busy setting up the projectors and cameras necessary for the Shadow Garden system.
Soon, Zack has a working projector for display and camera for input. Dean has some fun with Ken's sand demo. I try out Zack's marbles demo. Brian and Chris from Ion Storm arrive. My buddy Thatcher and his co-workers Ryan and Charles of Oddworld arrive. A snack food run is made, and activity at the barn begins to heat up.
Unsatisfied with the coarse ridges in one of the screens on the side wall, Ken decides to roll up his sleeves and iron out a makeshift canvas screen and then staple-gun it to hang from the ceiling.
Eventually, most of the remaining participants arrive and set up. At this point, Chris does a quick presentation of how the Shadow Garden system works. In a nutshell, a digital video projector is hooked up to a PC running the Shadow Garden software. A web cam is also connected to that same PC, capturing the image being projected. By adjusting the contrast levels on the webcam, and taking care to use images that do not contain very dark colours, it is possible to isolate any shadows cast on the screen, and send those back to the application. This makes it possible to use the shadow as an input device. For the games that will be developed during the Jam, the Shadow Garden engine provides an easy-to-use API for coders, which allows them to draw (with either OpenGL or Direct3D) and to acquire bitmap information about the shadow, which is transformed back to screen space (this is calibrated while the projector and camera are set up). Zack shows off his own butterfly and interactive music demos to show some examples of what can be done. (It becomes apparent to me that Zack has both quite a lot of technical skill and a strong sense of aesthetics -- he is of a rare breed that can give his technical creations visual polish).
Ken wraps up the engine presentation by running through a list of ideas he has come up with, and getting the rest of us to help him choose one by voting on them. The rest of the ideas are left up for grabs to be used and/or mutated however anyone chooses. These serve as a good jumping-off point for everyone who's just getting a handle on the tech now. One of the key difficulties everyone has to tackle is the fact that in most cases, the centre of the screen is going to be obscured by the player's shadow. Second, the fidelity of the shadow image is not necessarily all that great; figuring out what the player is doing, and determining any kind of geometric shape from a coarse black and white bitmap at a high framerate is not going to be the easiest task in the world, let alone coding the physical interaction with the objects in the game.
Ryan and I start getting art requests and begin producing stuff. I create a few placeholder pieces for use in a number of early prototypes. Ryan starts putting his 3D modelling genuis to work with Ken on some really cool animated 'virus' game graphics.
There is a lot of ideas sharing as well as code sharing going on and despite the radically different technology, input, display and interactivity benefits and limitations, both Atman and Sean have some early demos running before the end of the night in the barn.
For the rest of the Jam's duration, the Oddworld guys are nice enough to let me crash in Thatcher's room in a nearby hotel, allowing me to walk to the Jam and back.
Mar 1 - Day 2
The days in Oakland have been gorgeous and warm (about 65F/18C). There is also a lot of neat stuff around to photograph, some of which eventually makes its way into some of the games in one form or another.
Thatcher gets a prototype of his 'whack-a-mole' idea going. At first, I try to use a photographic look for the graphics. I create a reasonably good tiled grass texture, and begin hacking away at a mole model in 3D Studio. Unfortunately, this all becomes rather laborious, and given the time constraints and my lack of everyday use of Max, the mole is a lot less than successful. Moles, as I discover by looking up photos online, are rather bizarre creatures and I have a hard time coming up with anything that looks half decent and fits into this photo-style grass background. Ryan and Thatcher whip up a bright, cartoonish title screen that sort of sets the tone for the game, so we decide to go more with a cartoon look throughout. The moles become gophers, and we have some fun with it, taking some inspiration from Caddyshack.
Ken's extremely cool 'Paris Plague Dodging' game is motoring along and he pretty much finishes it off today. (Sorry, I have no pics of this game... did I lose them in some fit of incompetence? Maybe someone can email me some.) It involves keeping one hand on your heart, located in the centre of the screen, while dodging 'bad' viruses and collecting 'good' ones. If you collect enough good viruses, you get a bonus benevolent virus that eats a bunch of the bad ones. Also, the player can get help from his friends by getting them to tell him where the bad viruses are on his body (since they appear on his back). The slow organic animation, coupled with Ryan's organic models, drawn tranclucently and set to a perfectly themed soundtrack make this a really cool game.
A few more people drop by; friends, co-workers and some press acquantances of those participating. Just about everyone has a laptop, so whoever has time and can find a space can collaborate, or just hang out and hack.
One of the things we notice is that 2 or more player games emerge naturally out of the Shadow Garden setup. I also notice that these games tend to be immensely more social than most conventional video games. Using one's entire body to play a game, the lack of a controller that only one person can hold at a time, and the ability to jump in or out of a game on a whim keeps everyone a whole lot more lively than most typical PC or console gaming sessions with friends.
Meanwhile, Zack has decided to use another feature of the Shadow Garden engine -- the ability to detect bright spots, or laser pointers (as opposed to the darkness of shadows). With that in mind, he sets out to create a kind of 'lasso' game, where you are trying to corral flying bugs with a chain that links two laser pointers. Here he is (note his home-made PC-in-a-briefcase) playing with some purple bee models I built for him now that the physics model for his chain/rope is working. Sean continues to push the envelope with fully procedural graphics and experiments with Shadow Garden feedback for a frighteningly disco-esque effect. His pong game continues to look better and better. (Sean has come up with a smart solution to using your whole body to simply block the ball: the thinner the shadow you use to push the ball, the more force is applied; which inspires the use of a lot of satanic hand symbols during gameplay.)
Atman, who has brought along and shared his soft-body physics engine and is getting some really cool shadow interaction, gets some much anticipated criticism from Chris.
Mar 2 - Day 3
Production starts to heat up all-around today. Those who've been coding without a lot demoing on the screen are no doubt spurred on by what has been demoed so far.
Michael, in addition to creating sounds for everyone else's games has been putting his music to work in collaboration with Ranjit on his musical beat-matching game. Here he tests it out while Chris and Doug code away on their laptops. Ranjit's work has been especially impressive, as he is about the only coder who hasn't used C in over a decade(!)
Charles has been working on a 'Dot Head' game that combines the use of images both projected on screen, and on to the backs of the players. Ryan has come up with some sort of 'electronics hobbiest'/techno-punk graphic design, and Zack and Charles compete to touch the appropriate colour that matches the colour projected on their opponent's back.
As the night wears on, Zack decides to move away from a 'corraling' style game towards a two-player skipping-rope style of game, involving the two players' ability to synchronize their skipping to create nice harmonics in the rope. This early demo shows the two players attempting to hit the targets in time, in the proper order.
Casey had been working on an Owl Simulator, using the players' arms to control its flight. The object of the game being to collect points by performing tricks and impressing the female owl. Today he managed to stablilize the flight model and playtesting was going well.
Chris Carollo created a bizarre kind of stealth game (being played by Chris Hecker, just to confuse you) that involved remaining still while the strange-looking dude at the top of the screen was looking at you, only moving while he was looking away. During that time, you could try to collect health, or ammo which would fire at the opposing player.
Brian and Chris C. also paired up to come up with an 'action Scrabble' of sorts, where you would attempt to grab letters flying by to make words, using a dictionary to check for real words and deduct points for non-words. One strategy in this game was to sabotage the other player by stealing letters he needed.
Finally, Atman, who had been having trouble graduating from the 'toy' to 'game' stage, has come up with a rather ingenious push-the-jello-through-the-maze game.
Personally, I've found myself either getting slammed by art requests or sitting on my hands. I regret not actually doing a game myself, since (provided I kept it simple) I probably would have had time to do one, as well as provide artwork for those who needed it. I had an idea for a simple 'full body shape bouncing' game that I probably could've managed but at this point it's too late to try to set up a dev environment and start coding. Ah well, maybe next year.
Mar 3 - Day 4
On the last day of the Jam, Ryan and I are really cramming. Ken wanted to do, as dictated by tradition, a game that involved all of the IGJ participants' faces. This year he designed a simple game where the player had to bounce food into their mouths with a variety of antagonistic creatures attempting to steal it. So Ryan takes headshots of everyone and we work to close-crop them all and then fit them to the appropriate collision-detectable positions. Unfortunately, I neglected to take any shots of this game in action; hopefully someone else did. Charles also managed to sneak in another game involving pose matching with a hilarious soundtrack created with the help of Casey's voice. I created a bunch of stylized, posed figures for this one which I also didn't manage to get any pictures of.
At the end of the day, after polishing and refining as much as possible up to the last minute, everyone demoed all the games, to be recorded on videotape.
Doug, who was only able to Jam for part of the time managed to come up with a nifty juggling shooter, which you can see Chris demonstrating.
Atman's race/maze game turned out to be what is probably one of the most violent games ever. Since the two players must race to push their 'jello' to the opposite sides of the maze, inevitably their shadows must cross. This game wound up as a brawl just about every time it was played.
Dean's hilarious Rock Paper Scissors game... uh, really, what more needs to be said?
Sean managed to squeeze in another game called Supermodel Shootout. I managed to whip together some suitably cheesy theme graphics just in time for his turn to demo. This game was a lot of fun to play, and people would pull off just about any contortion imaginable to thwart the other player's attempt to match their opponent's pose.
Casey's Owl Simulator eventually became quite polished, with the use of his own 3D Studio models and again with the help of Michael's excellent musical tracks. Using the players' arms' shadows to control flight actually turned out to be quite a stable and playable input device, and the course was a lot of fun to play. The only complaint people had was that it was pretty tiring to hold one's arms up for the duration of the game.
Zack's two-player skipping game receives a lot of polish with the help of Ryan's playground-themed background images. He winds up calling it 'Double-Dutch Swingers', and here he is demoing it during the final, videotaped presentation of all the games.
And the Indie Game Jame 1 is a wrap!
In the end, IGJ1 was immensely fun to participate in. Those who work in the industry were undoubtedly grateful to have a chance to just go nuts and be creative; those who work independently probably enjoyed the opportunity to jam with a talented group of their peers. For myself, living in Toronto, a city without much of a game development industry, I really enjoyed meeting a lot of game developers and collaborating with them. What people pulled off in 4 short days was nothing short of amazing. From what I saw, there was more innovation in that time than all the innovation I've seen from the commercial industry for the past 4 years. I think we all look forward to next year's Jam. Chris and Sean deserve a lot of thanks for setting up the event.
The games were then shown at the Experimental Games Workshop, at the 2003 Game Developers Conference in San Jose. You can read my writeup of this event here.
You can also check out photos of IGJ1 taken by Thatcher and Robin.
(Left mostly anonymous to protect the guilty. Sorry about any mis-quotes I will surely make...)
- How come no-one's ever done a WTF game? WTF-CTF?
- Check that source in?? But I don't check ANY return values! And I'm using strcpy without testing string sizes!
- Well I WOULD'VE won that round if your code was working!
- Dude! You like, tewtally impressed the female owl!
- C++ templates suck!
- Uh, no, for what I need they work perfectly!
- WE'RE NOT HAVING THIS DISCUSSION! (the very sensible Chris Hecker from across the room)
- CVS is a piece of crap!
- So what would you suggest instead?
- WE'RE NOT HAVING THIS DISCUSSION! (Chris again)
- [Some Microsoft function to get a device description] is useless because you wind up having to compare the STRING to find out what kind of device it is. I remember in Spain having to check for 'tarjeta video'.