This is a submission for the June Solstice Game Jam
What I Built
The Starwarden is a browser platformer: collect starlights to push back rising darkness, fight Murklings with fireballs, and clear the sky before the Murk wins. I wanted light to feel like a scarce, urgent resource — every starlight buys the world a little more day.
It fits the June Solstice jam theme of light vs. darkness and passage of time: you start at 50% darkness (half the sky in gloom — echoing the solstice’s longest/shortest day split), darkness rises on a timer if you do nothing, and winning means restoring the dawn. The jam even suggests “a platformer where daylight is your resource” — that’s the core loop, inverted: you earn back daylight instead of spending it.
Video Demo
Code
How I Built It
I built The Starwarden with Phaser 4 + React + TypeScript + Vite. React hosts the canvas; Phaser runs everything through a scene chain ending in Game.
The level is a procedurally generated tile grid with staircase platforms. After generation, a BFS reachability pass (using conservative jump bounds synced to player physics) prunes unreachable platforms — so every starlight spawn is guaranteed collectible.
Rendering uses a batched tilemap layer for platforms. Darkness is a screen-space overlay sandwiched between parallax and gameplay (depth 5), plus a HUD meter. Starlights and murklings both query only reachable runs; murklings also respect spawn distance from the player.
Player movement uses Arcade velocity + horizontal drag, debounced ground detection, and a priority-based animation state machine. Combat is fireball overlap on patrolling enemies.
Config is split into small modules (starlightConfig, baddiesConfig, wizardCombatConfig) so tuning doesn’t require touching core scene logic.





















