<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>wefav: behind the games</title>
  <link href="https://wefav.com/"/>
  <link rel="self" href="https://wefav.com/feed.xml"/>
  <id>https://wefav.com/</id>
  <updated>2026-10-10T02:45:00.000Z</updated>
  <author><name>Jeff Pelton</name></author>
  <entry>
    <title>Chip Thief</title>
    <link href="https://wefav.com/notes/chip-thief/"/>
    <id>https://wefav.com/notes/chip-thief/</id>
    <updated>2026-10-10T02:45:00.000Z</updated>
    <summary>You&#39;re a seagull at the beach. Glide over the crowd, dive for chips and bank your haul on the pier lamp post before someone swats you. A new beach every day.</summary>
    <content type="html">&lt;p&gt;Chip Thief makes you the seagull. Hold and drag to glide over a low-poly beach, and let go to dive at the spot
under your shadow. Whatever you grab, you carry until you drop it at your perch on the pier lamp post, and every
chip in your beak makes you slower and lower. So the whole game is &amp;quot;one more before I bank&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/chip-thief/_media/chip-thief-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;The crowd is the puzzle. A yellow cone means someone is looking, and a steal inside one gets a shout: everyone
near it covers their food for a few seconds. The towel guy, the umbrella guy and a kid with a bucket arrive
through the day, and a swat from any of them knocks everything out of your beak. Three swats and you&amp;#39;re out.
You can knock a drink over so heads turn to the mess, or wait for the lunch rush, when a family opens a picnic
and the whole beach looks away.&lt;/p&gt;
&lt;p&gt;You can also land. Nobody minds a gull that&amp;#39;s only strolling, so it can walk through a cone and peck food from
under a nose. A gull that sprints, or has food in its beak, gets noticed, and on the sand it&amp;#39;s inside every swat
range. Food under a parasol can&amp;#39;t be dived at, so walking is the only way in. Walking was a player&amp;#39;s idea.&lt;/p&gt;
&lt;p&gt;The daily beach is the same for everyone and runs noon to sunset in two and a half minutes. Your haul shares as
a line like &lt;code&gt;🍟×7 🍦×2 🥪×1 · swatted twice&lt;/code&gt;. Endless opens after your first day.&lt;/p&gt;
&lt;p&gt;The idea came out of the studio&amp;#39;s own brainstorm. It&amp;#39;s built with three.js. The gull is two Meshy models with no
rig, so a vertex shader bends the wings, and every sound is synthesized. The promo above was rendered from the
real game, with a bot playing short scripted scenes.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Rhyme or Reason</title>
    <link href="https://wefav.com/notes/rhyme-or-reason/"/>
    <id>https://wefav.com/notes/rhyme-or-reason/</id>
    <updated>2026-10-09T05:00:00.000Z</updated>
    <summary>A daily sorting puzzle. One messy drawer, the same for everyone, and a hidden rule. Sort it in 5 Wordle-style checks, then name the rule.</summary>
    <content type="html">&lt;p&gt;Rhyme or Reason came out of looking at what&amp;#39;s trending on Steam. Tidying games are having a moment, and A Little to
the Left showed how good it feels to put household objects in order. Those games ask you to make things neat. I
wanted one that asks what neat means today.&lt;/p&gt;
&lt;p&gt;So every day there&amp;#39;s one messy drawer of eight everyday objects, the same for everyone: a rubber duck, a mug, a
nail, a toy brick. It has a hidden rule. Slot 1 is the least and slot 8 the most of… something. Drag the objects
into an order and press Check. Each slot lights green if it&amp;#39;s exactly right (and it locks in place), yellow if it&amp;#39;s
one or two spots off, and grey if it&amp;#39;s further off. You get five checks, then you name the rule from four.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/rhyme-or-reason/_media/rhyme-or-reason-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;The rules start sensible: size, weight, price, how old the invention is. Then they get silly: how loud each thing is
when you drop it at 3 a.m., and how much it would hurt to step on. The reveal shows every object&amp;#39;s value with a
joke, so you can argue with it. The toy brick is always last on that one. Every drawer you tidy goes on your shelf,
and missed days leave a gap.&lt;/p&gt;
&lt;p&gt;The hard part was making the silly rules fair. Every object is tagged with its values, and a drawer is only used
if its eight values are far enough apart that exactly one order is right, and if the three wrong answers in the
final guess would give clearly different orders. A test checks two years of daily drawers and runs a rule-hunting
bot through each one.&lt;/p&gt;
&lt;p&gt;The drawer and all 31 objects are low-poly three.js, modelled in code from simple shapes with no model packs, and
every clack and chime is synthesized. Claude Opus 5.5 built it in one shot. The promo above is the real game
playing a scripted solve, starting with the guess everyone makes first: smallest to biggest. It goes grey.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Half Full</title>
    <link href="https://wefav.com/notes/half-full/"/>
    <id>https://wefav.com/notes/half-full/</id>
    <updated>2026-10-07T06:50:00.000Z</updated>
    <summary>A daily pour puzzle with real particle water. Tilt the jug and land 500 drops in the glass. Three glasses a day, the same for everyone.</summary>
    <content type="html">&lt;p&gt;Half Full came out of a session researching three.js libraries, when I found liquidfun, Google&amp;#39;s particle-water
extension to Box2D, compiled to WebAssembly. The question was whether real simulated water could carry a daily
puzzle. Every day there are three glasses, the same for everyone. You tilt a jug, steer the stream and try to land
all 500 drops in the glass before it runs out of patience. Trickle and you&amp;#39;re accurate but slow. Pour at full tilt
and the stream comes out faster, flatter and wider.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/half-full/_media/half-full-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;The glasses get harder through the week. Monday is an open pour off a deflector and a few pegs. Later the glass
slides back and forth and you follow it, or it hides under a roof and you bank the water down a ramp. By Sunday
there&amp;#39;s a narrow slot to pour through and a spinning paddle in the way. Your first pour of each glass is your
score, and you share the day as one line, like a Wordle. After that, retries are practice, and ▶ Watch replays
any pour.&lt;/p&gt;
&lt;p&gt;The hard part was fairness. A daily only works if everyone&amp;#39;s pour behaves the same, and fluid sims are famously
chaotic. The WebAssembly float math is IEEE-exact. The game quantizes input to whole numbers on a fixed 1/60 s
step, and its JavaScript uses only &lt;code&gt;+ − × ÷&lt;/code&gt; and square roots, with no sine or cosine. A fingerprint of every
particle after six scripted pours matches bit for bit in Node, Chrome and Firefox. So a replay is just the input
list, 3 bytes a step.&lt;/p&gt;
&lt;p&gt;The promo above is the real sim running scripted pours, which a small search found by trying jug positions and
tilts. Claude Opus 5.5 built it in one shot with three.js and liquidfun, and every sound is synthesized.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Tide.day</title>
    <link href="https://wefav.com/notes/tide-day/"/>
    <id>https://wefav.com/notes/tide-day/</id>
    <updated>2026-10-07T00:30:00.000Z</updated>
    <summary>A daily sandcastle game. Build on today&#39;s beach for 3 minutes, then watch a real simulated tide take your castle. Your score is how long the keep stays dry.</summary>
    <content type="html">&lt;p&gt;Tide.day gives everyone the same beach, the same waves and the same bucket of sand each day. You get 3 minutes
to build inside a staked plot: drag to pile sand, dig a moat (every scoop goes back in the bucket), pat the
walls hard and drop bucket towers on top. Then the tide comes in, wave by wave, with a big set every forty
seconds or so and one rogue wave. Your score is how long the top of your keep stays dry, against a par set by a
plain scripted castle on the same beach.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/tide-day/_media/tide-day-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Nothing in it is animated. The beach is a 96 × 128 heightfield of 5 cm cells. The water runs over it as shallow
water (virtual pipes at 60 steps a second), fast thin water picks up sand and drops it where it slows, and any
slope steeper than the sand can hold slides. Wet sand holds far less than dry, and patted sand far more, so
walls fall from the foot up, and a moat buys time until it fills. Each day also brings one beach find: a
driftwood plank, shells, seaweed or a big bucket.&lt;/p&gt;
&lt;p&gt;The sim uses only plain arithmetic and a seeded random number generator, so a castle&amp;#39;s tape (every touch, about
1–2 KB) replays to the identical fall in any browser. The share link carries it, and when your keep goes under
you get a 10-second time-lapse of the whole tide.&lt;/p&gt;
&lt;p&gt;The idea came from the studio&amp;#39;s own pitch, out of some research into liquids in three.js. The promo above was
rendered from the real simulation, replaying a scripted castle on beach #1. It&amp;#39;s built with three.js, and every
sound is synthesized.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Meadowsweeper</title>
    <link href="https://wefav.com/notes/meadowsweeper/"/>
    <id>https://wefav.com/notes/meadowsweeper/</id>
    <updated>2026-10-05T18:45:52.000Z</updated>
    <summary>A daily Minesweeper in a living meadow. Cut the grass, read the numbers and net the creatures hiding in it.</summary>
    <content type="html">&lt;p&gt;Meadowsweeper is Minesweeper in a meadow. It was sparked by a tweet from @MozeTech that mashed up two things
everyone already knows. Mine is Minesweeper&amp;#39;s numbers plus catching creatures, set in a cozy meadow you want
to touch. Instead of clicking tiles you cut the grass with shears. Each mown patch shows how many creatures
hide in the patches around it, and when you&amp;#39;ve worked out where one is, you catch it with your net.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/meadowsweeper/_media/meadowsweeper-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;The rules are kind. Cutting a creature&amp;#39;s patch doesn&amp;#39;t end the game: the creature bolts, leaving a burrow and
a wake through the grass, and it&amp;#39;s lost for today. Netting an empty patch wastes the net, and you get exactly
as many nets as there are creatures, so a perfect field catches them all. Every daily field is seeded by the
date and checked by a small solver, so none of them needs a guess.&lt;/p&gt;
&lt;p&gt;The meadow is the point. It&amp;#39;s tens of thousands of grass blades in one instanced draw, bent by a wind field in
the vertex shader: gusts roll across, your finger parts the grass, and it springs back slowly. A cut sweeps
through a patch in an arc, sprays clippings that settle, and leaves striped turf with the number on it. A zero
mows open across the field ring by ring, like a mower run. Each weekday has its own mood (dewy morning, golden
dusk, light rain, firefly night), with its own light, sound and creatures. There are twelve creatures to
collect in a leather field journal, and four of them are rare.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s built with three.js, and every sound is synthesized. The promo above is rendered from the real game, one
frame at a time.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Stunt.day</title>
    <link href="https://wefav.com/notes/stunt-day/"/>
    <id>https://wefav.com/notes/stunt-day/</id>
    <updated>2026-10-05T05:10:00.000Z</updated>
    <summary>A new movie stunt every day on a small island. Fly it in a biplane, then watch your take cut into a short film you can share as a link.</summary>
    <content type="html">&lt;p&gt;Stunt.day is my own idea, inspired by Stunt Island, Disney&amp;#39;s 1992 game where you flew movie stunts and then
cut the footage into films. Every day there&amp;#39;s one new stunt on a small island: fly under the bridge, through
the barn, beat the hangar doors before they slide shut, grab a banner, slow down enough for the lighthouse
keeper to grab the ladder, or land on a moving train, a balloon deck or an aircraft carrier. You fly it on a
phone with two thumbs: a stick appears under your right thumb, and your left thumb sets the throttle.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/stunt-day/_media/stunt-day-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Every take, clean or crashed, comes back as a short film. An automatic director cuts it: a title card, a chase
shot, a camera planted at each beat with a clear view of the pass, slow motion when you were close, the cockpit
camera when you flew it upside down, and a blooper reel with a CUT! card when you crash. Each stunt has three
takes to land (Clear, Close and Stylish), and each one makes a better film. Your first clean take unlocks the
stunt plane, and all three takes on one stunt unlock the jet.&lt;/p&gt;
&lt;p&gt;The share link is the film. It holds only your stick and throttle inputs, deflated into the URL (usually 100
to 300 characters). The flight sim is deterministic: fixed 60 Hz steps, inputs quantized and sampled at 20 Hz,
and its own sine and cosine, so every browser gets the same numbers. A link replays your exact flight on any
phone, then offers &amp;quot;Beat it&amp;quot;.&lt;/p&gt;
&lt;p&gt;The promo above was made the same way. The test autopilot flew the stunts, and the game&amp;#39;s own director filmed
them. It&amp;#39;s built with three.js, and every sound is synthesized.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Snake Bait</title>
    <link href="https://wefav.com/notes/snake-bait/"/>
    <id>https://wefav.com/notes/snake-bait/</id>
    <updated>2026-10-05T00:45:00.000Z</updated>
    <summary>Snake, but you&#39;re the mouse. Every step you take, the snake takes one. Lure it close and make it bite itself.</summary>
    <content type="html">&lt;p&gt;Snake Bait is my own idea: Nokia Snake, played from the other side. You&amp;#39;re the mouse. Every swipe moves you one
square, and then the snake moves one square. You can&amp;#39;t outrun it, so the only way to win is to trick it into
biting its own body. It grows each time it ends a move right next to you, so playing close is how you tie it in
a knot.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/snake-bait/_media/snake-bait-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Making the snake trappable took three rounds. A snake that steers around its own body can never be caught, so
these snakes watch the walls and you, but never themselves. Each turn they close the bigger gap to their target
first. That made a kill possible, but my playtests said it was still far too hard, and the reason turned out to
be grid parity. A snake that moves exactly as fast as you keeps the same even distance from you forever. It
never ends up next to you without catching you, so you can never slip around it. Now the first snake naps every
fourth turn (a gold zZ over its head warns you), which gives you the free step you need. You also get three
mice, so one bad swipe doesn&amp;#39;t end the run.&lt;/p&gt;
&lt;p&gt;Each day&amp;#39;s date seeds the walls, the hatching spots, the cheese and the snake&amp;#39;s brain (The Glutton chases you;
The Ambusher heads for where you&amp;#39;re going). The board marks the step that makes the snake bite itself with a
gold ★ and the steps where it catches you with a red ✕, and the tip it teaches is &amp;quot;chase its tail&amp;quot;.&lt;/p&gt;
&lt;p&gt;The simulation is pure and deterministic, so I tuned the difficulty with bot players instead of guessing: a
careless player kills a snake in about two runs out of three, a tail-chaser in every run, and a player who
thinks two steps ahead lasts about eleven snakes. The promo above is a real run on board #34, played by the
tail-chasing bot and rendered frame by frame. It&amp;#39;s plain JavaScript and canvas, and every sound is synthesized.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Slow Fu 3D</title>
    <link href="https://wefav.com/notes/slow-fu-3d/"/>
    <id>https://wefav.com/notes/slow-fu-3d/</id>
    <updated>2026-10-04T02:00:00.000Z</updated>
    <summary>A 3D ragdoll fight at 1/20 speed. You drag fists and feet that carry real momentum, and nothing keeps you standing but you.</summary>
    <content type="html">&lt;p&gt;After &lt;a href=&quot;/slow-fu/&quot;&gt;Slow Fu&lt;/a&gt;, my friend &lt;a href=&quot;https://github.com/amoffat&quot;&gt;Andrew Moffat&lt;/a&gt; sent a spec for the version he
actually had in mind: a 3D, QWOP-like UFC fight. Time runs at about a twentieth of real speed. You click and drag
body parts that carry real mass and momentum, so a fist at full speed is hard to stop. Nothing stands your fighter
up, joints only bend the way they should, hard hits break bones, and when it&amp;#39;s over you watch the fight at 1×.
Slow Fu 3D is that game, as a separate thing from the easy 2D one.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/slow-fu-3d/_media/slow-fu-3d-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;The interesting part was making muscles honest. My first version held each limb relative to a frame on the torso.
That looked fine, but such springs can push the whole body around, so a leaning fighter quietly stood itself back
up. In the version that shipped, every muscle is a spring between two points on the body: a part and an anchor on
its parent, like a truss. Equal and opposite pulls along a line can hold a pose, but they can&amp;#39;t move or rotate the
body as a whole, so a still fighter is a statue that slowly tips over. The torso needed two extra internal points,
at the upper back and the sacrum, because a skeleton whose points all sit in one plane can&amp;#39;t resist bending
forward. When you release a drag, your new pose becomes the pose the muscles hold. Overloaded muscles give way,
which is how a hard hit turns into a stumble.&lt;/p&gt;
&lt;p&gt;Dragging a part pushes it toward your finger with a capped force, and the reaction lands on the limb&amp;#39;s root, or on
your planted feet if you move your hips. A big punch twists your torso back, and with no foot on the ground you
can&amp;#39;t move your trunk at all. Hits are capsule-on-capsule impulses: head impulses add up to a knockout, limb
impulses break bones, and a kicked leg gets weaker, so standing gets harder. Over the opponent, a dragged fist aims
at the body part under your finger, so depth isn&amp;#39;t a guessing game on a phone. There&amp;#39;s a &amp;quot;balance help&amp;quot; setting
for anyone who wants to fight rather than stand; Off is Andrew&amp;#39;s pure version. The replay records itself into a
vertical clip, and the promo above is a real, seeded fight between a bot and the sparring dummy, rendered frame by
frame with the game&amp;#39;s own three.js views.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update (Oct 4):&lt;/strong&gt; the arena got a neon makeover (bloom, rim lights, lasers, hit flashes and sparks), and the
capsule mannequins became real fighters: Quaternius&amp;#39;s CC0 &lt;em&gt;Superhero&lt;/em&gt; model, whose skeleton is aimed along the
physics particles every frame. Elbow and knee roll comes from the plane each joint bends in. The mannequins are
still one tap away in the menu.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update (later on Oct 4):&lt;/strong&gt; human joint limits (shoulders, hips, spine, neck, ankles; elbows and knees capped at
150° of fold; no limbs through your own body), which also made the fighters much steadier. And reflexes borrowed
from the idea behind GTA&amp;#39;s Euphoria: fighters step to catch their balance instead of sliding, brace their hands
when they fall, cover up when rocked, and the sparring dummy blocks and slips. They&amp;#39;re all physics drags, not
animations, and the pure &amp;quot;Off&amp;quot; mode has none of them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update (evening, Oct 4):&lt;/strong&gt; kicks actually work now. Holding a leg relaxes its hip muscles so the whole leg can
swing, kicks aimed high chamber the knee first, and the hips shift over the standing foot. There&amp;#39;s a new
&amp;quot;Fights&amp;quot; opponent that punches, hooks and kicks back, and your own fighter tucks its chin and blocks on Light.
I played out a few dozen fights with a simulated player to tune it: on Light, a fight takes a minute or two of
real time. The new promo is a fight where a leg kick snaps the thigh before the knockout.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Slow Fu</title>
    <link href="https://wefav.com/notes/slow-fu/"/>
    <id>https://wefav.com/notes/slow-fu/</id>
    <updated>2026-10-03T21:00:00.000Z</updated>
    <summary>A fighting game played in slow motion. You drag fists and feet at 1/10 speed, then watch it at full speed.</summary>
    <content type="html">&lt;p&gt;Slow Fu is my friend &lt;a href=&quot;https://github.com/amoffat&quot;&gt;Andrew Moffat&lt;/a&gt;&amp;#39;s idea: a ragdoll fighting game with no
animations at all. You click and drag your fighter&amp;#39;s body parts, and physics does the rest. Time runs at a tenth
of normal speed while you fight. When the fight is over you watch it at 1×, and a minute of fumbling turns into
five seconds that look like a choreographed kung fu fight.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/slow-fu/_media/slow-fu-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Each fighter is eleven Verlet particles joined by bones. &amp;quot;Muscles&amp;quot; are springs that pull every part back toward
a guard stance, which is the only reason anyone stays standing. When you drag a part, its muscle hands over to a
stiff spring toward your finger, capped by how strong that part is. A fist can whip to 10 m/s, but the hips are
heavy, and dragging a fist far enough pulls the shoulders into the punch. Damage grows with the square of the
impact speed and depends on where it lands. A fist that hits an arm counts as blocked. The opponents fight with
the same tool: their AI drags one body part at a time toward a target, at its own speed. There are six of them,
from a training dummy to Grandmaster Slow.&lt;/p&gt;
&lt;p&gt;The tricky part was the balance between the two clocks. At 1/10 speed you have ten times longer to react than
your opponent, so the AI has to be very fast in game time, or it feels like punching a statue. The fights end up
lasting five to eight seconds of game time, which is about a minute of play, and that&amp;#39;s the length of the replay.&lt;/p&gt;
&lt;p&gt;While the replay plays, the game records it into a vertical video with sound (MediaRecorder on a second canvas),
so the results screen has a Share clip button. The simulation is deterministic, so the promo above is rendered
frame by frame from real AI-vs-AI fights, searched by seed for good knockouts. It&amp;#39;s plain JavaScript and canvas,
with every sound synthesized. In slow motion the sounds play deep and stretched, and in the replay at real pitch.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Hue Cell</title>
    <link href="https://wefav.com/notes/hue-cell/"/>
    <id>https://wefav.com/notes/hue-cell/</id>
    <updated>2026-10-03T06:30:00.000Z</updated>
    <summary>A daily color solitaire. It plays like FreeCell, but the cards are paint chips, and it&#39;s scored like golf.</summary>
    <content type="html">&lt;p&gt;Hue Cell is a FreeCell-style solitaire played with paint chips instead of cards. There are four color families,
two warm and two cool, and each runs through nine shades from pale to deep. You stack a chip on one a shade
deeper from the other side, warm on cool or cool on warm, the way cards alternate red and black. You fill four
strips from lightest to deepest, so a won game ends as four finished gradients.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/hue-cell/_media/hue-cell-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#39;s a daily game, like &lt;a href=&quot;/mob-day/&quot;&gt;Mob.day&lt;/a&gt; and &lt;a href=&quot;/case-the-joint/&quot;&gt;Case the Joint&lt;/a&gt;, and everyone gets the same
deal. Nearly every FreeCell deal can be won, so winning isn&amp;#39;t the score. The score is how few moves you needed.
A solver finds each day&amp;#39;s shortest solution, and it&amp;#39;s fast enough to run in the browser: about a tenth of a
second for the daily board. Par is that perfect line plus two, so birdies and eagles exist, and matching the
solver earns a 💎 Perfect. Moves to the strips are free and so is undo, but your first finish is your score. The
free cells shrink through the week, four on Monday down to one on Sunday.&lt;/p&gt;
&lt;p&gt;When you finish, the solver replays your game and finds the moves where you lost strokes. They show as a row of
squares: blue for a move that kept pace with the perfect line, orange for one that didn&amp;#39;t. That row is also the
share line, so it says how you played without giving away the deal. Then you can watch the perfect line play out
on the board.&lt;/p&gt;
&lt;p&gt;There&amp;#39;s a harder &lt;strong&gt;Color only&lt;/strong&gt; mode that hides the numbers and symbols, so you judge every shade by eye. There
are eleven palettes, and a choice of how warm and cool chips are marked. &amp;quot;Warm&amp;quot; and &amp;quot;cool&amp;quot; turned out to be hard
to keep in your head mid-game, so by default warm chips sit on cream card and cool chips on charcoal, which makes
the alternation as easy to see as red and black. It&amp;#39;s plain HTML, CSS and JavaScript with no libraries. The colors
are defined in OKLCH, so every shade is equally dark in every palette, and they&amp;#39;re fitted to what a screen can
show. The promo is rendered from the real game: one day&amp;#39;s deal played along its 12-move perfect line, with every
chip playing its shade&amp;#39;s note.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Case the Joint</title>
    <link href="https://wefav.com/notes/case-the-joint/"/>
    <id>https://wefav.com/notes/case-the-joint/</id>
    <updated>2026-09-30T20:30:00.000Z</updated>
    <summary>A daily heist puzzle. It&#39;s Minesweeper, but the mines are guards, and you&#39;re the burglar.</summary>
    <content type="html">&lt;p&gt;Case the Joint is Minesweeper turned into a heist. You get the building&amp;#39;s blueprints (the walls, the doors, the
floors, where the loot is and where the windows are) but not the guard roster. Every tile you step on shows how
many guards are posted around it, just like Minesweeper&amp;#39;s numbers. Step on a guard and you&amp;#39;re caught. Grab the loot,
then slip out a window. The door you came in by is being watched.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/case-the-joint/_media/case-the-joint-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;The heist adds three things Minesweeper doesn&amp;#39;t have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Knockouts replace flags.&lt;/strong&gt; You can tackle a tile. If a guard is there, you knock them out, and the numbers
around them drop straight away, so the building opens up. If nobody is there, you crash into the furniture.
Either way you&amp;#39;re never caught for it, but it makes noise.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Noise replaces lives.&lt;/strong&gt; Carpet and marble are silent, wood creaks a little, and the creaky boards drawn on the
blueprint are loud. At 16 the alarm goes off. That budget solves the thing Minesweeper players hate most: when
you hit a genuine 50/50, you don&amp;#39;t have to guess. You can pay noise to find out.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Some days have a patrol.&lt;/strong&gt; A guard with a flashlight walks the hallway, one step for every move you make. You
can see their route and where they&amp;#39;ll be next. Wait for them to pass, or sneak up behind them and take them down.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&amp;#39;s a daily game, like Wordle and &lt;a href=&quot;/mob-day/&quot;&gt;Mob.day&lt;/a&gt;. Everyone gets the same building, you get three attempts,
and your result is a share line that gives nothing away. Every day&amp;#39;s building is played first by a solver. It
lists every arrangement of guards that fits the numbers it can see, so a day only ships if it can be won by logic
alone, and the solver&amp;#39;s run sets par.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s plain 2D canvas with no libraries, and it plays on a phone or with a mouse and keyboard. The sounds are
synthesized. The promo is rendered from the real game: the solver plays a heist, and the promo opens on its
tensest moment before rewinding to the start.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Mob.day</title>
    <link href="https://wefav.com/notes/mob-day/"/>
    <id>https://wefav.com/notes/mob-day/</id>
    <updated>2026-09-29T03:00:00.000Z</updated>
    <summary>A daily game about crows. A hawk has landed in today&#39;s backyard; lead the murder and mob it out.</summary>
    <content type="html">&lt;p&gt;Mob.day starts from something real: crows ganging up on a hawk until it gives up and leaves. Every day there&amp;#39;s a
new backyard with a hawk in it, and you lead a murder of crows to drive it out. It&amp;#39;s side-on 3D, made with
three.js, and built for phones first. Drag to lead the flock, tap to caw, flick to dive.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/mob-day/_media/mob-day-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;It plays more like a puzzle than an action game, because the hawk is smart about where it looks. It turns to face
the biggest threat, and it only strikes forward, into a wedge that flares red as it winds up. Crows in front of it
barely bother it, and crows behind it wear it down. So the trick is to hold its gaze with your lead crow, just out
of reach, while the flock works round to its back. Then dive when it turns away. When its patience runs out it
flies to the next perch, away from the mob, and it gets angrier each time. Your nest is in one of the trees, and
if the hawk settles beside it, it raids the nest and the round is over.&lt;/p&gt;
&lt;p&gt;Like &lt;a href=&quot;/case-the-joint/&quot;&gt;Case the Joint&lt;/a&gt; and &lt;a href=&quot;/hue-cell/&quot;&gt;Hue Cell&lt;/a&gt;, it&amp;#39;s a daily game. Everyone gets the same yard,
hawk, flock and weather, all seeded from the date. You get three attempts, and the result is a share line that
gives nothing away. The hawk might be a red-tailed hawk, a Cooper&amp;#39;s hawk, or rarely a great horned owl at dawn or
dusk, and the flock runs from 6 to 24 crows. Bots play seeded rounds at three skill levels to check the balance, and a
button-masher never wins.&lt;/p&gt;
&lt;p&gt;Everything is made in code: the yard, the instanced crows with flapping wings, the hawk&amp;#39;s rig, and all the sounds,
from the caws to the Cooper&amp;#39;s cackle and the songbirds. The how-to-play guide is a set of short clips rendered
from scripted rounds of the real game, and so is the promo.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>One Must Imagine</title>
    <link href="https://wefav.com/notes/one-must-imagine/"/>
    <id>https://wefav.com/notes/one-must-imagine/</id>
    <updated>2026-09-28T09:16:00.000Z</updated>
    <summary>A punishing side-on physics climb through the myth of Sisyphus, where each thumb is a foot and the stone always comes back down.</summary>
    <content type="html">&lt;p&gt;One Must Imagine is the myth of Sisyphus as a rage game, in the spirit of Getting Over It. You push a lumpy
two-metre boulder up a mountain, one step at a time. There are no checkpoints. The stone settles on its flat faces
and lurches off them, scree slides out from under your feet, and when you finally reach the top the gods take it
back. The title only finishes its sentence at the summit. Every summit is counted, and each one makes you a
little stronger, up to a point. The first climb stays brutal. The mountain talks to you along the way, in a dry,
stoic voice.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/one-must-imagine/_media/one-must-imagine-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;You control each foot on its own: on a phone, your left thumb is the left foot and your right thumb the right.
Sisyphus is a rigid torso on &amp;quot;virtual legs&amp;quot; in planck.js. A planted foot holds him up and drives him forward along
the slope as the leg straightens. That push fades as he speeds up, the way a real muscle does. Each foot has a
friction limit that depends on the ground, so rock and dirt hold, while shoving too hard on scree makes your feet
go out from under you. His hands grip the stone with a spring that has only so much strength, and pushing drains
his stamina. Lifting a foot costs half your drive, so the whole game is choosing when to step: wait until the
stone is resting on a flat face or wedged against a lip, or it rolls back over you.&lt;/p&gt;
&lt;p&gt;It aims for realism, and everything is made in code with three.js. The rock and ground materials are procedural
shaders with strata, lichen and cracks. The sculpted figure is posed from the physics and gathers dust and sweat
as he tires. The view falls away down the mountain to the sea, and while you rest the camera drifts up the slope to
show what&amp;#39;s coming. The sound is all synthesized too: wind, footsteps and gravel by surface, the grinding roll of
the stone, and a breath and heartbeat that tell you, even on a phone, when to stop and rest. The promo is rendered
from the real game with an autopilot doing the climbing, and its soundtrack is built from the stone&amp;#39;s actual roll
and the actual scree slips logged during the render.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Pirate Pool</title>
    <link href="https://wefav.com/notes/pirate-pool/"/>
    <id>https://wefav.com/notes/pirate-pool/</id>
    <updated>2026-09-28T06:44:06.000Z</updated>
    <summary>Eight-ball in a pirate captain&#39;s cabin on a rolling ship, where the swell tilts the table and every shot bends.</summary>
    <content type="html">&lt;p&gt;Pirate Pool is eight-ball set in a captain&amp;#39;s cabin at sunset, on a ship riding the swell. The idea came out of a
list of &amp;quot;two games mashed together&amp;quot; pitches: billiards, but on a pirate ship. The twist does the work. The deck
rolls, so the table tilts, and every ball curves downhill. A straight shot on a heeling table misses, so the game
is as much about reading the sea as lining up the pot. You aim off and let the swell bring the ball home. Balls at
rest hold still until the deck heels far enough, then they creep. Every so often a bell rings and a rogue wave
throws the whole table sideways.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/pirate-pool/_media/pirate-pool-promo-vertical-web.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Because the ship&amp;#39;s motion is a fixed function of time, the game can show you the future. A swell forecast charts
the table&amp;#39;s tilt for the next ten seconds and marks when resting balls will start to slide, and a brass tilt
gauge shows which way the balls want to roll right now. The opponent, Cap&amp;#39;n Redbeard, uses the same trick: before
most shots he runs the real physics against the coming swell and corrects his aim. When he doesn&amp;#39;t bother, he
misses in rough seas just like you. The sea gets rougher with every shot.&lt;/p&gt;
&lt;p&gt;Everything is made in code with three.js: the cabin, the table, the wood and felt textures, and the sunset ocean
you see through the portholes and the stern windows. The sounds are synthesized too, from the ball clicks and
creaking timbers to the parrot in the eyepatch. It plays with a mouse or on a phone: drag to aim, and pull the
brass lever to strike. The promo is rendered from the real game, and its trick shots were found by searching that
physics for shots the swell curves into a pocket.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Inversion</title>
    <link href="https://wefav.com/notes/inversion/"/>
    <id>https://wefav.com/notes/inversion/</id>
    <updated>2026-09-27T23:32:24.000Z</updated>
    <summary>A puzzle platformer where one button flips the world inside out, from the globe to the hollow cell.</summary>
    <content type="html">&lt;p&gt;Inversion is a puzzle platformer set in the same hollow world as &lt;a href=&quot;/notes/hollow-light/&quot;&gt;Hollow Light&lt;/a&gt;. You walk
around a tiny planet. On the globe you stand on its outside, the way we normally picture a world. Press one button
and it turns inside out: now you&amp;#39;re standing on the inside of the shell, the sky is a blue bowl over your head, and
the stars are a marble at the centre.&lt;/p&gt;
&lt;p&gt;The two views are the same world under sphere inversion, the map that Hollow Light&amp;#39;s bent light is built on. The
ground stays put and everything above it changes size. A cliff too tall to climb on the globe becomes a short
flight of steps in the cell, and a gap no one could jump closes up near the core. The other way round, a hut too
small to squeeze into in the cell is roomy on the globe, and a star shard floating light-years out in space sits
right next to the core. You stay the same size in both, so every level is about choosing which world to be in for
each step. By the end you&amp;#39;re flipping in mid-air to dive through a door, and ducking a sun that circles the core
by flipping to the globe, where you&amp;#39;re small enough for it to pass overhead.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/inversion/_media/promo-vertical.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Under the hood every piece of rock is a polar sector, and inversion maps sectors to sectors, so the collisions are
exact in both worlds. The flip animation bends the world through flat: the ground&amp;#39;s curvature slides from the
globe&amp;#39;s to the cell&amp;#39;s while every height slides between its two values. There are ten levels, and each one ships
with a scripted solution that a headless checker plays through. The promo above is rendered from those same
scripts, frame by frame, with a synthesized soundtrack.&lt;/p&gt;
&lt;p&gt;It sits alongside &lt;a href=&quot;/notes/hollow-golf/&quot;&gt;Hollow Golf&lt;/a&gt; (mini golf on the inside of the world) and
&lt;a href=&quot;/notes/lightbender/&quot;&gt;Lightbender&lt;/a&gt; (a light-bending puzzle game).&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Lightbender</title>
    <link href="https://wefav.com/notes/lightbender/"/>
    <id>https://wefav.com/notes/lightbender/</id>
    <updated>2026-09-27T08:18:20.000Z</updated>
    <summary>A light-bending puzzle game inside the hollow world. You can&#39;t move the world, only how light curves.</summary>
    <content type="html">&lt;p&gt;Lightbender is a puzzle game set in the same hollow world as &lt;a href=&quot;/notes/hollow-light/&quot;&gt;Hollow Light&lt;/a&gt;, drawn as a
slice through the cell: the rim is the ground, the Sun floats inside, and light curves toward the middle. You
can&amp;#39;t move the world. You can only change how the light bends, with a dial for the bend itself and a handful of
tools: lenses that pull or push light, mirrors, shades, and patches of hot ground that throw up a mirage.&lt;/p&gt;
&lt;p&gt;Each level asks for light in some places and darkness in others: a village that needs the sunrise, a dragon that
must stay asleep in the dark, two towers that have to see each other across the world. Later worlds make the Sun
move through the day, give it Cyrus Teed&amp;#39;s one-sided face, or send a moon across to cast an eclipse. There are 17
levels, and every one is checked by a solver so the three-star target is always reachable.&lt;/p&gt;
&lt;p&gt;The demo above is a real play-through of four levels, recorded in Chrome.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Hollow Golf</title>
    <link href="https://wefav.com/notes/hollow-golf/"/>
    <id>https://wefav.com/notes/hollow-golf/</id>
    <updated>2026-09-27T08:18:10.000Z</updated>
    <summary>Mini golf on the inside of a hollow world, where gravity pulls outward and every fairway curves up.</summary>
    <content type="html">&lt;p&gt;Hollow Golf takes the world from &lt;a href=&quot;/notes/hollow-light/&quot;&gt;Hollow Light&lt;/a&gt; and puts a mini golf course on the inside
of it. Gravity pulls &lt;em&gt;out&lt;/em&gt;, toward the ground under your feet, so every fairway curves up into the sky, the Sun
hangs in the middle, and the far side of the course is over your head. Nine holes across four themed worlds: a
garden, a glacier, rooftops, and floating islands around a crystal star core. The last hole&amp;#39;s green is on the
other side of the world, and the only way there is over the Sun.&lt;/p&gt;
&lt;p&gt;Drag back from the ball to aim and shoot; putter, wedge and a &amp;quot;sky driver&amp;quot; that lofts the ball across the middle
of the world. It&amp;#39;s three.js with a fixed-step 240 Hz physics sim on the sphere, so shots are deterministic. The
promo below uses real shots found by a search script, including the hole-in-one on hole 9, rendered frame by
frame from the game&amp;#39;s own engine.&lt;/p&gt;
&lt;p&gt;&lt;video src=&quot;/hollow-golf/_media/promo-vertical.mp4&quot; controls playsinline preload=&quot;metadata&quot; style=&quot;display:block;width:100%;max-width:360px;margin:24px auto;border-radius:10px;background:#000&quot;&gt;&lt;/video&gt;&lt;/p&gt;
</content>
  </entry>
</feed>
