LudumDare46 Recap

Recapping the development of Micromanaged Mike

2020-04-20 gamedev gamejam team

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.

..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:

Heartrate monitor

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:

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 HUD

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.

World Mockup

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:

Background

The game’s new background

HUD

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.

Game screenshot

Final game screenshot



Thank you for reading this post. If you enjoyed the content, and want to let me know, or want to ask any questions, please contact me via one of the methods listed here. If you would like to be notified about future posts, feel free to load my rss feed into your favorite feed reader, or follow me on Twitter for notifications about my work and future posts.

If you have the time to read some more, I recommend checking out one of the following posts:

Connecting to a Minecraft server over IRC
This post outlines the process of writing a custom IRC server that can bridge between your favorite IRC client, and any Minecraft server
My first mechanical keyboard: The Vortex Core
I recently purchased my first mechanical keyboard, and decided to go "all in" with a 40% layout.
Using Bazel to create Minecraft modpacks
I decided to modernize my system for producing builds of my personal Minecraft modpack using the Bazel buildsystem.


Made with ♥ by Evan Pratten | RSS | API Status