Monday, November 16, 2020

The Case for Game Jams

 I am doing a podcast with my friends about games (check out The Adventure Mechanics here) and I decided that I need to try for accountability on actually releasing a game this year. To that end, I'm going to go through the development process to release a game. Here is the transcript from the third episode on the game jams and what to expect when entering into one:

The case for Game Jams:

Welcome back to my Side Quest for the The Adventure Mechanics.  I'm Chandler and, once again, it's just me for this episode.  Between episodes, I participated in a Game Jam called OMGJam8, link in the show notes.  If you've listened to the last two episodes of the side quest, you'll know that I talk about game jams.  I talk about them a lot.  And I haven't really explained the anatomy of a game jam. So, let me divert from progress on my game, which is in the middle of making and putting art assets into it, to talk about the process of participating in a game jam.  Trust me, this is still relevant to finishing my game for wider release.

WHAT IS A GAME JAM:

For those who haven't heard me rant about game jams before, a game jam is a a time-limited game design challenge where a theme or restriction is given at the beginning of the jam.  Once the timer starts, the developers or teams have the time given to come up with a design and execute on it.  It's the entire design and execution process condensed down into a small chunk of time.  It's a great way to determine where you're weak in the process and improve on it.

Now that you have a general idea of what a game jam is, let's talk about preparing for one as a participant.

GETTING READY FOR A GAME JAM:

First and foremost, you're going to have to set time aside for the jam.  Like, all that you can muster.  Make sure that you're not committing to any social engagements during the jam.  Let everyone who could interrupt you know that you're going to be unavailable during that time.  It may be obvious, but interruptions during the jam will pull you out of the flow and need to be mitigated before the jam starts.  It's hard for me to get back into the state of flow once I'm jarred out of it, so this early mitigation strategy really does pay dividends when I start.  Next, make sure that you have all provisions needed for the jam before starting.  Need caffeine?  Grab enough for a crunch.  Need snacks?  Grab days' worth of your favorite snacks.  Need to force yourself to sleep (and get up early)?  Set alarms to remind yourself when to sleep and when to wake up.  And don't forget to take care of meals while jamming.  All of these preparations will save you from spending time during the jam figuring them out.  That mental overhead does not need to be there and taking care of it will keep you working longer on what you want to.

When you're done with physical and social preparations, then comes time for getting your tools ready.  This may sound like a given, but I've seen many teams spend an inordinate amount of time learning their tools and getting them working during the jam.  This is not only counter-productive, but also a sign you're not ready for a jam.  If you want to practice with a new framework or engine before the jam, then do a dry run beforehand.  Go through a couple of tutorials so you know the basics and package/build your results.  This will save you time during the jam trying to figure out the packaging process works for the engine.  You don't want to go through the entire jam only to get stuck at the end trying to figure out how package it up for release.  It's hard to diagnose issues when you're tired and burnt out from a weekend of jamming.  Trust me.  I've ran into this exact issue multiple times and hate myself every time.  Don't do this to yourself.  Prepare!

STARTING THE JAM:

Once you have all of your affairs in order and you are comfortable with your tools, it's time for the start of the jam!  If it's a theme release, you will want to brainstorm some ideas on what you, and potentially your team, want to make.  Brainstorming will help you organize your ideas and how feasible they are to get done during the jam.  It may feel like it's a waste of time, but like the preparations made before the jam, it will pay off later.  Don't go with your first idea.  It may not be the best one for the jam.  Work out several ideas and keep the scope as small as possible on each idea.  As you work through them, you'll likely lean towards one idea that you particularly like.  Spend some more time on it and flesh it out some more.  If it fits the theme and you feel confident that you can complete it, work through what needs to done to get the game to your vision.  Write out all the details in a way you can track.  Some ways that I've done this is writing everything on a whiteboard, putting everything onto sticky notes or sharing a Trello board.  However you organize it, make sure that you're updating it as you go along.  Planning without followup is not very useful.  It's also nice to see the progress you've completed when you move the sticky note or erase the task from the board.  That little action may be the difference between getting overwhelmed and actually completing the game jam.  Every thing you can do to keep motivation high is something worth trying.

WORKING THROUGH THE PAIN:

One thing I've noticed that isn't really mentioned whenever someone talks about participating in a jam is the inevitable exhaustion and blocks that come up.  Exhaustion is going to happen.  That's normal.  I have hit this every time I have participated in a game jam.  Every one.  Taking a break, a nap or a walk aren't going to bite into your dev time more than you trying to "gut" through the exhaustion is going to.  Do what you need to do to get back to a good mental state.  If you're working exhausted, you're not giving the jam your best.  The same really applies to all things, come to think about it.  In that same vein, hitting a design or mental block isn't something to fear, either.  You're going to be working on a whole game all at once.  Getting stuck on one thing doesn't mean that you're no good at being a dev.  It means you may need to switch to something else or spend some time away from the game.  There are going to happen and you'll want to accept it early so you don't spend time fighting it instead of developing.  It's all about getting a complete game.

FINISHING STRONG:

When you have a complete game, congratulations!  It's no easy feat getting a game done on time for a jam.  On the other hand, if you find yourself running out of time and still have that wall full of things to do, it's time to finish what you can and prepare your game for release.  You entered into the game jam to finish something, so having something to show for your efforts should always come first.  There's no shame in having to cut features to get your game over the finish line.  Other devs are having to make the same hard decisions to get a finished product.  If anything, it's a sign that you're willing to make the hard choices to finish a game.

As for the worst case scenario, you don't have enough of a game to release for the jam and need to withdraw.  It sucks, but it's going to happen.  Life came up and you don't have the time to finish.  It's okay, don't beat yourself up.  You still learned a lot during the jam.  That's something to be proud of!  Take the lessons you've learned and carry them forward.  It's only a failure if you don't learn from it.  I always feel like crap when I have to withdraw, but every time I've withdrawn, I just couldn't get to a completed game.  Regardless of the reason why you don't finish, make sure that you go through the proper channels and either withdraw or announce that you won't be able to finish.  Don't ghost everyone, especially if others are depending on you.  Be a good participant of the jam.  It's supposed to be fun, after all.

THE AFTERMATH:

Once you've finished the jam, you're not done.  Most jams have a rating period, like Ludum Dare does.  If the jam you have entered doesn't have a rating period, you will still want to go through the entries and play other entries.  See what other people came up with and give feedback.  Not only is it a good way to get feedback on your entry, it's a just a good thing to do for the jam community.  You all went through the jam and it's time to see what people came up with.  Who knows, maybe you'll see something amazing or see someone else you may want to do future jams with.  This little bit of extra time after the jam is important.  Use it!

One final thing that is useful is to do a blameless post-mortem.  It's time to evaluate what happened during the jam, what can be improved and, most importantly, what you did well.  Not a whole lot of people do this, and it's only to their detriment.  Post-mortems are the critical lens needed to grow as a developer and acknowledge your accomplishments.  Go over the project with a critical eye.  If you really need it, use something like an Agile Retro.  I can't believe I just said that, but it's a good tool.  I think I gagged a bit using work lingo in this podcast.  Ugh.  That being said, a retro formalizes the process of doing a post-mortem and may help get it started for you.  I'll link to an explanation of what an Agile Retro is for those interested.

TAKEAWAYS:

So, I've gone over all of this and for what?  Well, being true to myself, I'm going to use this as an opportunity to talk about my entry for OMGJam8 and do a proper post-mortem on my own work.  The theme for OMGJam8 was Recycle.  I spent the morning of the first day thinking of games I could make for the theme.  I ended up with a tile based puzzle game where the player can switch bodies and "recycle" them for the next level.  I initially wanted to use bodies, a la Carbon Frame, but decided against using meat bags, since that would bring up other issues thematically that I didn't want to tackle in this jam.  The jam hosts, Game Devs Quest, provided an asset pack to work with for the jam.  I found some music and sound effect that worked from the asset pack, but the asset pack didn't have any artwork that really inspired me for what I had in mind.  I wanted to stay in the spirit of recycling, so I went out to OpenGameArt.org and found an asset pack that matched the feeling for what I was envisioning.  I found a workable CGA style asset pack with a variety of robots included.  I spent the first night fleshing out the core mechanics.

I woke up early the next day and started implementing the base of the engine I was making.  I spent a good portion of the day looking at rectangles and got sick of it after dinner.  I spent the rest of the night adding and mapping out the asset pack that I chose.  I think I spent too much time getting the asset pack to map properly, but now I have a robust way to map and scale the images for future games, so that is one small win.  By the end of day two, I was able to go through one level with one of the robots, but I didn't have the features unique to each robot implemented yet.  I knew I wanted three unique robots at a minimum, so I knew that I had to come up with something for each tomorrow.  I went to bed thinking on that one.

On the third day, I started by finally nailing down the capabilities of the robots.  I implemented their behaviors and then started making the instructional levels for showing the powers to the players.  I got the tutorial levels implemented and even added a couple more for posterity, totaling five levels for the jam.  I ran into issues with coming up with puzzles for the design I had, but I am happy with what I came up with.  When I finally added the sound effects, music and menus that evening, I felt good about ending the jam on a high note.  Then I had to package the game for release.  It just wasn't cooperating with me.  My first try ended in abject failure, not packaging at all.  I spent the next two hours trying to get a successful package.  By the end of the night, I finally got it working, but I was not a happy camper with the effort.

I had the Monday after the jam off work, so I went through and played all twenty five games entered into the jam that I could play and gave feedback on them.  I got some pretty good feedback from some people and went to bed happy.  On Tuesday evening, a streamer named Darzington mentioned that they would be playing my game with a number of others on Wednesday.  Needless to say, I was surprised that any streamer would be interested in playing games from such a small jam.  I watched her stream while I was working and got admittedly sidetracked, since those were the same games that I played a couple of days before.  There were a number of participants in the chat, so it was really fun spending time with them as Darzington played various entries and gave feedback on each.  There were a number of suggestions that she gave on my game that were very good (and I noted in the code for potential revisiting...).

Overall, I had a really positive experience with this game jam.  I may not have gotten as many levels into my game as I wanted, but I did get more into it than I expected.  Packaging the game up was the main stumbling block I had, and that was mostly thanks to me being tired when I went to package the game.  There are a number of things that I am weak at, especially designing a compelling puzzle, but I felt that I was able to make something interesting despite that handicap.  Having art and sound assets already available for use when the jam starts was a whole new experience for me.  One that I would certainly like to repeat.  In future jams, I may create a few art assets to work with before the jam begins, so I can just pull from them and get working on my idea.  I really liked not having to spend a whole day working on art, only to have to set them aside when I don't have time to implement the mechanic that uses them.  To top it off, participating in a stream that talked about some of the more interesting entries was a novel experience.  For larger jams, like a Ludum Dare, participating in something like that may not be possible, but whenever it is, I will absolutely want to do that.  It was such a wild experience.

Well, that's all that I really want to say about game jams in general and OMGJam8 in particular.  Next time, I'll be giving a beefier update on my game and another topic that relates to it.  If there's anything you'd like me to address next time, reach out to me on Twitter as @jcsirron.  This has been the Adventure Mechanics Side Quest and I'm Chandler.  I'll talk at you next time.