Game Jam Post Mortem - Supply Run
Tags: gamedev, gamejam, showdev, phaser
Published: 2020-09-06 19:06:48

During two weeks I developed a game for the Game Jam, _Kodsnacks Tvåveckorssylt - Fjärde Omgången_. This was the fourth run of quite a small Swedish Game Jam from the community around the podcast _Kodsnack_. One of the core ideas with these jams is: 
>a game jam for busy people

Therefore, it goes over two weeks with the intent that each participant spends about 1-3 hours a day. This is in contrast to some other jams where you e.g. just have 48 hours. The general spirit of the jam is also very casual, making it a really nice experience.

The Game Jam was held in ... the end of May. MAY!?!? That's over three months ago. Time flies in a pandemic I suppose, anyway, about time to get this post published.

## The Theme
The theme for the jam was _isolation/loneliness_. I started off brainstorming ideas with my fiancee. I must say the thinking about different game ideas is my favorite part of every game jam. In the end, I went with an idea inspired by the ongoing pandemic.

## The Game
My submission to this game jam was [_Supply Run_](https://fronkan.itch.io/supplyrun). A game about going to the store in a pandemic. You have to collect everything you need from the store and get out without getting infected. If you are interested in trying the game, it runs directly in the browser on itch: https://fronkan.itch.io/supplyrun.

Now a short Q&A.
> How do I avoid getting infected?

Avoid other people. Unlike in real life, they have a helpful circle around them showing how far away you should be.

> What if I can't? Like if a shopper corners me.

Hope the person you just bumped into wasn't infected ¯\\_(ツ)_/¯

> Where did you find that great music?

Thank you, I made it my self :smile:! This was the first time I actually made sure to have time to create music for the game. Also one of the first times I created music at all. I don't feel it perfectly fits the theme and pace of the game. However, that doesn't really matter, I am really happy with producing even a passable music track for the game.

The core-loop is to avoid getting to close to the other shoppers while getting all pick-ups. While it would have been fun with proper AI for the shoppers, I didn't feel comfortable enough with the tools to take on such a large task. Instead, I opted for a simpler solution where each shopper has a fixed path through the store. The paths are made using splines and at the beginning of the game, how far along the path a shopper starts is randomized. This has the effect of people starting at different positions in the store. Each shopper follows their path until they reach the end of the store, at which point they start back at the entrance where the spline begins. From the player's perspective, it seems like there is a constant flow of people in and out of the store. Finally, each time you start the level some shoppers are randomly selected to be infected.

One of the best moments I had while playing, was when I was cornered in the store. I knew I was screwed and would get inside the infection range of one of the shoppers. The infection circle touches me... and nothing happens. This was the type of experience and feeling I hoped for with the game.

## The Game Engine
I tried out the game engine [Phaser](https://phaser.io/) for the first time. I have been learning some front end development the weeks leading up to the jam and thought it would be a nice challenge. It was at least challenging that much I can tell you :sweat_smile:. 

Phaser seems to have had almost a Python 2 to Python 3 style break when going from version 2 to 3. Hmmm, I see a pattern here. There are a lot of Phaser 2 tutorials and it seemed very hard to apply them in version 3 which I was using.

My other problem with Phaser is probably just a personality issue. I really couldn't find a good model for structuring my program. With some added stress when closing in on the deadline, the code became somewhat of a mess. If you want to give it a look, I published the code in [this github-repo](https://github.com/Fronkan/spelsylt4). I feel like the models of Unity and Löve, engines I used for other jams, have matched my mental model much better. I have recently played a bit with Godot as well, again without the same headache as with Phaser.

I opted for using typescript instead of pure javascript. Before the jam, I set up the build pipeline using webpack. I went with webpack as I at least looked at it before and I found a good tutorial. It was still infuriating to get everything to work and I am glad I got the basic setup working before the jam started.

I probably won't use Phaser a lot in the future. It really felt like I was fighting the engine at times. Also, it wasn't as fun using as other engines I have tried. If you haven't tried [Löve](https://love2d.org/), I really recommend you do. My experience is that creating games in Löve feels fun and easy. What I did like with Phaser, the same as with Löve, is that it feels lightweight. When opening the webpage the Phaser game loads really quickly without a loading screen like with a Unity game.

## Final notes
Creating music was fun and the addition of music and/or sounds really adds to a game. I aim to create music for future game jams, hopefully learning a bit about creating music that fits the theme and pace of the game. In general, I will try to work more with sounds for game jams. I am also really happy with the pixel art for the pick-ups while I am less pleased with the environment, player, and NPCs. In the end, this just came down to not having the time.

Finally, I truly recommend joining game jams. It is a lot of fun especially when there is a good community around it. A special thanks to kodsnack for creating a great community!