Tuesday, December 11, 2018

Gamanteau: How Not(?) to Do a Month-Long Game Jam

I have a lot of blog posts that have been left in the "draft" state on here, left either unfinished or just deemed unworthy of publishing.  Earlier this morning I managed to get one of those out the door, a small analysis on level design in Hat in Time, in hopes that it'll help me prepare an even larger piece on the project I've been working on for much of the year.  I'm putting a bit of effort now, before the end of the year, to empty out my head and reflect a bit on my year as a hobbyist game developer.

Scoping Down

Last month, Github announced the theme of their annual "Github Game Off", a month-long game jam that encourages participants to use open-source tools to develop their games.  Last year's Game Off resulted in the birth of the independent studio Monument Games, a team of college student who were passionate about their craft and looking to try something new.  I had joined the team as a designer, and pitched a game idea about rolling rocks down a hill.  To our surprise, the game was pretty popular among the participants and judges of the jam, and would go on to win 2nd place in the "Overall" category.

Spurred on by this recognition, we stuck together and continued development on the game, eventually submitting it to other competitions such as the IEEE Gamesig Showcase and the Casual Connect Indie Prize in London.  Things were going really well.  While we didn't exactly find financial success through our game, it gave us the confidence to continue on forward to our next project, and bring on some new people in the process.


Then, my life changed.

Ellie was born on August 10th, the same day as my 5th anniversary with my wife.  She has been an absolute blessing in my life, and is giving me a whole new perspective on things.  But my new life as a father isn't easy, and to this day I'm still getting used to it.  About a month ago, I backed out of Monument Games in order to better focus my efforts on my job and my daughter.  I had, of course, hoped that I could still dedicate some time to my newfound passion in game design.

Enter the 2018 Github Game Off.

"Hybrid"

As life currently stands, I have ~1-2 hours of time every weekday to dedicate towards my own hobby projects.  If I'm lucky, I might be able to grab a few extra hours at home on a Saturday afternoon.  Having this small amount of time available meant I had to choose my projects very carefully; I opted to stick with 3 options: long game jams (longer than 2-days), modding, or learning new tools.  I was excited for the Game Off to roll around, but I was already knee-deep in a modding project and not too concerned with actually submitting anything.

The theme was announced, "Hybrid", and I took note.  No ideas came immediately to mind, so I wrote it off and forgot about it.  Some time later, as I was reading some comments on reddit, I came across a bot that would combine two-word comments into a single word.  It had suddenly occurred to me that this was a game I had often played with my friends; we would, for some inexplicable reason, try to combine two words that one of us would use in casual conversation.  I hadn't realized that this creation of new words had a name: Portmanteau, what could essentially be considered a "hybrid" of two words.  Perfect!  I had an idea for a game, that would be small enough to accomplish on my own with the minimal free time I had available to me...  Sure, the jam had already started, but I should have the time to complete something this simple, right?

Design

The idea was simple, from a source of words, pick two at random and display them on screen.  The player would be free to enter whatever they wished using a keyboard-like input, which they could then save to a "favorites" board.  This favorites board, however, would only hold a limited number of entries, so they would have to choose their absolute favorites and toss away the created words that they felt were no longer "good enough" to keep.



That was it.  3 screen, including the title.  All I would really have to worry about was making a pretty-yet-functional user interface, something which I didn't really have much experience with before.  But something about the open-ended results of this project amused me.  I had recently read Douglas Wilson's writings on "intentionally broken" games, and hoped to emulate that in some way: creating a game that pushed more towards a form of festivity rather than competition. 

Simply the act of creating new words is a silly but entertaining practice, improved even further if you attempted to say a new word out loud.  In addition, being provided with two random words that you might not normally see side-by-side could potentially present an opportunity for joke entries rather than new words.

Tools



When it came to prototyping or making small-scale games, I had fallen in Love with Pico-8.  It felt like the natural choice for this project, based on scale alone.

So what if it:
  • Doesn't have keyboard support
  • Had limited memory
  • Could only store 4-byte integers as save data
I could work around all of this, right? I mean, it's just a simple text game...

My starting point was to find a way to enter text data, and thankfully, other Pico-8 enthusiasts had already accomplished this for me.  Their code for simple, virtual keyboards were freely available for others to use;  I figured I could simply hack one of these keyboards to better serve my own concept.  I started by taking afburgess's PicoBoard cartridge, and replacing the functionality of the number and entry keys with a key that would re-shuffle the words presented to the player, and a "favorite" button that would take the new word combination and transfer it, as well as the player, to the "Favorites" screen.

After establishing a list of  words that would be chosen at random, and transplanting the code from the PicoBoard cartridge, the next step turned out to be the biggest: finding a way to save these words to memory, so the player would have a persistent scoreboard every-time the game was loaded.  As the Pico-8 console didn't save strings directly and relied on 4-byte numbers to be stored in specific addressed, I had to try to find some way to encode and decode the words that the players would try to save.

Working in 1 hour intervals when trying to solve a programming problem doesn't help much.  After some trial and error as to how to accomplish this, my motivation wore down, and eventually dropped the game altogether and turned back to my mod project.

New Tools


The silliness of this idea hadn't left me completely, however.  I still enjoyed pressing the "shuffle" key in the prototype and trying to come up with new words with what I was given.  Approximately 1 week before the end of the jam, it hit me:  Why can't I just use HTML?  After all, the game is entirely text-driven, and I had a little experience in the language.  Unfortunately, I had never touched Javascript before, but I had the opportunity to try and learn something new.

It took a bit to get the hang of the programming conventions and how HTML and Javascript files reference one another in code, but after a few coding sprints in the morning before work and on my lunch breaks, I was able to get something functioning.  To accomplish what I was really aiming for, however, I needed to do a bit of redesign.

New Design

As I only had a week left, I needed to re-think some of the aspects of the game. A lot of the changes the submitted prototype saw included added features that HTML coding made easy.  For example, adding a simple "tip" below the word submission field to encourage players to vocally interact with the game seemed like an obvious choice, even if they chose not to use it.

At one point or another, I had the idea to offer up "bonus points" if the player could use their made-up word in a sentence.  It wasn't required, but it proved to add an element of challenge to the game that could produce even more humorous results than the created word itself.


The open-ended interaction of typing in a word and sentence was still essential to the experience, but what really needed to change was the idea of a "favorites" board.  While I technically could have set up a table that utilized HTML's localStorage capabilities, or possibly attempt to set-up my own server to store this data, another idea came to mind: Twitter.  By utilizing hashtags and Twitter's capability to generate "intent" tweets from Javascript, I could use it as a way for players to share their own created words.  Perhaps if the game generated enough attention, the use of likes or retweets could even be used as a sort of "scorekeeper", where the community at large could determine the best made-up words that the players were tweeting out.  Hopefully, by using a unique enough hashtag that could also serve as the game's title,  could keep track of player creations.  Hence, "Gamanteau", a portmanteau of portmanteau and game, became the name.


As an added bonus, adding the capability to tweet out results added a sense of accountability.  The horrific thought had occurred to me that the open-ended nature of player interaction could be a doorway for offensive material to be created and shared.  I briefly attempted to establish a sort of "text-filter" that would reject any submissions that contained language that could be considered harmful or offensive, but I eventually accepted that I lacked the Javascript knowledge to create something that would be robust-enough to avoid misuse.  My hope lied in the idea that twitter users would be holding themselves responsible for what they chose to tweet out to a public audience when playing the game, but I did my best to remove any words from the pre-defined random word list that might present an opportunity for offensive jokes or material.

Results

The game has been up for about 10 days as of now and frankly, there's not much to report.  As it stands, I am the only one on twitter to have used the "gamanteau" hashtag.  At the time of writing, 27 people have at least viewed the game page for Gamanteau, while 7 people have rated it for the Game Off.  I won't find out those ratings for another 10 days.  Given the practically throw-away mentality of the development of this game, and the fact that it's really more of a word game than a "video" game, I can't say I'm too surprised at the lack of activity.


After all though, this is what it can be like to develop games as a hobbyist; I had the opportunity to try something new, something I enjoyed making, and I learned something new in the process.  Had I taken the time to consider my options for tools to use, rather than simply jumping into what felt familiar, I might have had more time to develop this little game into something with a bit more polish.

Even if no one really plays the game as I meant it to be played, I still consider this a win.  There are some incredible games that have been entered into this jam, I highly recommend you head over to itch.io and play some of them!

Next post will probably cover my mod project (I hope to have it done within the next week or so) but don't expect a post until early 2019.

Until then, Happy Holidays!
J-West