Cover art for Souper market

Game jam postmortem: How joining Paint jam taught me to be messy.

This entire endeavor started because I wanted to challenge myself to complete a game jam by myself. (Check out the completed game here if you’re impatient) That means doing everything by myself: art, code, design, music, promo and testing. I have joined game jams before, but this was a daunting challenge. While browsing Itch.io I found the Paint Jam and it seemed perfect for my first solo jam. The strict art limitation was unforgiving: Only art assets made in Microsoft Paint. While limiting it also turned out to be very liberating!

paint jam logo

Liberation Through Limitation

That might seem paradoxical at first. But it completely makes sense in the context of a game jam. Or any project that needs to get done quickly for that matter. Setting a strict limitation from the start liberated my inner perfectionist and made it much easier to create. It reminded me about this advice from art youtuber Jazza about the fear a blank canvas strikes in many an artist (see clip below)

What even is art

The theme for the paint jam is always an image of a famous artwork. For this jam it was Andy Warhols can of tomato soup. After some brainstorming I found the complete piece of Warhols campell soup cans and this gave me the idea to create a memory game where you select the correct can of soup for a customer from a selection of soups. To create the pop-art feel I grabbed a funky palette with bright contrasting colours and I started brewing INFINITE SOUP.

Infinite soup generation

I used a sort of genetic algorithm to create DNA for my soup cans. The DNA was a series of numbers that indicated many parameters of the soup cans, like the colours, the brand, the flavour and type. This is the Genotype of the soup and in code looks something like this (0,3,15,28,19) where each number changes a different feature of the soup. To make sense of these DNA sequences I wrote two functions. A Construction code and a Mutation code. The construction code takes some Soup DNA and builds the can it represents, this lets me make random cans by randomly selecting values for the 5 genes of the soup can.

Tomato soup by Andy Warhol
Tomato soup as it appears in my game
A cute robot customer orders Number 1 Vegetable soup
A customer shows up and asks for soup.

This random can is used as the order for the customer (as seen above). But random soup can only get us so far. We need some confusing soups that look very much alike so the second piece of code takes the DNA of a can and modifies it slightly. These modified cans are used to confuse the players memory which creates the challenge of the game. As the game progresses more soup options are added to increase the difficulty. If you want to learn more about procedural generation this post by Kate Compton is a good starting point.

In the end the game turned out as a nice showcase of casual procedural generation using genetic algorithms. But the game itself doesn’t stay engaging for too long. I blame the lack of a clear goal (the game is currently just an endless mode). I think some more story elements would also have gone a long way to keep the player interested for longer so they can reach the next cutscene/story section. This would also help bring the game to life a bit more.

Variations of soup

The cans are mutated into confusing lookalikes.

a colourful collection of soups
Eventually the soups start resembling a Warhol-esque art piece

Paint Game Jam Final thoughts

This game jam was a lot of fun. The main lessons from this jam for me are:

  • Its okay to be messy and limitation can be liberating
  • I still love procedural generation <3
  • Keeping the player engaged a bit more is important.
  • Making a game by myself in 48 hours is totally possible!

You can play the game in your browser here. Let me know what you think!

A cute robot that loves soup waves at you
Thank you for reading!