Hunt The Wumpus : A Tale of Twenty Caverns
One particularly snowy start to 2013, at the end of January, myself and friend Kev made our way to Edinburgh University for weekend's Game Jam event.
We'd joined forces before during Game Jam events and worked together before at the same company, and felt confident about doing another 48hr stint.
We'd been discussing possible game ideas prior to the event and after the initial keynote and introductions, the theme of 'Heartbeat' was revealed as the host played an audio file. We quickly considered that a "Hunt The Wumpus" remake would be ideal, with the heartbeat sound effect being the beat of the monster heart which you'd hear through the headphones if you got close.
Hunt The Wumpus is an early computer game (1972), originally developed as a text-based game by Gregory Yob. In the original game, the map consists of about twenty rooms with each room connecting to three others, arranged like the points of a dodecohedron or the faces of an icosahedron. Hazards to avoid in a room from the original game were bottomless pits, bats, and the Wumpus.
Because the theme was the sound of the heartbeat, and Hunt The Wumpus was all about figuring out which room contained the monster or a bottomless pit without actually entering it, we decided sound should play a major part of the game. The heartbeat would get louder (and faster) the closer the player got to the Wumpus.
2013's Global Game Jam diversifiers piqued our interest. We believed that multiplayer instantly made a game more fun - as proved with our 2011 'Zombies in mah house' game - and there was a diversifier called "More the Merrier" asking for competitive or cooperative multiplayer. We decided not to limit ourselves to couple or handful or players on a LAN but instead really push the boat out this time. Let's have players from anywhere compete to be the one to find the Wumpus first, with a kills-to-death ratio score table similar to popular FPS games.
Another diversifier or modifier that caught our attention was one called 'True Colours', where the graphics palette could only be a basic selection of 16 colours. Limits when under tight deadlines are good!
In particular - we realised we could REALLY focus on the sound in the game by making this a text-only game and positional audio experience. You'd have to listen to the environment and build up a picture of it in your head - what was to the left or right of you - if the hearbeat was louder by moving in a particular direction.
On the Friday of the jam, the total number of people in the team that could turn up so far was simply the two of us. In previous game jams we'd had more people and burnt a lot of hours working on graphics, shaders and effects, so we decided this time to drop all that and focus on the gameplay and environment.
Kev wanted to try writing the server code that we run on any host (not just the University LAN) and write the server in NodeJS. Game Jams are also about experimenting and learning new things, as well as having fun!
I said I'd focus on the client side - 16-colour full screen text-based renderer handling positional sound support, player input and network connections.
Every Friday evening in a game jam is usually spent forming teams, brainstorming and designing.
I showed Kev the keynote speech from 2012 that he had missed the year before - where John Romero and Brenda Garno-Brathwaite (now Romero) talk about making the mistake of being too ambitious. Simple rule of thumb - write up your wishlist and immediately throw two-thirds of that in the bucket - you won't have time.
Skip to 2:36
So that's what we did. We threw in the bin and simplified most of what we'd already written up:
- Chat betwen players was simply dropped
- Bats (from the 1972 original) were dropped
- Pits (from the original) were also dropped. Reasoning is that people not familiar with the original would have a steep learning curve with more traps. Plus more traps means more coding.
- Network synchronisation issues, latency, prediction stuff all thrown in the bin - we simplified input to turn based (more on that later)
- Server auto-discovery code we'd tried before - dropped. Just enter the server IP.
- 20-rooms connected over a dodecohedron was a bit of extra work compared to an 8x8 grid with all rooms connected to their neighbours. That's a 2-dimensional array and this is a game jam.
Without a whiteboard, we wrote up our main goals on some notebooks and set about working.
Before midnight on the first day, when most other teams in the Edinburgh Uni site were still brainstorming what kind of game to make, we had server and client messages bouncing across the network between our Linux laptops, and 'Hunt The Wumpus: Global Edition' in the title bar. We knew where we were heading!
Having spent a bit of a rough night either asleep at the desks or on chairs, on the full development day we were joined on-site by friend and also previous colleague Martyn.
Martyn (Java developer by trade) admitted to us he wasn't a games programmer but keen to see what the jam was all about and help in any way he could. He slotted perfectly into the role of game designer, tested and - we joked later - Mr. Motivator. He'd regularly find Kev or myself completely absorbed in a random task that we'd found cool and would ask "Ok guys, but - can we shoot the monster yet?" or "can we win yet?". These types of questions usually resulted in mutterings of "ah.. hang on.. gimme a minute.." from both sides, but REALLY helped focus our attention on the basics.
We were also joined remotely for a while by Callum (again, friend and previous colleague) who set up a server remotely for us to test game communication out over the internet and back.
It worked well, tiny network packets and turn-based game keeping thing simple, but people were stalled until everyone had (in order) put in their moves to be evaluated. There was later a grace period added for someone that appeared to be AFK. The code was adjusted so that people could submit their 'moves' or actions whenever - simultaneously - and play progressed simply when all necessary moves had been received. This made turns progress quickly and remove the feeling of it even being turn-based at all.
Saturday night was rough. Martyn's car was locked up by Edinburgh car parking company because it was very very AM in the morning, and the sleeping conditions were taking their toll, particularly on Kev who had turned a shade of 'off-grey'.
The Edinburgh Uni building we were in felt and looked more like a rickety old barn, with power cables dragged up through the windows (ajar) and snow outside.
My body seemed to be able to survive rather well on little sleep, but Kev's - not so much. He made a makeshift bed out of old chairs but couldn't really get to sleep and sat up eventually looking like the reanimated undead around 7am. There was an element of genuine worry from both of us, and we made a note to not 'rough it' overnight again.
While he had tried to sleep through the night, I'd taken the opportunity to dual-wield, working on both our laptops at the same time, tweaking the server or client code as appropriate to complete features or fix bugs. It didn't matter that I hadn't used nodeJS before or that it was 3am and I was tired - there was a game to be completed.
I managed to sleep a little myself, finally, at the same chair at the same desk, in a sitting position with my arms cradling the closed laptop like some kind of awful pillow, next to another team's artist beside me trying to catch 40 winks in the same way.
I wouldn't recommend this - at all - even if the site is open for the full 48 hrs. Go get some proper rest somewhere comfy. Problems that seem insurmountable when exhausted are usually very easy to solve even after just a basic 4-5 hrs sleep. Aim for the "Well-Rested" perk during a jam - your code will thank you for it.
When we both finally stirred around 7am, Kev was both surprised by my progress and still barely human so we went to fetch some breakfast and coffee.
We talked about how most actions in-game were asking the user to type cardinal compass point directions like N-O-R-T-H or 'S-H-O-O-T' so made a note to be able to press arrow keys, and add some controller support for quick movements.
We also tested out the server by connecting via telnet and discovered that with a little tweak it worked a treat.
Sundays are never long days at Game Jams. Submissions to the GGJ site have to be made and then around 3pm local time, demoing should be done and judging takes place.
We completed nearly everything we had left on our todo lists and tested it out to ensure it was pretty solid and - it was great fun. There's something extra about having the human element that you didn't program - you can't foresee or predict an opponent's moves when you didn't create their rules or behaviours.
This time around there were a decent number of people from the games industry in to see what Game Jams were all about and perform the judging of the local creations.
Rockstar North folks came over to see what Kev, Martyn and I (on site) had created in 48hrs. Initially we got a somewhat expected response: "What? Multiplayer across the internet? Seriously?"
Once the headphones were on and they started playing we got a brilliant and entirely different response - the game was tense! The music (slowed down) was suitably creepy without sounding too much like a horror movie. The 'positional' audio - admittedly mostly panning with some lowered pitch to simulate 'behind you' - worked well - some people jumped in their seats and physically leant to one side when they were aware of the Wumpus to the side of them.
- One judge tore the headphones off her head and said "I can't - it freaks me out!"
- Another: "This is great - it's a text adventure - there are no graphics, and it's still scary!"
- Third judge commented that the concentration level goes right up when playing, as you're so focussed on listening to the sounds and building up a mental map of what's where in your head. "In fact, you could probably play this blind!", closed his eyes and then proceeded to hunt down the wumpus with the headphones on and his eyes shut. "If there's a diversifier relating to accessibility - use it!"
It made us smile (like it always does) when a guy from Rockstar (having just visited a couple of other team's tables) sat down next to us and said "So you guys are using Unity too?"
"No, no engine - purely a Java front end and NodeJS on the server"
Dumbfounded silence. (server? Java? NodeJS?) "Alright when you sat down to start did you open an existing project or use some framework?"
"No - " I started. Kev laughed and completed the sentence: "He clicked 'New Java Project' in Netbeans and I opened gedit (like notepad) in Ubuntu!"
"Aww man! You guys are hardcore!" (no disagreement from our side)
One month post-jam when people have had time to recover and feel normal again, a "Play Party" is arranged for anyone from any nearby local sites to attend and show off their games, play others and generally have fun.
This February session was the first Game Jam Play Party we attended.
Because it was in person and internet connectivity in the basement of a pub was going to be non-existent, we stuffed as many laptops, mice, controllers, network gear and ethernet cable as we could into a suitcase with a dodgy wheel and a couple of rucksacks and brought it along, setting up in Glasgow's "Admiral Bar".
Nestled between the laptops and the blinking lights of the network switches were pints of beer, untouched as people gamed instead, trying to best each other and appear top of the Wumpus scoreboard.
We took to the stage later to talk a little about the game and seemed to have the attention of the room - I remember seeing some folks from Bafta in the crowd - they were watching too and had been playing the game.
During the evening our tables were heaving with people crowding over others with pints of lager asking questions about how it was made and urging if they could have a go next.
There were even mini-competitions going on between players who later compared how many wumpus kills they'd achieved and two very passionate guys that were intent on making sure they simply eliminated each other first.
Kev and I looked at each other from opposite sides of the undrunk-pint strewn gaming table and just smiled and nodded - this was a fun game!
This event in May 2013 was an open invite for all Scottish game jam teams to turn up and showcase work alongside some other Bafta-nominated first-timers (literally some people's "first game ever")
There was a good hub to set up Wumpus in, and enough space to unpack the trusty suitcase and rucksacks and set up the network once more.
The game was also hosted from one of our websites and allowed for connections from all around the globe.
There was even a global leaderboard, and reporting for all scores, concurrent players and global statistics.
The "Hunt The Wumpus: Global Edition" booth was very popular and a lot of people were recommending the 'usual' in their post-jam chat - "why don't you put this on Steam or on the Android Marketplace (now Google Play) or similar.
Kev and I had discussed this though - we made games like this for fun, not for profit. We were certainly put off by some people's monetising ideas - we never wanted to make something containing any pay-to-play or other annoyances.
Quite the opposite - this source was online, on the Global Game Jam website - like all jam submitted games - for others to learn from (including learning what NOT to do).
Share - collaborate - have fun - maybe get a higher score than your friend! That's what game jams are about.
The remote host was fun while it lasted but the quick implementation racked up a very large AWS bill in a very short space of time due to the heavy I/O costs (ironically the stats and reporting bit, not the game network traffic itself).