01 / Game systems & sustained iteration
Sporeling Dash
One dash became a movement system. That system became a 15-chamber world.
Live browser game · My most sustained game project
The challenge
The central idea sounds simple: dash in the air and grow a temporary mushroom platform beneath your landing path. Making it feel good meant coordinating momentum, collision, limited resources, and platform lifetimes. Every new ability changed which routes were possible, where players could recover, and how easily a level could be bypassed. This became the game I spent the most time developing and revisiting.
The approach
I built outward from that movement loop, then repeatedly revised the game around how it played. The development history records passes on dash buffering, camera behavior, checkpoint spacing, boss attack cues, touch menus, and difficult routes. Later expansions added new enemy chains and advanced trials, followed by fixes for failed-attempt resets and unintended shortcuts. The V5 visual remake brought a luminous illustrated environment while preserving the underlying 2D gameplay.
What came out of it
The result is a browser platformer with 15 Adventure chambers, four main-route boss encounters, two hidden rooms, persistent keepsakes, and two unlockable challenge routes. Timed runs add separate route leaderboards and optional personal-best or champion ghosts. More than 70 recorded Git commits document the progression from a small fungal platformer to a much larger game, including repeated balancing, accessibility, presentation, and control improvements.
What I learned
Adding a mechanic is the start of the work. The harder part is teaching it, combining it with everything already in the game, and making failure feel fair. A boss needed an attack opening players could read; a long traversal chain needed its connectors to reset after a fall; a phone menu needed to work with a thumb. Those revisions taught me more about building a complete experience than any single feature.
The systems behind the game
Built with frontier AI, refined through play
I used frontier AI as a development partner to explore movement systems, work through implementation details, and build regression checks. The work came down to concrete decisions: how air dashes create bloom platforms, how collisions behave at ledges, how bosses signal an opening, and how touch controls preserve the intended dash direction. My role was setting the direction, judging the feel, and turning playtest feedback into the next iteration.
Movement that creates the route
Midair dashes grow temporary bloom platforms. Wall-cling, spore-glide, a flutter jump, and a straight-down slam extend the traversal vocabulary. Enemy bounces and dash refunds turn gaps into linked movement sequences.
Combat feeds traversal
Adventure’s Resonance meter rewards enemy interactions and bloom chains. A charged burst clears nearby ordinary enemies, restores movement resources, and lifts the player. Boss encounters teach distinct openings and attack responses.
Difficulty with different priorities
Adventure offers three difficulty settings with different health, healing, and checkpoint rules. Timed Run keeps its clock running through deaths. The Pale Root and The Reach push the same mechanics into longer, less forgiving routes.
A reason to come back
Hidden rooms, four persistent keepsakes, separate Any% and 100% boards, and recorded ghosts give players different goals. Longer routes keep their own leaderboard categories so unlike runs are not ranked together.
Testing the actual routes
Deterministic route replays and engine-level probes check chamber progression and advanced challenge segments. Focused checks cover repeatable physics, bloom placement, collision boundaries, touch inputs, and fullscreen behavior, making the movement system easier to revise without losing working routes.
Built for more than a keyboard
Keyboard, gamepad, and touch inputs cover play and menus. Later revisions improved mobile text, tap targets, audio startup, fullscreen behavior, and the HUD so the interface left more room for the route.


