This is a submission for the June Solstice Game Jam Submission.
@ben @jess
What I Built:
March to Freedom is a top-down arcade survival game built around Juneteenth. You move your leader across a dark field using your mouse. Scattered marchers are waiting out there and they join your group when you reach them. Shadow enemies try to break up the march. Collect lanterns to charge your abilities. Get to 250 marchers and you win.
Every 50 marchers you rescue unlocks a story card about real Juneteenth history - starting from the 1865 announcement in Galveston all the way through the 2021 federal holiday.
Play It Here:
Demo Video link :https://snipforge.video/share/54daa022-51b
The Idea:
The thing I kept coming back to when designing this was that the goal should not be to fight. It should be to gather. You are not trying to destroy the enemies - you are trying to bring people with you and keep them safe.
The shadow forces get stronger at night which ties into the solstice theme of light vs darkness. Your lanterns restore health and charge your abilities. The metaphor is simple but I think the gameplay reflects it honestly.
How to Play:
Move your mouse on the canvas to move your leader directly
WASD works as a fallback when your mouse leaves the game area
Tab switches between your 5 abilities
Space uses the currently selected ability
Abilities charged by collecting lanterns:
AbilityWhat it doesShieldSends a ripple wave that pushes all enemies backSpeedBurst of speed for 3 secondsTorchFires projectiles outward in 8 directionsFreezeSlows all enemies down for 5 secondsRallyTeleports all your scattered followers to you
Enemy types:
Scout - small, fast, goes down in one torch hit
Heavy - bigger and slower but hits harder, takes two torch hits
Boss - shows up every 100 marchers, needs 3 torch hits, drops 2 lanterns when defeated
Day/Night cycle - every 30 seconds the field darkens. Enemies get faster at night. Lanterns glow brighter in the dark. When dawn breaks things ease up again.
How I Built It:
Single HTML file. HTML5 Canvas, Web Audio API, no libraries, no frameworks.
The first thing that tripped me up was mouse tracking. getBoundingClientRect() gives you wrong numbers if you call it before the page finishes laying out. I fixed it by wrapping the canvas initialization in a 100ms setTimeout and reading offsetWidth once after layout settled. I kept those values fixed for the rest of the session instead of recalculating. That cleared up all the coordinate issues.
All audio is synthesized with oscillators and gain nodes directly in the Web Audio API. I gave each sound its own named function - sfxCollect, sfxBossDie, sfxNight etc. Easier to tune individual sounds that way.
The game loop runs on delta time so the speed stays consistent across different frame rates. The part that took the most work was the follower chain. Each follower tracks the position of the person in front of them. Getting the spacing and movement speed right so it looks like an actual group moving together took several passes.
Harder than I expected:
Day/night transitions that feel gradual and not jarring - ended up driving it with a sine curve over 30 seconds
Keeping the boss HP bar readable when it spawns near the edge of the canvas
The victory parade - went through a few versions before landing on 300 confetti particles with the followers spinning in rainbow colors
Came together quickly:
Story card system is just an array of objects, pause game, show card, resume
Web Audio synthesis - the pattern is the same for every sound once you have it down
localStorage high score
The History Cards:
I spent time on these to make sure the dates and details were accurate. These are verified events:
June 19, 1865 - Gordon Granger arrives in Galveston with General Order No. 3
1866 - First organized Juneteenth celebrations in Texas
Early 1900s - As the Great Migration spread, Juneteenth traveled with it
1980 - Al Edwards successfully lobbied to make it an official Texas state holiday
June 17, 2021 - President Biden signs the Juneteenth National Independence Day Act
They are short because they appear mid-game, but I wanted each one to feel worth reading.
What I Would Add with More Time:
A marching drumbeat that builds as your group grows larger
More story cards for an endless mode past 250 marchers
Haptic feedback on mobile when the boss arrives
An accessibility mode with a slower day/night cycle
Prize Category:
This submission is for the main June Solstice Game Jam prompt.
Juneteenth is one of the June celebrations named directly in the jam brief. The game is built around that theme from the ground up - the mechanic of gathering and protecting rather than fighting, the day/night cycle tied to the solstice theme of light and darkness, and five story cards covering real Juneteenth history from 1865 to 2021.
Happy Juneteenth.
Built with HTML5 Canvas and Web Audio API. No libraries.
snipforge.video - June 2026
Top comments (0)