GMTK Jam 2023: Discover my Step-by-step Design Process
Follow along as I create an original game in 48 hours
An introduction (Day 1 - 18h37)
I’ve never participated in a game jam. I’ve been making games for over ten years now, so it wasn’t the lack of opportunities or groups; I just never liked the concept of working all day & all night on prototypes that often end up being too bugged & too basic to be interesting.
Today I’m finally trying out. I don’t want to die stupid. I’ve learned a lot about development in the past months, including coding best practices & making realistic estimates, which gives me the confidence I can produce something worthwhile (without working more than twelve hours a day).
I picked the GMTK Jam because its timing fits my schedule perfectly. Indeed, I had decided to entirely dedicate the first half of 2023 to the pre-production of my first commercial indie game, and now that this is behind me, the jam will be a good moment of break before starting publisher pitches (if you want to connect, hit me up!)
This is also the ideal opportunity to write about the behind-the-scenes, as some readers suggested: finally, you’ll get to glimpse how I approach design, what I focus on, the choices I make, the corners I cut. I’m writing this devlog along the way, with editing afterwards for clarity & conciseness, so you can experience the story as it happened.
The theme drops in half an hour, but I’m not in a hurry anyway; I’m going to the restaurant first, that’ll give some time to brainstorm. It’s definitely not going to be a hardcore all-nighter jam, I hate that.
How I picked a concept (Day 1 - 22h52)
I thought about this year’s theme, “Roles Reversed”, during the dinner. Although I entered the jam solo, having a sparring partner to exchange thoughts about the theme was definitely helpful. So, how do you find a good concept?
First, I quickly eliminated meta-ideas (such as “players switching roles with the devs”) and playing uncommon characters (such as “you play a shopkeeper”) because I always fear they turn into gimmicks. Not saying you can’t find neat execution & make fun prototypes, just that they wouldn’t be as enjoyable for me to create for me. And I guess that’s the first lesson: don’t rush on a concept you’re not 100% comfortable with.
Then, my self-imposed challenge became to “reverse roles” during gameplay itself. “Reverse” isn’t the same as “switch”; it implies some adversity, so I wanted to explore a concept where you play … against yourself? The tricky design question with such a setup is: “How do you win?” If you’re playing two avatars, you can lose on purpose with one and win with the other. So, I started to lean towards “coopetition”, where you play two characters with a shared goal but where actions tend to cause problems to the other, thus feeling like you play against yourself.
After these reflections (and the dinner), I started to scratch down ideas of the form it could take. Shooter? Platformer? Given the short deadline and my immoderate love of board games, I settled for a card game: I immediately pictured how the presentation could convey the conflict between the two identities, with cards that have text upside down & the camera switching side every turn.
As for the theme, I had to be extra-smart about it because I can’t make anything but basic art. I first thought of the life/death duality or something along those lines, but it’s a bit overdone. Again, discard the first ideas if you’re not satisfied, better invest more time now than regret later.
While we were discussing initially, there was this idea of alternating between hunter & hunted, and when I thought about it more, it clicked: why not a ‘Jack the Ripper’ theme? I like the Victorian Era, the atmosphere would stand out compared to the usual colourful card games (and other jam entries), and I could use archive pictures for the art.
Since I had this idea of coopetition towards a shared goal, I meshed this theme with Dr Jekyll & Mister Hyde to create a more original & coherent setup: what if Jack the Ripper worked for Scotland Yard during the day and couldn’t help but kill during the night, causing massive problems for his alter ego? This is the definition of a good theme for me: when it reinforces the mechanical foundations and has a great potential of enriching it further (reading the Wikipedia page helped me a lot to find ideas!).
I scribbled a bunch of notes and brainstormed some core mechanics & systems I could implement. The design “document” (more like a page of notes) look messy, and frankly, I barely referred to it afterwards, but it helped me to settle on ideas & organize my thoughts. Not going to explain it all to you now; you’ll get to see it before your eyes in action. I’m going to sleep now, but for you, the story continues in the next paragraph.
Always start with a plan (Day 2 - 8h25)
After a solid breakfast, I’m sitting in front of my computer, ready to code!
Huh, well, actually, I’m going to start with objectives: there’s a clear deadline, and I can easily make a retro-planning of where I should ideally be at what moment.
Being done with the “main tasks” on second day is ambitious, but I prefer this to under-estimating the landing time, aka all the gazillion secondary tasks that accumulate on top of those. It’s a jam, it doesn’t need to be super-polished, but it’s important to make have an MVP (minimum viable product) as early as possible; it makes you realize earlier what the game needs and not just what you thought you could/should implement back during the paper design phase.
I then took some time to break down the tasks into a big hierarchized list, thinking about what I needed for each topic & how to do it. Again, it might be a loss of time for some, but trust me, rational organization helps to be laser-focused and remember everything in the heat of the moment. By the way, ticking boxes is also a proven psychological trick to 1/keep the motivation, 2/notice when things are slowing down, and 3/take shortcuts because you want to tick boxes faster. It just works.
Slow foundations & basic game feel (Day 2 - 13h32)
For the remainder of the morning, I started a blank Unreal Engine 5 project and worked on the basics: camera & controls. This isn’t the ideal engine for a jam, but it’s the one I know best; again, you’ve got to be comfortable to be productive; this isn’t the time to learn new techniques.
Establishing the foundations took more time than I anticipated. It’s, by definition, the kind of task you perform once per project and somewhat forget about until the next. Here’s what I had going into lunch: a board with two sides, cards that can spawn in hand & on the table, and the ability to move them around (within boundaries).
At this stage, the most important is the game feel: with limited time, I focused on the minimum amount of details I could implement quickly for the biggest impact. Firstly, changing of cursor/colour on hover is a must-have. It immediately makes the game more intuitive too. Secondly, smooth movements go a long way: for that, I used “springs”, some functions that give this sort of elasticity. Cards follow the cursor without getting stuck to it, and they can naturally leave/join the hand.
Cheap UI art & tricky interactions (Day 2 - 20h29)
During the afternoon, I deviated slightly from my plan as I figured out that making the card art after the UX functionality would be more work than doing a decent v1 right away.
So, what’s the technique for cheap UI when you’re not an artist?
My first idea was to use paint brushes & splashes to make everything looks “organic”; plain colours & geometric shapes would ruin the atmosphere I was going for. I found a free asset pack on opengameart.com, selected the best-looking ones and imported them into the engine.
Secondly, a good font goes a long way: again, there are lots of free ones on the internet, it just takes a bit of searching to get them. The first I picked fitted the theme, but its “shaky handwritten” look was unreadable, so I also grabbed an “old newspaper style” one.
Finally, if you’re not an artist, use an existing colour palette. I picked one from the website Lopsec with a good-looking yellow/blue contrast. Using fewer & more coherent colours is a massive shortcut to make your game look better early on.
After that, I continued working on the core mechanics, mainly the card drawing at the beginning of the round. It doesn’t look like it, but spreading them in hand & repositioning them on-demand took was not as straightforward as I thought. Maybe I’ll regret it and could’ve taken shortcuts to implement this in one less hour; we’ll see.
What I know for sure is that I’m late on my schedule: I won’t be able to make much art & sound design, but I can still finish the main features of alpha & turn this interactive prototype into a game with rules.
Day 2 - 23h16 - Taking design shortcuts
Back from dinner, I had another three hours to spend on the prototype before my energy runs out, so even if there was no playable content, I wanted at least to have all the systems ready for it.
While eating, I had a clutch moment and realized I could re-use my hard work on the hand to make a design that’s both simpler & more interesting for the central “encounter” cards. My original idea was still loose. It involved stacking cards together & real-time interactions, just like Stacklands, which I already covered in a previous issue. All of this meant implementing many new mechanics, and I couldn’t tell if that work was worthy.
So, instead, I figured the central cards should also be in a line (re-using the same neat auto-arrange code). Now, the “action cards” you’ve got in hand represent the possibilities, and you can spend them on an encounter card to affect the line. The strategic challenge appears more clearly, and the content starts to design by itself magically: you’d move encounter cards around, flip & discard them to trigger various effects. It’s another reason you pick a genre you’re comfortable with: the inspirations flood in naturally (from board games, in my case).
After implementing that & before going to bed, my last task was to prepare all the economic loops & HUD that goes with it. Again, it’s relatively effortless since those are simple & similar mechanics: you gain & spend points doing stuff, which triggers effects. Action cards cost “time points”, and you only have eight each turn. Suspicion augments or diminishes when performing certain actions, and it triggers a loss if you reach the max. Same (but inverted) for the Duty, which represents how the inspector gets fired if it reaches zero.
Here’s the result at the end of Day 2. You may notice how using the downloaded splash textures & the fonts go a long way to make it feel like a decent UI, even though it’s just text, I would never have time to make cool-looking filling bars/circles anyway.
Timeboxing art (Day 3 - 10h00)
This morning, I decided to kick off with a one-hour burst entirely dedicated to the visuals (it turned into 1h30), where I do the maximum I can and then move on. This powerful technique called “timeboxing” is an efficient way to force yourself to focus on the most important aspects and those with the best efforts/outcome ratio.
The scene I have in mind is simple: a wet paved street with changing lighting between night & day. Since I’m not an expert, it took slightly more time than it should have to nail down, but here’s how I did it:
Grabbed a texture and slapped it on a plane, without even the “sidewalks” model I thought about at first. Looks a bit weird, but who’s going to notice?
Downloaded a free lamppost 3D model, added a dynamic spotlight & instanced it a bunch of times on the side
Followed a tutorial to create a mist-like particle system
Followed another tutorial to have a puddle/wet look on the floor material using vertex painting
Coded the function to smoothly change the parameters of the sunlight between low-intensity blue & high-intensity orange-ish. I would have preferred a rainy atmosphere during the day, but no time for that, I gotta get back to gameplay!
Designing & scripting content (Day 3 - 13h05 )
So after the art, I opened a big spreadsheet & started to design a list of cards, their effects & how they interact with one another. I went for the smallest amount of cards that would still feel like a complete game, providing a good variety of interactions & delivering on the thematic aspect (I couldn’t make a Jack the Ripper game without the Whitechapel letters, for instance!).
The first draft was quick to make, less than 45 minutes, since the figures are purely based on gut feeling. Normally, I’d do a bunch of math formulas to spot holes in the economic balancing, but with this little content, I should be able to tweak it fast through playtesting. My goal with this table is, once again, to be organized so I can implement the cards quickly without forgetting anything.
Here, I took another risky shortcut. I’ve written down card descriptions manually rather than coding functions to generate them automatically based on the scripted action. Manual approach is faster initially when the content is slim but requires more maintenance while making iterations. Given the deadline, I wasn’t going to make many changes anyway.
What’s coming next for this last afternoon? Here’s my plan:
Test & debug the cards’ interactions
Add a winning menu & a main menu
Add sound
Add art in the background of encounter cards
When this is done, hopefully around 15h30, I’ll package this V1 & upload the build to itch.io, work on the page & submit it to the jam. Even if things go wrong, I’ll have a backup “shipped although not great” build, at the very least. With the remaining time, I’ll continue testing & iterating on whatever feels more important, then export a v2 close to the deadline. Hope this works out; fingers crossed!
We’re done! (Day 3 - 19h05)
My plan did work, except it was a bit ambitious: the page went live at 16h30, however, I skipped the card art part since finding & integrating sound effects took longer than anticipated.
So, after the page, I scrambled to find vintage illustrations quickly, ran them through Photoshop to harmonize the colours a bit & put them as card backgrounds. I’m glad I did because it looks much better than plain backgrounds.
And finally, I used the remaining two hours to test, update the balance & add some more feedback. I figured the suspicion meter was too easy to keep low, so I added another rule to increase it by +1 every turn, which somewhat fixed it. Sometimes, the simplest solutions are the best, I could have revised all the other cards, but a new rule was the correct choice here.
Here’s the walkthrough of the demo where I -almost- win at the end:
However, this rule (and the others) made the game harder to understand; I wish I had more time for pop-ups, tutorials & better feedback. For instance, the loss screen appears as soon as you lose, with no delay to show you which counter is at fault: normally, good feedback requires proper preparation & flow, as I explained here. To compensate, I took to write detailed instructions on the game’s page (which we’re allowed to update after the deadline). I’m unsure if players read those, but it’s better than nothing.
And now, I need are two things: stepping outside & getting some rest. Although the jam was exciting, and I’m happy with the result, it was intense for the eyes, the body & the mind. I feel washed even if I took proper time to eat & sleep. I’ve never been a fan of working this intensely, I’ll never be, but at last, I can say I’ve participated in a game jam.
Epilogue (Day 4 & beyond)
What happened the next day? I checked the jam page to realize I had zero comments & reviews, which is somewhat normal for a jam this big. So I updated the page again, made a better miniature to catch people’s attention and gifs to showcase the gameplay. Yes, you also need to do basic marketing in a jam.
I also tested many games to improve my “karma”, but I’m not sure it worked: with this much competition, if your game doesn’t take off early with strong hooks & visuals, you get buried by the algorithm. I never expected to rank too high anyway with a tactical card game made in solo, with no humour or catchy character.
However, I intend to enrich & polish the game once the rating period is over; there’s a lot I have to explore with this concept, so please have a look & share your honest feedback; it’ll help tremendously. Thanks!
https://sentrydown.itch.io/jack-ripper-at-night
Thanks for reading all the way to the end! This is issue isn’t like the others, it’s more personal, more concrete, what did you think of it? Your comments always help to improve!
Salut, c'était hyper intéressant franchement ! Je savais pas que tu travaillais sur Unreal Engine, je trouve le concept super cool, et je trouve que l'habillage visuel est déjà giga clean pour le peu de temps alloué, j'ai appris ce qu'était le timeboxing aussi. J'ai téléchargé le jeu, je te dirai ce que j'en pense, gg en tout cas