The Starwarden — browser platformer: collect starlights, fight murklings, beat the darkness
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.
Discussion in the ATmosphere