Posted on Jun 17 • Edited on Jun 20
June Solstice Game Jam Submission
This is a submission for the June Solstice Game Jam
What I Built
The Starwarden is a side-scrolling platformer where you play a wizard restoring a sky half-swallowed by shadow. Collect starlights to lower a rising darkness meter, fight Murklings across four seasons (Spring through Winter), and win by clearing the full year before darkness hits 100%.
I built it to make light vs. darkness and time passing feel tangible: darkness is always creeping in, seasons turn with rising difficulty, and each starlight is a small push back toward dawn. That maps directly to the jam’s solstice themes — the global balance of light and dark, the passage of the seasons, and a fight at a turning point between endless twilight and restored day.
Site
https://wizard-game-pi.vercel.app/
Code
The Starwarden
A 2D side-scrolling platformer built with Phaser 4, React 19, TypeScript, and Vite. Play as a wizard crossing a procedurally generated world through four seasons — collect starlights to push back the darkness, dodge or defeat murklings, and clear Spring through Winter to win.
AI / contributor reference: See AGENTS.md for architecture, game logic, world generation, assets, and conventions. Start there instead of reading the full codebase.
Quick start
npm install npm run dev
Enter fullscreen mode Exit fullscreen mode
Open http://localhost:8080. The game loads Story → Instructions → Game (MainMenu is registered but skipped on cold start).
Command Descriptionnpm install
Install dependencies
npm run dev
Development server with hot reload
npm run build
Production build in dist/
How to play
Each season starts with the sky at 50% darkness. Darkness rises passively over time (~90 seconds to reach 100% if you collect nothing). Collect starlights to…
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.
답글 남기기