Wanderleaf
Ten minutes or a whole evening — the game doesn't mind which. A hero to build, ground to cover, and a world that remembers what you did in it.
What it is
Wanderleaf is a turn-based RPG that doesn't ask for a commitment up front. Nothing here is gated behind an hour of setup — you can pick it up for ten minutes and get somewhere real, and there's enough underneath to lose an evening to when you feel like it.
You pick a class, kit out a hero, and push into ground you haven't covered. You come back to a world that keeps track of what happened there, so returning isn't starting over.
Fights resolve quickly, which is what makes the short sittings work — but that's a property of the pacing, not the size of the thing. Progress saves to your browser, so closing the tab costs you nothing and neither does picking it up three weeks later.
The one design constraint: a first-time player should be doing something interesting inside thirty seconds. Most RPGs spend that on a cutscene. This one opens on a decision.
How to play
- WalkTap open ground / joystick
- Look aroundDrag
- ZoomPinch / scroll
- Choose your action each turnTap / click
- Open inventory and gearMenu button
On a desktop, click instead of tapping and scroll to zoom. Nothing is behind a key.
Trades running alongside the fighting
Cooking, fishing, hunting, crafting, building, tree cutting, mining, blacksmithing, alchemy, fletching and gardening. Each levels on its own, none of them are side-content, and where a trade needs a tool, the first one costs 25 gold rather than an hour of grinding. Most browser RPGs are a combat loop with a shop attached. This one has a life running next to it.
Build Log
-
Build 279
Tapping is clearer: whatever you tap, a creature, a herb, a tree, gets a thin gold outline while you head over to it, and quest items and treasure caches can be tapped now too, even when your finger lands just beside them. Walk or run while you move: push the stick out to its edge to run, or tap the Walking / Running button, which now works while your other thumb steers and remembers your choice. Your dog is shaped like a dog now rather than a ball.
-
Build 275
The people along the river now have their part in the story. Each says a line once, when its moment comes: Silas the first time he sees the golden leaf, the fishers and scavengers about what's been coming down the water, the World Tree's root-keeper who watched the leaf fall. A golden leaf on someone's name means they have something to tell you. And when it's all over, Silas finally gets to hear how it went, and the story closes with its own ending.
-
Build 273
The golden leaf now shows itself only when it has somewhere to lead you, and stays out of fights; tap the goal line to call it out. Once the Withering falls it goes home for good: at the World Tree the crown glows gold, golden leaves drift down, and the leaf rests on the bark. Touch it and it will guide you once more: to an unfinished quest, an unopened treasure cache, or fish you haven't caught yet, then fly home.
-
Build 271
Added fishing to every river: Maple Forest, Storm Peak, Northern Lights and The World Tree each have four fish of their own, and every catch cooks into a dish. Fish from further up the climb give more fishing XP and cook into stronger dishes. Worth writing down: the float used to land a little way back toward you from the fishing spot, which suited a small fishing hole but put it on the bank beside a pond, so it now flies past the spot onto open water.
Earlier builds (18)
-
Build 258
Smoothed the camera into a fight in the world and back out after a win. It glides in over 0.7 seconds, circling the short way to the fight view nearest where it was and easing the picture up clear of the panel, then glides back over 0.6 seconds facing the fight's way. Worth writing down: easing by a fixed share of the remaining distance each frame looks smooth at the end but does most of its moving at the start; a timed move can begin as gently as it ends.
-
Build 251
Leaving the game from inside another page now takes the whole tab with it, where the host page allows it. When the browser's Back has nowhere to go, a game running inside another page sends the whole tab to the site's home page instead of loading a page inside its own window. Worth writing down: inside a frame, the page you came from is the page doing the framing, so a game that leaves by loading it opens the site inside itself.
-
Build 247
Picking berries and the like stopped stalling before the pop-up. Timed, most of the stall was the game setting every rock, tree and bush back onto the ground each time the area updated, though none had moved. Scenery that stays put is now set down once, and all of it again only if the ground itself changes; the pop-up and sound now come before the update. Worth writing down: a pause shows where the player is looking, and only timing it shows where the time went.
-
Build 244
Every story boss got a fight of its own, each warning of its big blow a turn ahead: Old Mossback grows a moss shell a skill shatters, the Frost Giant freezes you at three frost, the Storm Drake flies beyond any ordinary blow but an Archer's or Mage's, and The Withering's blight turns heal skills and health potions into harm. A boss loss costs nothing. Worth writing down: a boss that grows with its area falls behind a faster-growing hero, so each is measured against the hero who meets it.
-
Build 237
Elderheart became Wanderleaf on every screen, and its final boss became The Withering. What the saves are filed under did not change: progress stays under the old storage keys, so every existing save still loads; an export keeps the old signature, which lets old exports import; and the old boss's bestiary counts carry over. Worth writing down: a rename is two lists, what the player reads and what the data is keyed on, and the second stays put or moves only with a migration.
-
Build 212
Whoever starts a fight now strikes first. Engage an enemy and one real attack is rolled — it can hit, crit or miss — and shown in the world before the battle opens: an archer takes the bow off the back and shoots, everyone else lunges and swings. An enemy that ambushes you gets its own opening strike as the battle opens. Worth writing down: the strike is rolled before it is shown, so the world never plays a hit that the battle then calls a miss.
-
Build 210
Archers now carry the bow across the back, draw it in battle, and hit what they aim at. On this figure's proportions the drawing hand cannot reach the string at the bow, so the draw is a push: the string hand sets at the chin and the bow arm drives the bow out, with the joint angles solved for each figure rather than posed by hand. The arrow lands on the enemy's actual surface, found fresh for every shot, and rides the enemy's flinch; a dodged arrow flies over its shoulder instead. Worth writing down: the figure's proportions decided the motion — the textbook draw was not available on this body, and measuring that first saved animating the wrong one.
-
Build 204
Moved the Engage button, and made every battle action wait a moment before it answers — 650 ms after an ambush, 250 ms after a fight you chose. An aggressive enemy starts the fight itself on contact, so the battle screen could appear under a thumb already on its way to Engage, and the tap landed on whatever was there. Worth writing down: when a screen can change under a moving finger, moving the button is not enough; the new screen also has to ignore the tap that was aimed at the old one.
-
Build 203
Armour became clothing. Every head, torso, leg, foot and hand item now takes its shape from its name — a Cloak is a mantle and a cape, Chausses are mail from thigh to ankle, Bracers guard the forearm and leave the hand bare — and every piece is sized from the part of the body it covers rather than given a size of its own, so the same item fits every build. Worth writing down: a piece of armour can exist in the scene and never once be seen, and no check that asks whether it is there will notice. The one that does fires rays at every piece and counts how often it is the first thing hit.
-
Build 136
Obstacles are read out of the finished scene now rather than registered by each thing that creates one. Props are built in about a dozen places, and a hand-maintained list would be incomplete from the day it was written. Reading the assembled scene catches everything by construction, including anything added later by someone who never heard of the list. Ground cover is left out on purpose: being stopped by a tuft of grass is worse than walking through a log.
-
Build 131
Dragging to turn the camera while steering with the thumbstick threw the view somewhere random. One listener tracked a single previous finger position for every finger at once, so a second thumb on the stick was measured against wherever the camera finger had last been — about 43 degrees in a single frame. Only the finger that began a drag turns the camera now. When two controls interfere, the one that changed most recently is the suspect and usually not the cause.
-
Build 125
Feet sank into hillsides and floated over dips. The ground is drawn as flat triangles about four units apart, while the character’s height came from the smooth curve those points were generated from — two different surfaces, diverging by about 0.28 between points, half a lower leg. The character stands where a ray fired straight down strikes the ground now. When two representations of one surface disagree, the one being drawn is the true one.
-
Build 91
Equipment showed correctly in menus and in battle but never on the character out in the world. The world model was rebuilt only when the class changed, and putting on a helmet does not change your class. The comparison covers all ten equipment slots now, along with hair, body and skin. A cache key that omits half of what it is caching is not a cache — it is a guarantee that the stale version is the one you see.
-
Build 43
Hair framed the face down to the exact height the eyes sit at, so a dark slab cut across the eye line. Head-on it read as a normal haircut, because the piece sits side-on to the camera. Character previews turn by dragging now, which is how it was found. Some faults only exist at an angle nothing has looked from, and a preview showing one fixed view is a preview of that view rather than of the character.
-
Build 27
Standing beside a wandering creature let you fight it over and over. The respawn timer was filed under the creature’s position at the moment it reached you, while the check that lets it return reads the position it starts from — and a creature that chases you is never in the same place twice. It keys on the home position in both now. The timing was always right; the address it was filed under was not.
-
Build 16
Starting a new game skipped the save picker, and the picker is the only screen that claims a slot — so the game ran with none assigned and every save returned without writing. The boot assigns a slot now whether or not the picker is shown. Worth writing down: the failure only exists across a reload, so a save system is not tested by saving. It is tested by returning.
-
Build 14
Rewrote the opening. The Begin Adventure button was sitting below the fold on a phone and starting out disabled — measured at 1406px down a page with a 915px viewport. New players were landing on a screen with nothing to press. The empty save picker is gone too: a file dialog with no files in it isn't a choice, it's a wall.
-
Build 7
Moved saves onto their own storage keys. Worth writing down: renaming a storage key silently deletes every existing player's save, so the old keys are still read and migrated rather than dropped.
Credits and licences
Built on three.js, used under the MIT licence with the copyright notice retained in the shipped file. Typefaces are licensed under the SIL Open Font Licence. Cover art was composited from a base image created with Grok (xAI).
Wanderleaf is original work by Launchway Games.