The Global Game Jam (GGJ) is a worldwide game creation event, and I was able to participate this year in Denver. The idea is that in today’s heavily connected world, we could come together, be creative, share experiences, and express ourselves in a universal way. The process is simple: you sign up for a site and show up Friday evening to meet people and form teams. You and your team then spend the next 48 hours making a game from scratch. At the end, you present your game to the other teams, post it to the website for all to see, and bask in the accomplishments or failures you faced. I think that’s right…you face accomplishments, right? Anyway, I had heard about the GGJ a while back and thought I didn’t have the chops for it. Yes, I have been playing video games for a long time. Yes, I have an advanced degree in Video Game Design (or at least I have worked on it for a while). Yes, I have been a professional programmer for many years. But this is the big show! These are people who have many more years of experience and have dozens of games (some of them AAA titles!), and they won’t want to work with someone who made his first game just a few months ago (you can access the game here)! So, I was quite hesitant to go. In fact, I was downright terrified. Before I unravel my tale, I will say this: it was the most fun I’ve ever had and maybe also the most stress.
Weeks leading up to GGJ:
I wanted to hone my skills, so I got the following books from the library – Sams Teach Yourself Maya in 24 Hours, Sams Teach Yourself Unity in 24 Hours, and The Art of the Video Game. The art book was great, but focused on some games that I had never played with great artwork. As far as Sam’s goes, they warn you that 24 hours is not an accurate description of the time needed to follow through the entire book and actually grasp any of the concepts. It took me about a week for each book, and I still use them for reference. I would say that they are really great reference books. I also took an online class for Blender, another 3D graphics program that is open-source. I actually got my work to pay for it, claiming that I would use the knowledge for creating special work-related graphics. I doubt that will ever happen, but at least I took the class for ‘free’. As I neared the deadline for GGJ, I took an old laptop and wiped it to have a GGJ laptop with Unity Pro, GameMaker, GameSalad, Blender, Maya, and Python. With my experience regarding these software packages, I was feeling slightly better going in. I also did a ton of research on previous game jams, what a game jam consisted of, and what I should expect from a game jam. The biggest point I took away was to bring extra deodorant.
The Day Before GGJ:
The GGJ 2015 was held January 23rd-25th, and I was scared and excited. I planned out my Friday. I would leave a little early from work (I eventually decided on a half day), ride the light rail to the nearest stop, and then ride my bike to the actual site. The site I signed up for through the GGJ website was the University of Denver (DU). They’ve hosted in the past and had great reviews, but the previous organizer had decided to hand off the reigns. It turned out OK for me, but I heard a lot of grumbling about previous years being better. I mapped it all out, charged my laptop, and was ready to go.
The First Day:
On Friday, I left work early, went to lunch with my lovely wife, got my bike, and hopped on the light rail. I reached my stop, arranged my laptop and bicycle, and took off. The site was about a mile from the light rail stop, but DU is a pretty bike-friendly school. When I reached the location, I locked my bike up and wandered in. I vowed I would not ride my bike the next day. I was covered in sweat from the ride, and I’m sure people were eyeing me with disdain. Luckily, I was super early, so there weren’t too many folks. I estimated ten or so. The final count for our site would be 139. I tried to find a quiet corner to cool off and just watch people. The DU site was constrained by the organizer to include only DU students first, followed by other students, and then non-students. As a professional student, I was not turned away, but I quickly realized that there was a severe age gap. I was easily a decade older than the people who were already there, and I started to sweat again. Would I be the weird old guy? I’m pretty social, so I quickly gathered some people to talk to, and I noticed that certain attendees avoided me. That was fine because I was soon entrenched in the defense of Ocarina of Time as the best game ever. It is. If you disagree, you are wrong. Eventually, we were ushered into the opening presentation (a live simulcast across all the sites). It was interesting, but I knew from my research that the most important thing they would divulge to us was the theme of the event. The 2015 theme was “What do we do now?”
I immediately started brainstorming games, but I didn’t know how big or how detailed this thing was going to be. I came up with five games right off the bat and dismissed them all. I also knew from my research that this is typical and a correct way to do it. After the presentation ended, it was time to meet some folks and discuss game ideas. I was struck by how many people had good ideas and also by how many bad ideas were fielded. Now, this is where it gets a little weird. The folks I had befriended were quickly tossed away except for one, whose ideas were just fantastic. I knew this was the guy I wanted to work with, no matter how little or much I could contribute. We shopped around and eventually built a team with an Oculus Rift! We were going to do a VR game! How awesome is that? We found some space to work in right away and got started with some of the obvious design ideas. The first was story. Luckily (and eventually unluckily), we had a movie producer on the team. We also has a 3D artist, a Unity programmer, a second programmer, a sound guy, and me. We established roles and began laying out the foundation for a collaborative programming and information dissemination environment. We used gitHub as a central repository for the game code and assets (by design, Unity contains all the assets in the project, but it can cause issues if you manage to get in there and edit them with Maya, so they needed to be separated and imported every time). We also used Atlassian SourceTree to duplicate the repo across all the working computers. Then it became time to work. Actually, it became time to eat, so we adjourned for the evening to a nice middle eastern eatery, went back to lock up our computers and decided to meet up the next day bright and early.
The Second Day:
On Saturday, I thought it would make sense to drive in and park at the building we were occupying. This proved to be correct and I got a great parking space only a tiny walk from the front doors. Awesome. I brought in some donuts and OJ for the crew and DU provided some coffee to get us up and running. We had a lot of work to do. Our final plan from the previous day was to have a game where you are playing as the sole survivor of Earth. As an astronaut working on the International Space Station, you happened to be outside doing a spacewalk as a giant asteroid impacts Earth, sending shards and debris everywhere. What do you do now? God, when I heard the idea I thought it was the precise embodiment of the theme. Now, we had to make it look right. We started by modeling an astronaut for the player character. I started on creating some skyboxes for background, and our programmers started fidgeting with creating some first person controllers within a 3D gamespace. This is where the unlucky part comes in: the movie guy had apparently no video game experience and didn’t really seem to grasp many of the design concepts. He kept trying to railroad the game into a mini movie instead of a playable game. This would continue throughout the entire weekend, and I think we all just eventually stopped listening to him and I think we really let him down. He really wanted a movie experience instead of a game. Virtual Reality has come a long way, but we were there to make a game…not a movie.
Now, this was my first real challenge with Unity (we were using version 4.6 back then, as 5 still had a lot of bugs). I used a program called CubeTheSphere to create my skyboxes. It’s a really great little free program that takes an image and forces it into the interior of a cube while stretching and curving the area to contain it. You go from a single image to six images that fit together to form a cube, and the original image is inside the cube (hence, a skybox). I had some issues with the skyboxes having odd angles and visible seamlines, so I asked the 3D artist (Brandon Jenks, who is just fantastic, here are some videos of him throwing together stuff) to fix them. It actually took us a while since there was math involved to figure out how the pieces fit together, but it worked out in the end and we had a beautiful skybox. Next on the list was figuring out the controls. We had a working astronaut model, so we placed a 3rd person controller in there to fly it around. Turns out movement in 3D space is a lot harder to figure out than movement along the ground. In Unity, you can just tick a box that says “affected by gravity”, but unchecking that box can just wreak havoc. We eventually (and by we, I mean Alex Brancard, the lead programmer, who runs his own app store) got the controls right, and we talked about adding a boost. When we got the boost in, Alex added a trail so you could see where you came from, but we decided that when it was implemented in first person, this could potentially cause some problems (the main was dizziness, which happens with the Occulus Rift anyway). So, we had a first person controller and the ability to direct the movement of the character (who could be a boy or a girl, since all astronauts in spacesuits looks the same), and a really nice skybox. Next, we needed to have collectibles. We decided to have items from Earth spiraling around the detritus of the debris field. We settled on some specifics: Starbux cup, Pizza, taco, phonograph, Teddy bear, Mona Lisa painting, Sriracha bottle, toy car, clock, and NES controller. Brandon jumped into modeling all these collectibles while Alex, Michael, and I tried to figure out how to collect them. There needed to be a visual clue that you were close to an item (in space, everything just looks like rocks floating around), so we added a huge ‘GRAB’ popup when you were close to an item. We had to use placeholders for the items, and then we realized that you could float around and collect items forever! That’s not a game. That’s just boring. So we added a collection list so you could only collect each item once. We wanted it to have a specific time limit, so we added a fuel gauge that would run out after three minutes(originally, it was ten and the game would just drag on). Then we added an ending. ** SPOILER ALERT ** If you managed to collect 8 of the ten items, another astronaut would appear! You would then have the decision to go after the final items and risk losing the only other human being in existence or turn towards the other astronaut and seeing the final cutscene. If you risked it, you get nothing! If you go for it, you get a nice little ending cut scene of the two of you floating off into space holding hands. It’s still pretty bleak. That was the end of day two (really 30 hours into the project with only 18 hours left). Brandon wanted to stay up all night and model the collectibles, so we left him to do his own thing.
The Third Day:
I was late. We had stayed up together at the jam until about 2am and I was exhausted. I wandered in around 10am and knew that we only had 8 hours left. We got to work on looking at the new models Brandon had cooked up. They were pretty fantastic. I mean, we’re talking photorealistic Sriracha bottles floating in space here. We got them in and I put together the collection list so it would pop up with little icons representing each item. I was pretty happy with my created icons. We wanted to have a little arm animation of the astronaut grabbing the items, so Brandon hooked that up in about twenty minutes. We just threw it in and attached the animation to the collection of a item. It looked pretty good. Next, we needed sound. We turned to Tim Girard, an accomplished composer who worked freelance on almost all the games at DU for a spooky, sad space drone. He delivered in spades (he must have sent us a dozen, and they were all great) and we incorporated the sound in as a 2D sound that whispered everywhere. Then we realized that there were only three things left on our list (four, really, but I’ll get to that). The first was moving inside the helmet, the second was the destruction of Earth, and the third was an additional sound of breathing. We needed to be able to look around inside the helmet, so we added a layered first person controller on a slower camera. When you would look quickly to the right, you would see the inside of the helmet, and it would slowly rotate out of view and you could continue moving in the direction you were looking. It worked out really well and I did all the artwork for inside the helmet (I think…by day three, your mind is mush and you struggle to put all the pieces together). Alex found a destructible Earth model that would explode into pieces and fling the pieces into the gamespace. It was brilliant! You could actually crash into the large pieces if you flew enough (and wasted all your fuel). Lastly, Michael put a coat over his head and breathed in fevered pitches to record the breathing effect. He really is a genius. The piece we forgot was the end game: roll the credits. I hurriedly tried to put together a simple GUI that would scroll our names, but I was having some problems and got very frustrated. I’m pretty sure I cursed a lot and felt I let my team down. Alex stepped up and threw the GUI in at the last second and then we got to have others come playtest the game. It was a small success. We worked very hard and then it turns out that some people just don’t like games in which the ending is pretty bleak. Also, some folks got sick with the Oculus Rift. Alex eventually got the whole program in a desktop version you can play with the Unity Web Player here. That’s it. That’s my story of the Global Game Jam 2015. I honestly don’t know if I will participate next year, but I honestly don’t know. I made some good friends and Alex and I worked on another game right after as a commercial venture. It is still a work in progress.