DEV Community

snipforge
snipforge

Posted on • Edited on

I Built a Juneteenth Game for the June Solstice Game Jam - March to Freedom published

June Solstice Game Jam Submission

@ben @jess This is a submission for the June Solstice Game Jam Submission.

Most survival games hand you a weapon. This one hands you a lantern.

When I read the jam brief and saw Juneteenth named as one of the June celebrations, I knew I wanted to build around it. But it took me a while to find a mechanic that felt right. A holiday about freedom and community should not be a game about destroying things. I kept circling back to one idea: the goal should not be to fight. It should be to gather.

So in March to Freedom, you are not a soldier. You are a leader moving across a dark field. Scattered marchers are waiting out there, and they join your group when you reach them. Shadow forces try to break the march apart. Your job is to bring 250 people home and keep them safe along the way.

And every 50 marchers you rescue, the game pauses and shows you a card about real Juneteenth history, from the 1865 announcement in Galveston to the federal holiday signed in 2021.

Play It Here:

Demo Video link :https://snipforge.video/share/8878c229-e1f

Quick challenge before you start. My fastest run to 250 marchers is 249. If you beat it, post your result in the comments. And the mini-boss that shows up at 100 marchers has ended more of my runs than I want to admit, so if you take him down on your first try, I want to know.

How it plays

Your leader follows your mouse directly, with WASD as a fallback. Lanterns scattered across the field restore health and charge your abilities. Tab cycles through 5 of them, Space fires the selected one:

Shield sends a ripple wave that pushes every enemy back
Speed gives you a 3 second burst
Torch fires projectiles outward in 8 directions
Freeze slows all enemies for 5 seconds
Rally teleports your scattered followers back to you

The field cycles between day and night every 30 seconds. Enemies get faster in the dark, lanterns glow brighter, and when dawn breaks things ease up. That light and darkness rhythm is the solstice connection, and it changes how you play. At night you protect. At dawn you push forward.

Three enemy types keep the pressure on: fast Scouts, tanky Heavies, and a Boss every 100 marchers who takes 3 torch hits and drops lanterns when he falls. Reach 250 and you get a full victory parade, confetti and all.

How I built it:

Single HTML file. HTML5 Canvas, Web Audio API, no libraries, no frameworks.

The part that took the most work was the follower chain. Each marcher tracks the position of the person in front of them, and getting the spacing and speed right so 200 people read as one group moving together, instead of a snake or a blob, took several passes. When it finally clicked and I watched a long line of marchers curve around an enemy as a unit, that was the moment the game felt alive.

The bug that taught me the most was mouse tracking. getBoundingClientRect() returns wrong numbers if you call it before the page finishes laying out, and my coordinates were off in ways that made no sense. The fix was to wrap canvas initialization in a 100ms setTimeout, read offsetWidth once after layout settled, and never recalculate. Same instinct as my QA day job: stop guessing, isolate, reproduce.

A few other things under the hood: the game loop runs on delta time so speed stays consistent across frame rates, all audio is synthesized from oscillators and gain nodes with one named function per sound, and the day/night transition is driven by a sine curve over 30 seconds so it fades instead of snapping.

The history cards:

I spent real time making sure these are accurate. The five cards cover verified events: Gordon Granger arriving in Galveston with General Order No. 3 on June 19, 1865. The first organized celebrations in Texas in 1866. Juneteenth traveling north with the Great Migration. Al Edwards lobbying it into a Texas state holiday in 1980. And the federal holiday signed on June 17, 2021.

They are short because they appear mid-game, but each one is there to be worth reading. If one of them covers something you did not know, tell me which one in the comments. For me it was Al Edwards. I knew about 1865 and 2021, but not about the 15 year stretch of work in between that made the rest possible.

What I would add with more time:

A marching drumbeat that builds as your group grows. More story cards for an endless mode past 250. An accessibility mode with a slower day/night cycle.

Happy Juneteenth. If you play one game from this jam, I hope this is the one, and I hope one of the cards sends you down a rabbit hole.

Built with HTML5 Canvas and Web Audio API by @snipforge
snipforge.video, June 2026

Top comments (0)