The 2023 GMTK Game Jam is in the books, and this year, five members of the GameMaker team - Alice Casagrande Moretti, Lucy Roddam, Neve O'Neill, Patrick Roche and Scott Dunbar - came together to create their own entry; ‘Yay! It’s The End Times, Lads’.
In this game jam log, Patrick Roche explains how the idea of an anti-platformer came to be, the challenges of a two-day jam, and the late Github hiccup that threatened the project at the midnight hour.
I'm Patrick Roche, and I'm an Associate Producer on GameMaker on Content. I'm also pushing to get a team together for the 2023 GMTK Game Jam; these are some of my notes on how putting this team together has gone, and how the game jam itself has gone.
They're written after each big milestone in the process and they're being written at the time, so there's very little foresight in what's going to happen next available to me right now!
The thought of getting involved in the GMTK Jam first bubbled up at the start of the year. The company missed the chance to do the Global Game Jam, which really upset me since working on game jams is something that we should lean towards.
Game jams help you 'dog food' your tools, help people learn more about the game development process, and (in this case) help people see a little more about who we are at GameMaker. In a company that's as big and spread out as GameMaker, it can be pretty hard to get an idea rolling without getting buy-in from different people and departments, though.
The GMTK Jam is - basically - in the perfect timespot for us. July is a 'quiet' (note the relative term!) month for GameMaker, since we're not doing a July release. We're doing a lot of work in the background on the next release, but there's no crush for feature lock or something which would eat up time.
It's been pretty easy to get the go-ahead from people; concerns about deadlines (all that 'lot of work' I mentioned above), HR wanting people to take their time off, building a team and... actually doing it has been an exciting and fun challenge. Keeping it secret from people until we start recruiting for it has been really hard because it's going to be super cool.
Now that everyone's on board, the question is who's going to actually be able to help. It's the middle of summer and people are on holiday but... we're a month out at time of writing. Hopefully people can set aside some time with four (or... three, realistically) weeks notice.
But, hey, I've managed to get people time off in lieu (at managers consent) from HR, so it's not like people are losing their weekends entirely.
I'm going to post the announcement and recruitment tomorrow, so hopefully I'll update this again with reaction and first team members.
Posted the recruitment message to our internal slack. Really happy with the turnout in the channel! If we do another jam in the future (hope so!), it'll maybe need a little more lead-in to make sure people have a runway to plan around it. I feel like I left it with short notice!
It's the week of the jam and I've only just clicked the sign up button on the website. That would have been embarrassing to miss!
We have a team of people that are available for the jam and it's a really good group. Some dedicated artists, some dedicated programmers, some new participants, and I’d say about half of the group have never done a game jam before.
The GMTK 2023 Game Jam theme - 'Roles Reversed'
We’re a full fifteen minutes away from the Jam theme being announced. We have a github repo, a Discord server for faster and easier chatting than our corporate Slack channel, and we have a few people that are hanging around the office for when it all kicks off. I’m, honestly, feeling pretty nervous about the whole thing!
One of the rules that we’ve given ourselves is no working outside of normal hours. Start work at 9, finish at 5.30 and take time for lunch. Try and keep it relaxed, try and keep it chilled. Let’s see how that holds up.
The team that’s in the office in Dundee has been wrangled into the Meeting Room in the office.
‘It feels weirdly like being in school after hours…’
With eight minutes to go before the theme is announced, we’re taking account of the asset bundles that are available and thinking about what could be useful. So far, ‘anything’ seems to be winning out.
Looking at the chat on YouTube and being reminded why I don’t look at the chat on YouTube. The announcement video begins to play with the one minute countdown on YouTube and it’s very intense! The video itself gets right to the point, and the theme is ‘Role Reversal’. There’s an immediate silence as the first thoughts bubble up.
‘Instead of controlling the character, you’re doing something around them? I don’t know what that would involve. Probably a lot of work?’
‘What about a platformer where you have to tilt the level to get the character to the end goal?’
‘What about something like Pac-Man where you have to control all four ghosts at the same time? Like, not multiplayer, but more like QWOP but with ghosts.’
‘I’m going to veto multiplayer right now.’
‘You’re the boss and you’ve got to destroy the heroic parties that come to you?’
‘Destroying the environment before the players get to you? A Godzilla simulator.’
‘What about an anti-platformer, where instead of getting to the exit you have to get to the spike trap?’
‘Something where you play the big bad evil guy?’
‘The loss adjuster on a platformer game after the hero has been through the level? Mario meets Obra Dinn.’
‘Make a level that can’t be completed by an AI character. Eventually you get so many tools that it breaks out of the game and into GameMaker itself?’
‘You have to find the most safety hazards you can. As you lose the level, it resets and gets harder to fail at. There’s a barrier in the way, or the switch to turn on the death trap is on the ceiling.’
‘During the game your controls could reverse? Things are standard but all of a sudden things reverse. Sounds like a nightmare to play but I enjoy torturing players.’
‘Could we cheat and give people GameMaker? The ultimate role reversal! You wanted to play a game, but roles are reversed!’
After an initial surge of ideas and throwing things at a wall to see what would stick, we narrowed it down to the Pac-Man with the player being all four ghosts and the anti-platformer, mixed with the safety hazard and evolving playspace.
From a programming point of view, this is actually pretty straightforward; a character with abilities that works as a platformer character, different rooms based off a central room that just adds different mechanics.
One of the big concerns that it’s left me with is that the context of it: a creature throwing themselves into a deathtrap could be a little dark. It took a fair bit of thinking and going back and forth on, but during the night, I had a bit of a brainwave that’s been picked up and run with by the rest of the team.
What if you play as an imp or a goblin, and your goal is to sacrifice yourself to help the Bad Guy gain enough power to destroy the world?
‘Imps crawl from the depths of the pit, and they yearn to return to it. They are never truly born, and never truly die.
‘Recently, though, we have seen the machinations of Those Above turn towards our plans! Something about them objecting to the end of all things.
‘Go on, then! Return to the pit from whence you came!’
A producer, assuming the ‘decision making’ pose.
JoCat’s Goblin characters started to become a touchstone for the art direction.
Thanks, JoCat! (https://twitter.com/JoCat105)
‘Those are adorable!’
Which led us to this page of concept art from Lucy Roddam.
smol. lil guy. so tiny.
And in the top left, there’s something that was pretty innocuous but has since become another touchstone for the project:
‘Yay, it’s the end times lads!
‘Your Goblin came from the Pit. It wants to be Sacrificed. Forces greater than you wish to stop that, so they move the pit, block you from escaping, and eventually start attacking you. Roles reversed as hunting for a way to sacrifice your Goblin properly, avoiding the obviously Good exit.
‘Eventually, the Exit will begin to hunt you down.’
Some of the gameplay objects
A ‘happy apocalypse’ vibe. Classic Dundonian game of simple, fun and a little bit dark if you stop and think about it for too long!
The day started off wonderfully as Kevin, one of our Producers, arrived with a box of donuts. He seemed to like the concept and laughed which makes me think that we’ve got our tone problem sorted.
Overnight, Scott and Lucy have produced some brilliant work. We have a platform character with a full moveset! Our morning meeting resulted in nailing down the mechanics, the UI flow, the level flow and the tutorialisation. One of the fun twists from last night that didn’t get brought up in prior entries was the fact that, eventually, the level exit is going to start to chase you.
We’re trying to work out what happens if the player gets caught. Do they restart the whole game? Do they go ‘up’ one level and have to redo it and the level they failed on? Do we just restart them where they were?
Neve, our UX designer, cannot be stopped and they will make flowcharts.
Never underestimate the power of a good flowchart. Takes five minutes to make, saves hours of misunderstandings.
Having things written out like this is really, really important and helps clarify things. The vague hand motions made during meetings towards ‘he falls into a pit’ have been crystalised and made obvious to everyone.
At about midday, I made my first major git commit, which broke everything! I’m a real game dev now!
This is going to become a theme during the course of the day, and one of the really good features of a game jam for us at GameMaker is going to surface. We do a lot of testing of things in isolation; a lot of checking on things by ourselves but don’t do as much ‘using the product in anger’ as we should.
This jam is already surfacing some quality of life fixes and bugs that we’d like to get fixed.
We ran into our first gameplay bug of the jam, where the character will teleport to the ground if you spam jump while stuck in a corner and between two walls. There’s a code fix incoming, but a level design fix could just be ‘don’t make that specific shape!’.
Turns out he just needed a maximum possible speed value to stop this from happening, so now he can’t be an infinitely fast wee lad.
We’ve had our Bao Bun-based lunch, and we’re starting to see the first parts really coming together. So far we’ve gone from this:
Perfect, no notes.
Not pictured; the multiple effects layers adding heat haze and drifting embers.
And our character has gone from this:
Please do not ask to see the animation frame for the Butt Stomp move.
Every imp in the game is a different imp. There are millions of them. This is canon.
We’ve all spent some time with the character and a few changes are getting made. First of all, we know for sure it’s an imp now, not a goblin. He’s also got a T-shirt with a picture of a T-shirt on it, so that way you know he’s stylish.
We’ve reduced its jump height a little bit, added a counter before it detaches from walls (this was checked into the game as the ‘MeatSlide timer’ which… just generates more bad mental images than I’m happy about!), made some surfaces non-climbable, and added more drag/slowdown when coming to a halt to give it a slightly nicer feel.
There’s a slight trail behind him as he uses his dash move now, too.
He interacts with objects by using his butt stomp attack. No, we will not be accepting questions at this time.
I then spent ten minutes recording sound effects for the imp and the Dark Overlord. The rough versions of these will never escape into the universe, and you’ll only hear edited ones. I gargled a lot of water to make the death-sounds, though!
Towards the end of the day, Lucy logged all the animations for the main character and started to work on some of the gameplay elements. A question had come up around the concept of the door chasing after the player and… there just wasn’t a way that we could make it look like something other than a static door that had started to chase after you.
After some discussion, we’ve decided on a heavenly light chasing down the player, picking them up and taking them to the exit door.
4pm wrap up meeting for the day to check how people are feeling about the project:
‘Yeah! Good, alright!’
Everyone feels really good about things and are engaged really deeply in their work. There are some sequences that need to be animated fully and fleshed out.
One of the things that we’re encountering is how often texture pages for fonts are needing to be regenerated so, instead, we’ve opted to switch out text rendering for writing sprites with text and using them instead. Probably not extensible for a large-sized project, but good for what we want.
Then our UI/UX designer said something very irresponsible.
‘Knock on wood, but I’m surprised by how well this is going.’
‘All the stuff that usually trips me up in a game jam, we’ve blasted past. This is looking good. This is just about getting things up and running now. I can’t imagine anything going wrong from here.’
‘Oh god, why would you say that!’
‘Content complete by 4 or 5pm tomorrow, get it on the site and submit it by 5.30.’
In the office by 9am and checking in some changes to the introduction, the logo, and front end. Neve has gotten started on implementing the audio that they spent yesterday sourcing.
Audio Sourcing and Asset List. Makes my producer's brain happy.
9.30 Team Meeting.
Scott, our lead coder, said: ‘I’m pretty much done with all the mechanical stuff’ and that he was moving on to tweaks to the feeling of the game. He then wanted to move onto level design.
Everyone’s taking turns at doing different things. Alice, our front end and menu programmer, was going about making menus more animated.
We wanted to get people to work until 2pm and then switch everyone over to making levels and generating more content. People seemed on board, but things didn’t quite work out like that thanks to a bug in the software that we’ve uncovered.
By 10.30, the imp had all the animations that it needed and we were building levels. Levels one to three were there to teach the player about moving, jumping, wall jumping, and the butt-stomp move, and things were going great - until we realised that Github was starting to squelch other people’s changes.
This limited the number of people that could work on the project at any time if they were working in the same area as other users. That and my lack of experience with Git wasn’t helping…
Lucy was now at the point of making extra animations that have ended up on our work Slack channel. More audio hookups, getting the itch.io page up, running and looking pretty.
Eventually, we realised that we were just going to have to build levels in separate clients, export them as local packages, and re-import them on a single machine to get past the Git confusion. This slowed us down pretty hard and was really annoying!
By 1.30 (our post-lunch meeting!), we were talking about things being ‘pretty much done.’ Everyone felt great! It was amazing how chilled out and relaxed things were. Levels came in on individual packages, and were doctored to make sure everything had the same visual language, the same collision settings, and assets. The order was changed to make sure there was a progression in difficulty.
‘I think it’s pretty cool that we’re a couple of hours from the finishing line and we’re looking at it wondering what we can add, not what we’ve left out.’
‘How do we make level transitions, rather than ‘why is this on fire?’’
‘I don’t feel the need to mess with anything at its core.’
‘One frame of animation for the wall slide motion, and the key needs its new sprite.’
Not long after that, we had a game you could play from beginning to end.
Oh boy, we might have a game on our hands!
The game was really coming together and, although we were facing some pretty serious challenges with resource ordering, and github not wanting to merge new assets into the project, people were feeling really very positive. Once the audio came in entirely (very proud of my voice work and the imp sound effects), the game started to feel much more finished.
It’s always vitally important to maintain a proper candy-to-mouth size ratio.
Some final noodling with gameplay elements, final sprite updates, and all of a sudden we had a game on our hands! Two days of working from 9 to 5 with a team of five people of all different disciplines and skill levels, and we had something that looked, sounded and played great!
Of course, there’s always stuff you cut out, stuff you miss, but that’s kind of the nature of a game jam. Another two people, another two days, and you’d get more.
I think part of the ethos of a game jam is one of my favorite bits in software development; eventually, you’ve gotta get it out the door. It’s a really, really important learning experience for people wanting to make games in the future.
The game got packaged, uploaded, and it was then that we all realised just how much tension had bubbled up in the last hour of poking at things and getting it all ready for its debut. I’ve worked on games ranging from three person teams to one thousand person projects, and the feeling’s the same every time. It’s great how this jam managed to make it feel like that.
The wrap up meeting at 5.20 was great.
‘We did it! We made a game in, like, two working days! A whole-ass game in two working days.’
‘Yeah. That was really good.’
‘I feel very proud of the achievement that the team’s been able to pull together over the two days that we had. I think we did really well.’
‘I think it is a testament to the intent that GameMaker is accessible that we’ve done this in such a short time, and we know that there’s things to improve on.’
‘These game jams always tell me how much we should be making games in-house here. Using the tools. It throws up issues we just don’t find in isolation.’
‘I’m feeling kind of hungry.’
‘Since we finished early, does the company take us for ice cream?’
‘By company do you mean me?’
Well, I did promise…
We’ve actually had a couple of reviews from people that aren’t directly involved with its creation. A couple of people were confused about some of the mechanics in it, but mostly positive and full of praise for the presentation and style of it.
It feels like one of those things where if you had another day, or another person, or another whatever, things would be slightly different. We’re really glad that we made the choice to not over-work or do anything that felt like it was ‘too much’.
There’s other stuff we could have done, and I’m still curious about that ‘Pac-Man but you’re all four ghosts’ game idea, but overall I’m really, really happy with how things have turned out.
We trawled through a lot of the GameMaker asset bundles that are freely available to everyone, and pulled some visuals and audio from them. We’ve exposed some of the weaknesses and indulged in some of the strengths of GameMaker.
Whatever nerves I had about being able to contribute to the project at the start were allayed when it came down to it; if you can add to a project, if you can contribute in any way, you should. Go and find a game jam and take part!
The fizzy feeling of ‘oh, man, we’re releasing something into the world that people will get to play!’ is the same, whether it’s for a huge AAA game or something you made over a weekend with some friends.
Go make some games, and…
Stay Impish, you beautiful, irrepressible miracles, you.