
Daily Brains · six toy heroes, one trick each, and a star for every one of them.
Hero Star is a once-a-day party puzzle in a small 3D realm. A party of chunky toy heroes stands among crystals, water, goblins, dragons and trees, with one gold star for each hero. Move one hero at a time, using each hero's one trick: the Warrior shoves whole lines, the Thief drags whatever is behind her, the Wizard swaps with the first thing he sees, the Priest shields her neighbours, the Bard leads everything near her and the Druid transforms what blocks her. Get every hero onto a star at once, in as few moves as you can. Every board is solved by computer, so par is the proven minimum. It is a hero-party block puzzle in the tradition of the Heroes of Hauling realm of Order of the Sinking Star, cut down to one readable board a day, each weekday in its own realm with one new idea.
The idea of a party where every member has exactly one verb comes from the hero-party Sokoban puzzles, above all the Hearty Heroes of Hauling in Order of the Sinking Star. Version B follows that realm's rules as closely as public sources allow: the Wizard swaps by moving (there is no swap button), the Priest's shield works on her neighbours and lets a hero stand over water only while under attack, goblins strike next door and finish any dragon beside them, and dragon fire stops at the first thing in its way. The art is all Hero Star's own.
Each weekday is its own realm with its own floor, walls, water and light, and each adds one new idea: the Red Hall on Monday (the Warrior and stepping stones), the Teal Courtyard on Tuesday (the Thief), the Moon Library on Wednesday (the Wizard), Goblin Wood on Thursday (goblins and the Priest), the Sandstone Temple over open water on Friday (dragons and the Bard), the Autumn Grove on Saturday (the Druid and her trees), and the Sinking Star on Sunday, three heroes with buttons and gates and the rest of the week mixed in.
Boards are generated offline by scripts/hero-star/generate.mjs. A random board for the weekday's recipe is hill-climbed: every candidate is solved by an exhaustive breadth-first search over the full state using the game's own rules file, logic.js, and kept only if par sits in the weekday's band, the search has to work for it, the answer is mostly puzzle rather than walking, every hero does their trick on the optimal line and at most one crystal sits idle. The finalists must pass proofs: switch off any hero's trick and the board cannot be solved (with three heroes: not within par + 2); Monday's water turned to wall must be unsolvable (a stepping stone is needed); a board with a dragon must get strictly shorter without its fire; Sunday's gates turned to wall must be unsolvable. scripts/test-hero-star.mjs repeats every proof on every board in the book and replays each stored answer through logic.js to a win in exactly par.
WarriorPushesHEROA horned helmet, a big orange moustache and a short sword held upright. Walks into a line of things and shoves the whole line one square: crystals, monsters and other heroes alike. A wall, tree, shut gate or the board's edge stops the line and he stays put. The last thing in a line pushed into water sinks (a crystal becomes a stepping stone, a monster is gone) or falls away into a gap.
ThiefPullsHEROA purple hood with a mask band and a small loot sack on her back. She cannot push. Every step she takes pulls whatever is directly behind her (a crystal, a monster or a hero) into the square she left. Every time: walking past things carelessly can wreck a plan.
WizardSwapsHEROA tall floppy hat with a bent tip, a white beard and a short staff with a glowing orb. No swap button: each move he first looks straight ahead, and the first hero, crystal or monster on that line trades places with him. His sight crosses floor, water and gaps; walls, trees and shut gates end it. With nothing in sight he simply walks. When he is chosen, faint lines show what he would swap with.
PriestShieldsHEROA white wimple, a red stole, hands together and a gold halo resting on her crown. She and every hero beside her (up, down, left, right; the gold glow) are safe from goblins and dragon fire. A shielded hero can even stand over water or a gap, but only while something is attacking them.
BardLeadsHEROPink from beret to hem, with a white feather in her beret and a small pink lute held close. Music notes dance round her while she is chosen. When she steps, every crystal, monster and hero within two squares of her (the pink square) copies her step if the square ahead of it is free solid ground; things at the front move first, so a column moves as one. If she cannot step, nothing moves.
DruidChangesHEROSmall antlers with a leaf on each tip and a leaf-edged green mantle. When something blocks her step she transforms it instead of moving: a tree becomes a crystal and back, a goblin or a dragon becomes a harmless crystal beast and back. She cannot change a hero or a wall.
GoblinBitesENEMYA green menace with enormous ears, small bead eyes and a stubby club held close. It never moves on its own, but any unshielded hero who ends a move next to it is clubbed: the hero tips over, a little ghost floats up, and the board waits for an Undo. A goblin next to a dragon finishes the dragon. Pushed or pulled into water or a gap, it is gone.
DragonBreathes fireENEMYA round little red dragon with a big snout, small folded wings and a stubby tail. Its fire runs down all four straight lines until it meets something: a crystal, a monster or a tree takes the flames, a hero standing in them is burnt to a crisp (unless shielded), and walls and shut gates stop it. The flames are drawn on the board.
There is one star per hero. The board is solved the moment every hero stands on a star (any hero on any star). Anything else standing on a star blocks it. No hero ever starts on a star, on another hero or on an object.
Tap a hero or their card (or press 1 to 3, or Tab) to choose who moves. Swipe, tap the square next to them, or use the arrow keys or WASD. Tapping a farther square walks there by plain, safe steps only (no pushing, pulling or swapping on the way, and never into danger). Undo (Z, U, Backspace or Ctrl+Z) and Restart (R) are free and unlimited. The keys work straight after the page loads, and the How to play deck has a page listing them. A blocked move gets a short reason (the Thief cannot push, the gate is shut, and so on).
One move: (1) the hero acts and everything it moves lands, sinking into water, drowning or falling into a gap as it lands; gates keep the state they had at the start of the move until it is over. (2) Buttons are read and gates open or close. (3) Goblins finish any dragon beside them. (4) The surviving monsters strike: an unshielded hero next to a goblin or in a dragon's fire is lost, and a hero over water or a gap who is not both shielded and under attack sinks or falls. A move that loses a hero still happens: the hero is clubbed, burnt, sinks or falls, a little ghost floats up, and a banner says what happened. The board then takes no more moves until you Undo (the fatal move counts until it is undone) or Restart. The solver treats a lost hero as a dead end, so par and every stored answer never lose anyone.
Water: a hero who steps, is pushed or is swapped onto water sinks (unless shielded while under attack); a crystal pushed, pulled or swapped in sinks into a stepping stone (floor from then on); a monster drowns. Gaps: open sky; a hero who walks off the edge falls, crystals and monsters fall away for good; the Wizard can see across. Trees cannot be moved and end the Wizard's sight and dragon fire; only the Druid can change one. Buttons and gates (Sunday): while anything stands on a button every gate is open, and a gate never shuts on whatever stands in it.
Par is the fewest moves the board can be solved in (each step, push, pull, swap, song or transformation is one move; choosing a hero is free). Solving in par scores 1000 and a gold star, which is a perfect day. Over par scores 1000 x par / moves (never below 100); up to par + 25% (at least 2) is silver, anything else bronze. Give up (tap twice) plays out an optimal answer and scores 0. The share line gives the realm, moves, par, medal and party, with no emoji.
Each realm is real 3D in three.js (vendored r128), built from cheap low-poly shapes with Lambert materials, instanced tiles, walls and grass, and soft blob shadows instead of shadow maps. It renders only when something changes, plus a gentle idle loop (bobbing, blinks, flickering torches, water, dragon fire) at 14 to 24 frames a second that stops when the page is hidden, the board is off-screen or the device asks for reduced motion. Three quality tiers (the lowest has no idle loop and fewer props), and a top-down 2D drawing when WebGL is missing. Hero portraits on the cards are rendered from the same 3D figures. Each board opens with a short camera move (about two seconds) from far over the realm, with distant islets, clouds and birds, down onto the board, and the heroes hop as it lands; any key or tap skips it, and it is left out under reduced motion and on the lowest tier (the 2D drawing grows and fades in instead).
All procedural Web Audio, no files. Each realm has a dream pad in its own key and mode: every chord tone is two detuned voices spread across the stereo field, through a filter that drifts slowly open and shut, with a soft flute phrase over the drone now and then, a bell now and then and a wind, hall or water bed, all through a long dark reverb. Moves have their own sounds (a footfall and a note of the scale, a heavy shove, a rasping pull, a shimmering swap, a crystal sparkle, a goblin's hup, a dragon's roar of fire), a sad trombone when a hero is lost, a whoosh for the camera move and a rising flourish on a win. A compressor and a limiter sit on the output so nothing clips. It starts on the first tap or key and goes quiet when muted or the page is hidden.
Progress is saved as you play and stamped with the save version, so a half-played board from version A starts fresh instead of breaking. Version C keeps version B's save format (a list of moves): a board left right after a hero was lost comes back that way, banner and all, and Undo recovers it.
Everything on the board, rendered by the game itself.







196 boards in the book, 28 per weekday; no board comes back for 196 days. Par is the proven minimum for every board. Since version E every board also passes the design bench (scripts/hero-star/quality.mjs): nothing on it can be taken away without changing par, it has at most 12 genuinely different best lines (30 with three heroes), and neither a greedy player nor a two-move lookahead solves it within par + 2. Each weekday's first board teaches the day's idea on its own; after it the list climbs the bench's difficulty measure.
| Day | Realm | Party | Elements | Size | Par | Boards |
|---|---|---|---|---|---|---|
| Monday (Gentle) | The Red Hall | Warrior | Water and stepping stones | mostly 5x5 (up to 5x6) | 10-18 (avg 14.3) | 28 |
| Tuesday (Easy) | Teal Courtyard | Warrior + Thief | Water, gaps | mostly 5x6 (up to 6x6) | 14-24 (avg 21.0) | 28 |
| Wednesday (Steady) | Moon Library | Wizard + Warrior or Thief | Gaps, water | 5x6 to 6x7 (some smaller) | 14-26 (avg 23.1) | 28 |
| Thursday (Tricky) | Goblin Wood | Priest + Warrior, Thief or Wizard | Goblins | mostly 5x6 (up to 6x7) | 14-28 (avg 25.0) | 28 |
| Friday (Tough) | Sandstone Temple | Bard + Warrior, Thief, Wizard or Priest | Dragons (and goblins) | mostly 5x6 (up to 6x7) | 18-30 (avg 26.7) | 28 |
| Saturday (Hard) | Autumn Grove | Druid + any one of the other five | Trees (and monsters) | mostly 5x6 (up to 6x7) | 16-32 (avg 25.3) | 28 |
| Sunday (Fiendish) | The Sinking Star | Three of the six (eight rotating parties) | Buttons and gates, everything else | mostly 6x7 (down to 5x5) | 20-36 (avg 30.3) | 28 |
The first board of each weekday is its teaching board: the day's new idea is the whole puzzle. These notes give the idea away, so skip them if you would rather find it.
| Day | Par | The idea |
|---|---|---|
| Monday | 10 | Get behind the crystal and push it into the water: one stepping stone is the whole crossing. |
| Tuesday | 15 | The Thief drags the crystal over to the Warrior's line; one long shove then sinks it and carries her across on top of it. |
| Wednesday | 18 | The Wizard swaps places with the Thief, and her pull drags him along behind her where he could never walk. |
| Thursday | 14 | The Warrior does all the pushing, always standing where the Priest's shield covers him from the goblin. |
| Friday | 18 | The Bard's song walks the dragon and the Wizard together; the Wizard then swaps with the Bard to reach his star. |
| Saturday | 16 | The Druid turns a tree into a crystal, and the Warrior shoves a whole column, Druid and all, until the crystals drop off the edge. |
| Sunday | 20 | Two heroes hold the button down while the Bard leads the dragon out of the lane past the gate. |