Sam Gilson

Graftwood

Game

Graftwood is a 3D auto-battling roguelike that runs in a browser, built from a friend's design. Your creature walks a branching path through the woods, fights bugs, crustaceans and woodland creatures, and grafts their body parts onto its own body. The fights play themselves: every part counts down and acts when it reaches zero, so the build you have grown decides who wins.

A creature has mass, and one body part fits on each unit of it. You start with three mass and two parts, choosing between a toothy, furry Burrowling, a Flitterling with a stinger and wings, and a Sprigling that fights from behind a coat of slime. Some parts act on a timer: teeth bite every two seconds, a stinger adds poison that stacks, lucky feet make a creature harder to hit the longer a fight lasts, a slime coat soaks up damage. Others change the creature for good: bunny ears take a point off every ranged hit, and wings make a light body harder to hit for each empty slot it carries. Past five, each extra unit of mass and each extra part slows every part a little, so a big creature is a slow one. Each part is drawn on the 3D body where it was grafted.

You build the creature by hand. Drag a part onto it in the clearing and it shows on the body, glowing, before you let go; drop it on one of your parts to swap them, into a bag that holds two parts for later (they do nothing there), or into the bin. Every creature and part is a bug, rodent, beast or critter, and two or more of one kind on your body earn a bonus: bugs act sooner, rodents dodge, beasts have more health, critters heal a little each second. Seven wild parts, from a third eye to a second head, suit anything.

Winning a fight pays acorns, lets you forage, and offers more maximum health or one of the loser's parts. A full forage bar, every three or four wins, grows a unit of mass. Encounters on the path are half good and half bad: one might add mass, turn up a part, or bring an old beetle who upgrades a part of your choosing; another takes mass away, and with it the part that no longer fits, withers a part, or sends a packrat through your bag. The woods hold thirty-four kinds of creature, from ants and ducks to a bear, a unicorn and a dragon hatchling. A trader sells parts, mass and healing for acorns, and rests heal or let you grow. Twelve floors of battles, elites, encounters, the trader and rests are rolled for each run, and the last is the Old Stag, carrying more parts than it should and slowed by every one.

Every rule runs in a Rust core in fixed-point integer maths, compiled to WebAssembly, and the page draws what the core returns. A fight replays exactly from its seed, and a probe in the repository plays hundreds of whole runs to show what a change to the numbers does. The menu art is drawn in TikZ.

Playing it

Click to choose a creature, a place on the path or a reward, and drag parts on and off your creature. Fights run on their own at one, two or four times speed, or skip to the end. N turns the sound on or off. Your record of runs, wins and the deepest floor reached is kept in the browser you played in.

Checked in Chromium, Firefox and WebKit.

Open the project · Source code

All tools and games