--- layout: post title: "LudumDare46 Recap" description: "Recapping the development of [INSERT GAME NAME HERE]" date: 2020-04-17 12:00:00 # Change this to: 2020-04-20 12:00:00 categories: gamedev gamejam team redirect_from: - /post/ebsdjtd9/ - /ebsdjtd9/ --- Over the past weekend I teamed up with @rsninja722, @wm-c, @exvacuum, (insert rest of names here), and our friend Sally to participate in the [LudumDare46](https://ldjam.com/events/ludum-dare/46) 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...

Keep it alivehttps://t.co/APmeEhwjEp #LDJAM pic.twitter.com/bzNYi2zlDG

— Ludum Dare (@ludumdare) April 18, 2020
..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](https://github.com/rsninja722/game.js). On top of that, we also decided to use [SASS](https://sass-lang.com/) for styling, and I designed [a CSS injector](https://github.com/rsninja722/LudumDare46/blob/master/docs/assets/js/injection/cssinjector.js) 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](https://github.com/rsninja722/LudumDare46/tree/0b4a1cdb92e62ff0f9453f6f169f641dd82e8f09)* ## Day 1 ---- Day 1 started with @exvacuum developing a heartrate monitor system for the game: ![Heartrate monitor](/assets/images/ld46-heartrate.png) *Demo image showing off his algorithm* His progress was documented [on his YouTube channel](https://www.youtube.com/watch?v=oqcbO8x0evY). 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](https://howlerjs.com/). I streamed this rewrite [on Twitch](https://www.twitch.tv/videos/595864066). The Howler rewrite was very painless, and made a much nicer interface for playing audio assets. ```javascript // 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 (don't mind the spelling mistake): ![Settings menu](/assets/images/ld46-settings-screen.png) *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](/assets/images/ld46-hud-v1.png) *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](/assets/images/ld46-world-assets-v1.png) *The game with basic world assets loaded* ## Day 2 ---- ## Day 3 ---- ## The Game