Ludum Dare 46: Jamming with friends
Recapping the development of *Micromanaged Mike*Over the past weekend I teamed up with @rsninja722, @wm-c, @exvacuum, @marshmarlow, and our friends Sally and Matt to participate in the LudumDare46 game jam. This post will outline the game development process.
Day 0
Starting at 20:30 Friday night, we all anxiously awaited this jam's theme to be released.
The theme for Ludum Dare 46 is...
— Ludum Dare (@ludumdare) April 18, 2020
Keep it alivehttps://t.co/APmeEhwjEp #LDJAM pic.twitter.com/bzNYi2zlDG
..and so we started.
Day 0 was spend on three tasks:
- Deciding the story for our game
- Allocating tasks
- Building a software framework for the game
We decided to program our game in JavaScript (but not without an argument about types) because that is @rsninja722's primary language, and we can use his JS game engine, game.js. On top of that, we also decided to use SASS for styling, and I designed a CSS injector that allows us to share variables between JS and SASS.
After task allocation, I took on the job of handling sounds and sound loading for the game. I decided to start work on that during day 1, due to homework.
The game's progress at the end of Day 0 can be found at commit 0b4a1cd
Day 1
Day 1 started with @exvacuum developing a heartrate monitor system for the game:
Demo image showing off his algorithm
His progress was documented on his YouTube channel.
I also started out by writing a sound system that uses audio channels to separate sounds. This system pre-caches all sounds while the game loads. Unfortunately, after getting my branch merged into master, I noticed a few bugs:
- When queueing audio, the 2 most recent requests are always ignored
- Some browsers do not allow me to play multiple audio streams at the same time
Due to these issues, I decided to rewrite the audio backend to use Howler.js. I streamed this rewrite on Twitch. The Howler rewrite was very painless, and made a much nicer interface for playing audio assets.
// The old way
globalSoundContext.playSound(globalSoundContext.channels.bgm, soundAssets.debug_ding);
// The new way
soundAssets.debug_ding.play();
This rewrite also added integration with the volume control sliders in the game settings menu:
Audio Settings screen
Later on in the day, a basic HUD was designed to incorporate the game elements. A bug was also discovered that causes Firefox-based clients to not render the background fill. We decided to replace the background fill with an image later.
V1 of the game HUD
While developing the sound backend, and tweaking UI, I added sound assets for heartbeats, and footsteps. World assets were also added, and the walking system was improved.
The game with basic world assets loaded
@wm-c and @rsninja722 also spent time developing the game's tutorial mode.
The game's progress at the end of Day 1 can be found at commit 84d8438
Day 2 & 3
Day 2 started with a new background asset, and a new HUD design:
The game's new background
The game's new HUD
@rsninja722 also got to work on updating the game's collisions based on the new assets, while I added more sounds to the game (again, streaming this process on Twitch).
From then on, development time was just spent tweaking things such as:
- A Chrome sound bug
- A transition bug when moving from the loading screen to tutorial
- Some collision bugs
- Adding a new credits screen
The game's progress at the end of Day 2 can be found at commit b9d758f
The Game
Micromanaged Mike is free to play on @rsninj722's website.
Final game screenshot