triptych

Building fun experiences for the web

Game 063 in the collection is Tee & Sorcery. It's golf, but every hole is a little adventure: you level up, buy better clubs, cast spells on your ball, and at the end of each realm you play a boss hole where the cup stays sealed until you've beaten the boss with your golf ball.

In the kingdom of Fairhaven, every argument (border quarrels, inheritance, who gets the last scone) is settled with a round of golf. At the heart of the Royal Clubhouse sits the Golden Tee, the peg the first shot of the world was struck from. Then Lord Bogey, a sorcerer who has never once made par, crashes the festival, shatters the Tee into five shards and curses every hole in the land. “If I can never make par, then NOBODY shall!”

You play Pip, a caddie who has never played a real round, and who trips over an old sand wedge stuck in a rock while running away. Pip pulls it free. It complains.

Like every game here, it uses no asset files. Every character, face, course, texture and note of music is made in code. It's built with three.js and plays on a phone as well as on a desktop.


A talking wedge

The wedge is Wedgewick the Wise, formerly Archmage of the Greens, who has been stuck in a club for 300 years after losing a bet. “Long story. Bad lie.” He's your mentor, your spellbook and your running commentary for the whole quest, and he does most of the teaching:

Next stop, the Sandsea Dunes. Pack sunscreen. I burn easily. I am made of metal.

The story is nine short scenes, two to eight lines each, typed out with a voice blip pitched to each speaker and a portrait rendered from the 3D character. You can skip any of them. The tone is Saturday-morning cartoon: nothing is scary, nobody dies, and every boss is grumpy and then sorry.

The golf has to work on its own

The first rule I set was that if you stripped out all the RPG parts, it should still be a nice little golf game. So every shot is real 3D golf:

  • Aim left or right, and pick from four clubs: Driver, Iron, Wedge and Putter. The game picks one for you based on distance and lie, and switches to the putter on the green.
  • A dotted arc of glowing orbs shows where a full-power, perfect shot would go, with tick marks for 25, 50 and 75% power. Wind isn't in the preview. Reading the flag is your job.
  • The swing meter takes three presses: one to start, one to set power, and one to stop the marker in the sweet spot on the way back. Hit the glowing zone for a PERFECT strike, which flies straight and a little further. Early or late and the ball hooks or slices by how much you missed.

Under that is a physics simulation that runs at 240 steps a second. The ground is a heightfield, and the ball bounces or rolls on it with different friction for each surface. A ball rolling over a crest can take off again. Tree trunks, windmill blades and walls are solid, but tree canopies are soft and just soak up speed. Each club has backspin that bites on the first landing, so drives run out and wedges stop.

The cup can lip out. Come in too fast and the ball rattles round the edge and keeps going, which is exactly as annoying as it should be.

Twenty holes, five realms

There are five realms with four holes each: three regular holes and a boss hole. I wanted every realm to play differently, not just look different:

RealmWhat's differentMeadowmereA turning windmill in the fairway, spring mushrooms that bounce the ball, pondsSandsea DunesSand everywhere, quicksand that stops the ball dead, an island green, a pyramid, strong windFrostpeakSheet ice where the ball barely stops, snowdrifts where it barely starts, a frozen lake with holes in itCinder CalderaLava rivers and geysers that fling the ball into the sky on a rhythmSky CitadelFloating islands over nothing, bouncy clouds, a teleport rune and low gravity

Some of my favourite hole names are Sheepish Start, Quicksand Gulch, Icicle Run, Avalanche Ridge and Starfall Stair. As Wedgewick says about the Caldera: “Lava is a hazard, like water but rude.”

Each hole gets one to three stars: one for finishing, two for par or better, three for under par. If you go past the stroke limit, the curse wins and you can retry. That's the only way to fail.

Boss holes

At the end of each realm the cup sits under a shimmering Bogey Seal. To break it you have to hit the boss's weak spot with your ball, and the boss gets a turn after every one of your shots.

BossHow it plays

Grubbins the Gopher King

Pops up from one of six molehills round the green, then burrows somewhere else. He'll kick your ball away if it stops near him.

Duneborn

A sandworm coiled round the green. Only the head takes damage; the coils bounce your ball away.

Big Frosty

A yeti on an icy throne behind three ice walls. He throws snowballs that bury your ball in a drift.

Double Bogey

A two-headed magma ogre on a ledge behind a lava moat, so you need loft. His stomp shoves your ball away.

Lord Bogey

Floats round the green behind two orbiting shield orbs and teleports after each shot.

Triple Bogey

Bogey's final form: a three-headed dragon. The fire head leaves a fire patch, the frost head an ice patch, and the storm head changes the wind.

The bosses were the most fun to write dialogue for. Grubbins was promised all the golf balls he could eat, and after you beat him he admits: “Golf balls are actually very hard to chew.” Big Frosty turns out to be lonely because nobody ever asks him to play. Double Bogey's heads can't agree on anything, including whether to fight you:

LEFT HEAD: We crush the tiny golfer! RIGHT HEAD: We could also just… let them through? I am tired.

And at the top of the Sky Citadel, Wedgewick recognises Lord Bogey. He's Bogart, Wedgewick's old apprentice, who took a fourteen on the first hole 300 years ago and ran off when everyone laughed.

The RPG part

The RPG layer is there to make the golf richer, not slower. A hole still takes two to five minutes.

You earn XP by finishing holes (more for being under par) and by bonking monsters with your ball: Puffslimes in the meadow, scarabs in the dunes, penguins on the mountain, ember imps in the caldera and Bogey wisps in the sky. Each level gives you two points to spend on four stats:

  • Power makes the ball go further.
  • Control slows the swing meter, shows more of the preview arc, and softens hooks and slices.
  • Luck widens the PERFECT zone, adds a bit of gold, and sometimes gives you a lucky bounce off a tree.
  • Magic gives you more MP for spells.

Gold comes from coins and gems on the course and from finishing bonuses, and you spend it at Old Man Eagle's Pro Shop in the Clubhouse. There are six club sets (from Willow Woods up to Dragonbone, plus Starforged after the ending), six balls and six charms. The balls are my favourite: the Feather ball ignores most of the wind, the Slime ball bounces more, the Iron Heart hits bosses harder, and the Comet leaves a trail.

Spells come back to Wedgewick one at a time, as you recover each shard:

SpellWhat it does to your next shot

Mulligan

Rewinds your last shot and gives the stroke back

Gust Ward

No wind, no hook, no slice

Fireball

Burns through trees, brambles and ice walls, and does double damage to bosses

Frost Step

Freezes water and lava under the ball so it skates across

Seeker

The ball curves toward the cup near the end

Each one changes what a good shot is. Frost Step means a lake is suddenly a shortcut, and Fireball lets you go straight through a wood instead of round it. There are also power-up crystals on the course that give you a Rocket Tee, a Sticky Ball, a Spring Ball or a Ghost Ball that passes through everything.

A storybook look

The characters are chibis with huge heads, built from simple shapes with toon shading and ink outlines. Their faces are painted onto a canvas in code, with eyes, highlights, brows, a mouth and blush, and they switch between happy, surprised, angry, sad and blinking. There are no animation files: everyone bobs, walks, swings, cheers and slumps procedurally.

The courses use one terrain shader per hole. It's driven by a surface mask built from the same shapes the physics uses, so what you see is exactly what the ball feels. Fairways get mown stripes, greens get a fine checkerboard, sand gets wind ripples, ice gets cracks and quicksand swirls. Ink lines where surfaces meet make the edges read like an illustration in a picture book.

Water has foam at the shore and moving ripples. Lava glows and has a cracked crust that drifts. In the Sky Citadel, the void shows the sky through it with clouds drifting below the islands. Over all of it there's a little bloom on magic and lava and a warm storybook colour grade with faint paper grain.

Between holes you walk Pip round a floating-island world map, with the five realms circling a central mountain and the Sky Citadel above. A tilt-shift blur makes it look like a miniature diorama.

A few things are there just to make shots easy to read: a shadow under the ball at all times so you can tell how high it is, a glowing trail coloured by your spell, and a pulsing ring where the ball is going to land.

The sound

All the sound is Web Audio, with no audio files. Each realm has its own short theme with its own instruments: flute and pizzicato in Meadowmere, oud-like plucks and a hand drum in the dunes, celesta and bells on Frostpeak, low brass and taiko in the Caldera, and harp and a choir pad in the sky. Bosses get faster, minor-key versions, and there's a march for the map and a cosy waltz for the Clubhouse.

The effects cover a swing whoosh, a different contact sound for each club, a chime for PERFECT strikes, bounces for each surface, the cup rattle and drop, splashes, lava hiss, coins, monster poofs, boss roars, the seal shattering and a level-up fanfare.

On a phone

On a desktop you aim with the arrow keys or A and D (Shift for fine aim), change clubs with up and down, and swing with Space. Number keys cast spells, Q opens your item pouch and V shows the whole hole from above.

On a phone you drag anywhere to aim and tap a big SWING button three times. The spell and item buttons sit in the bottom-left. Every button is at least 44 pixels so your thumb can hit it, and it works in portrait and landscape. There's also a Gentle swing setting that slows the meter and widens the PERFECT zone, for younger players.

What the bot found

As with the other recent games, the dev/ folder has test harnesses, and the most useful one was a bot that plays golf.

simtest.mjs checks that the simulation is pure (no three.js, no DOM and no Math.random) and deterministic, fires random shots from random spots on every hole to make sure the ball never goes through the ground or gets stuck in a tree, and checks every boss can be beaten through the real hit path. Then two bots play all twenty holes: a search bot with perfect timing has to make par or better on every hole, and a noisy bot with human-like timing errors has to finish every hole inside the stroke limit. The pars in the game were set from those bots.

Watching the bots play found a lot of problems I wouldn't have spotted by hand:

  • Drives rolled 85 yards. The ball kept all its flight speed when it landed. That's where the per-club backspin came from.
  • The cup was far too big. The bot was chipping in from 100 yards. It shrank, and so did the speed a ball can drop in at.
  • The noisy bot kept hooking into the woods. It planned for perfect shots and then missed. Now it checks every shot it's thinking about against a hook, a slice, a fat and a thin strike, and picks one that's safe if it goes wrong.
  • The sandworm couldn't be hit from more than six yards, because it kept moving while you aimed. Now it holds still while you line up and moves on its own turn.
  • Beating Lord Bogey looked like losing. His health resets when he becomes Triple Bogey, so the bot saw the winning hit as negative damage and never took it. Boss progress now counts across both forms.
  • Late-game Power turned par 5s into par 3s. Each point of Power now adds half as much speed as it used to.

browsertest.mjs then plays the game in real Chromium: it makes a hero, skips the prologue, walks the map, swings with real key presses, uses a Mulligan, holes out, goes shopping, reloads and continues, and hits a boss. Then it does the same on touch-only phones in portrait and landscape, checks that every control is big enough and nothing overlaps, and fails on any console error.

The whole game is about 8,000 lines of plain JavaScript modules with no build step.

Play it

Play Tee & Sorcery, or find its statue in the Garden of Games with the rest of the collection. If you want to see how it's built, the design doc covers everything from the physics to the boss turns.

As Pip tells Lord Bogey near the end: “Golf is not about the score. It is about the walk, and the friends, and the one good shot that brings you back.”

Grab your wedge. Mind the lava. Have fun!

By Andrew Wooldridge

Game 062 in the collection is Rotten to the Core. It's Diablo with the tone turned all the way to silly: you're a piece of fruit with a butter knife, the monsters are rotten fruit and their pests, and the loot is kitchenware.

Something rotten has crawled up from under the village of Tristrawberry. You grow a fruit hero, head down the cellar stairs and squash your way through twelve procedurally generated levels to Durian the Diabolical, the stinkiest thing in the Great Orchard.

Like every game here, it uses no asset files. Every fruit, monster, dungeon, texture and note of music is made in code. It's built with three.js and plays on a phone as well as on a desktop.


The Diablo loop, but juicier

The structure will feel familiar to anyone who has played Diablo: town, dungeon, loot, back to town. What changes is the vocabulary:

  • Health is Freshness, and mana is Juice. They sit in two glass globes at the bottom of the screen, with a sloshing wave on top.
  • Gold is Sugar.
  • Town portals are Portal Pies.
  • Your health potion is Strawberry Jam and your mana potion is Orange Juice.
  • Everything that dies bursts into juice, and the splats stay on the floor.

That last one does a lot of work. By the end of a big fight the floor is painted in grape purple, tomato red and lemon yellow, so you can see where the fight went.

Grow a hero

The character creator lets you pick from sixteen kinds of fruit, eight colourways, six eyes, six mouths and twelve hats, with a live 3D preview standing in town. Then you choose one of three classes:

ClassMain statSkillsMelon Knight CrunchSlice, Rind Bash, Big Slice, Juice Up!, Pit Leap, Blender

Seed Ranger ZipSeed Shot, Pomegranate Pop, Pip Spray, Somersault, Peel Trap, Raisin Rain

Citromancer ZestZest Bolt, Caramelize, Brain Freeze, Chain Lime-ning, Peel-port, Melon Meteor

That's eighteen skills, and I'm still proud of “Chain Lime-ning”. Like Diablo III, every skill scales from your weapon's damage, so finding a better bread knife makes your fireballs better too. You get one skill point per level, skills rank up to 20, and any skill you've learned can go on any button. The fourth attribute, Pulp, is your health.

Kitchenware with affixes

Loot comes in four rarities: Common, Juicy (magic), Ripe (rare, with a random name) and Golden (uniques). Weapons climb through tiers like Butter Knife → Bread Knife → Santoku → Obsidian Peeler, and shields go from Pot Lid to Wok to Cauldron Lid. Armour includes Tea Cozies, Cork Boots and Wicker Basket Mail.

The fourteen Golden uniques were the most fun part to write:

  • The Big Squeeze, a cleaver
  • Grandma's Rolling Pin
  • Melon Collie, a candy necklace
  • Fresh Prince of Bel-Pear, body armour
  • Oven Mitts of Fury
  • The Wok Lord, a pie-tin shield
  • Kiwirt's Spare Leg, a baguette you get from a quest (more on that below)

Ripe and Golden items drop unidentified, and you take them to Deckard Cane to find out what they are. There's a nine-slot paper doll, a 40-slot backpack, a 60-slot stash and comparison tooltips. Drops lean towards your class, so a Citromancer finds mostly wands and orbs.

Three acts, one generator

The dungeon is twelve levels in three acts, with a boss at the bottom of each one:

  • The Root Cellar: rectangular rooms, corridors and pillar halls. “The cellar smells… fermented.”
  • The Jam Catacombs: rounded rooms and sticky jam pools that halve your speed. “The jam down here has opinions.”
  • The Rotten Core: blobby caves, wandering tunnels and lakes of boiling fruit punch.

It's one generator with three looks. Rooms are joined by a minimum spanning tree plus about a quarter more connections, so the levels have loops instead of being one long branch. The entrance goes in the room farthest from the boss arena, and every level is flood-filled to make sure you can reach all of it. If a crate or barrel would seal off part of the floor, it gets removed, and if the level fails the checks, it's thrown away and generated again.

Each level is filled with crates, jam jars, cider barrels, exploding soda kegs, picnic-basket chests, Smoothie Shrines, monster packs, quest objects, and the occasional pie that turns out to be a mimic.

The rotten menagerie

There are fourteen monster types, and each one has its own brain:

  • Moldy Grapes shamble towards you with their arms out, like zombies.
  • Fruit Flies swarm.
  • Banana Peeltons are bony peels, and Peelton Pitchers throw peels like boomerangs.
  • Apple Worms in bowler hats burrow underground and pop up next to you.
  • Eggplant Shamans heal their friends and bring them back from the dead, so you learn to kill them first.
  • Rotten Tomatoes run at you and burst.
  • Sour Lemons leave acid puddles, and Prickly Pears are needle turrets.
  • Coconut Crabs are armoured and charge.
  • Jack o' Lanterns throw fireballs and blink away when you get close.
  • Chili Imps explode when they die, and Durian Brutes slam the ground and leave stink clouds.

Champions and named uniques come with elite affixes like Extra Juicy, Speedy, Spicy, Frosty, Stinky and Bouncy. Every attack has a windup, and the big ones show a red circle on the floor before they land, so if you get hit, it's usually because you didn't move.

The three bosses each get an act:

ActBoss1 · The Root Cellar

The Juicer (“Ahh… FRESH FRUIT!”) charges and sprays juice, then calls in grapes at half health2 · The Jam Catacombs

Mangophisto, Lord of Chutney floats, lobs chutney, rains fire and summons Chili Imps over three phases3 · The Rotten Core

Durian the Diabolical slams, sprays spikes, fills the arena with stink, and fires a huge stink nova you have to walk out of

Beat Durian and you unlock Overripe difficulty, and after that Rotten, with tougher monsters and better loot.

Tristrawberry

The town is where most of the jokes live. You'll meet:

  • Deckard Cane, a candy cane elder who identifies your items. “Stay a while and glisten!”
  • Granny Smith, who heals you and sells potions. “Back in my day we fought rot with a spoon.”
  • Grapeswold, the blacksmith. “I forge kitchenware. For WAR.”
  • Olivia, the oracle, who sells magic goods and pies. “The olives told me you would come.”
  • Kiwirt, a shady kiwi on a toothpick leg who sells mystery smoothies (that's the gambling). “Don't look at the leg. Everyone looks at the leg.”

Each of them talks in Animal Crossing-style gibberish pitched to their character. There are six quests, including finding Granny's lost recipe book, bringing Grapeswold the fuzzy Anvil of Furry, and getting Kiwirt's spare leg back from the Toothpick Thief. When you return it, Kiwirt decides it's too sticky now and lets you keep it, which is how you end up hitting things with a baguette.

There's also a Wishing Well that works as a waypoint, so you don't have to walk all the way down every time.

Making fruit look good

Every character is built from lathe profiles, the same trick you'd use to turn a vase on a lathe. Each fruit gets a procedural skin: dimpled citrus, seeded strawberries, striped melons, diamond-patterned pineapples, fuzzy kiwis with a sheen, and mouldy versions for the rotten monsters. They have eyes with highlights that blink, mouths, blush, eyebrows, hats, and Rayman-style floating gloves and shoes.

There are no animation files. Everything is procedural: fruit squash when they're hit, bounce when they walk, wind up before they swing, wobble when they're stunned, and pop when they die.

The dungeons have a few tricks of their own:

  • Walls that stand between the camera and your hero are cut away in the vertex shader, so you never lose sight of yourself.
  • Fog of war is a texture with one pixel per tile, eased every frame. Places you've been fade to a cool, washed-out memory.
  • Your hero carries a warm light, and a pool of eight point lights gets reassigned every frame to the nearest torches, glowing mushrooms and explosions.
  • The boiling fruit punch in Act 3 has its own shader.
  • Each act gets its own colour grade, and the screen pulses when your Freshness gets low.

On phones the game starts at a lower quality setting, and on any device it drops a level automatically if frames get slow.

The sound

All the sound is Web Audio, with no audio files. Each area has its own generative score: a lute waltz in town, drones and drips in the cellar, sneaky pizzicato in the jam, toms and dark pads in the core, a driving boss track and a victory fanfare. The effects include squishes, splats, seed shots, freezes, zaps, meteors, chest opens and glass breaking. When you die, you get a sad trombone.

On a phone

On a desktop it plays like Diablo: click to move, click a monster to attack it until it pops, right-click or 1–4 for skills. WASD works too.

On a phone, you drag on the left side of the screen to walk and tap the ground or a monster to act. A big ⚔️ button attacks the nearest enemy, and the round skill buttons aim themselves. If there's no enemy nearby, ⚔️ picks up the nearest loot or opens the nearest chest instead. Walking over an item also picks it up.

That last part came from a bug. In the first release, the invisible joystick area in the bottom-left corner sat on top of everything and swallowed every tap there, so you couldn't pick up loot that landed in that corner. Version 1.0.2 fixed it, and the phone test now taps a loot label inside the joystick area to make sure it stays fixed.

Tested by a bot

As with the other recent games, the dev/ folder has test harnesses:

  • simtest.mjs checks that the simulation is pure (no three.js, no DOM and no Math.random), generates 480 levels and checks each one, generates 6,000 items, tests every skill of every class, and then has a bot play each class from a brand-new hero all the way to Durian's death. The bot usually finishes in 33 to 55 simulated minutes, at level 23 to 28.
  • browsertest.mjs plays the game in real Chromium with real mouse clicks and key presses, then does the same on touch-only phones in portrait and landscape, and checks that every panel fits on the screen.

The whole game is about 9,000 lines of plain JavaScript modules with no build step.

Play it

Play Rotten to the Core, or find its statue in the Garden of Games with the rest of the collection. If you want to see how it's built, the design doc covers everything from the dungeon generator to the boss phases.

Grab a butter knife. Hold your nose. Have fun!

By Andrew Wooldridge

Game 060 in the collection is BRICKVADERS. The idea is simple: what if the aliens in Space Invaders were made of bricks, and your laser base was also a Breakout paddle?

It's 1983 and the Brick Armada is coming, an invasion fleet of aliens built out of living bricks, marching down on Earth in formation. Earth's last defence is the STRIKER, a ship that is half Breakout bat and half laser base. You bounce a plasma ball up into the formation to smash invaders and their brick armour, fire lasers between bounces, catch the capsules that fall out, and try to stop the Armada before it lands.

Like every game here, it uses no asset files. Every sprite, letter, explosion, backdrop and note of music is made in code. It's built with three.js and plays on a phone as well as on a desktop.


A cabinet in a dark arcade

The goal was for it to feel like a vertical monitor glowing in the corner of an arcade in 1983. The whole game is drawn into a 240 × 320 render target, the shape of a vertical arcade screen, then scaled up with nearest-neighbour sampling so the pixels stay chunky. On the way to your screen it goes through phosphor persistence (moving things leave a faint trail, like an old tube), bloom, and a CRT pass with curvature, scanlines, an aperture grille, a vignette and a little chromatic aberration. You can switch the CRT off if you prefer clean pixels.

The fun part is that every pixel is a real 3D cube. Invaders, bricks, the paddle, bullets, capsules, even the letters in the logo are instances of one InstancedMesh of boxes, lined up exactly on the 240 × 320 grid. The camera sits far back with a narrow field of view, so the flat playfield matches the pixel grid exactly, but anything with depth really is 3D.

That gives the game its look:

  • When you hit an invader, pixels break off and tumble toward the glass as cubes, growing in perspective. Killing it bursts the rest.
  • Each wave starts with the Armada's pixels flying in from all over the screen and snapping into formation.
  • Bigger boxes get a one-pixel bevel in the shader, so bricks look like bricks while single pixels stay flat.
  • Screen shakes roll the camera slightly, so for a moment you can see the sides of the voxels.

Behind the playfield, each of the five sectors has its own dim 3D backdrop: a lunar surface with Earth rising, a neon nebula, an asteroid belt, a synthwave sun over a grid, and finally the inside of the mothership. Even the HUD and menus are drawn in a hand-made 5 × 7 pixel font into the same low-res screen, so they glow and scanline like everything else.

The march is the music

My favourite detail is the sound. In Space Invaders the march speeds up as the aliens thin out. BRICKVADERS takes that literally: one beat of the music is one step of the formation. The simulation owns a beat clock and sends out timestamped beat events, and the Web Audio code schedules notes against the audio clock so they land sample-accurately.

Each beat plays the four-note march bassline, shifted into the current sector's chord, along with drums and a pulse-wave lead through a delay. Clear out the formation and the whole song speeds up with it. Brick hits play a rising pentatonic run, so a long chain of ball hits sounds like one melody.

Bosses, challenge stages, the title screen and the ending have their own songs on the same machinery, and there's a full set of generated sound effects, from the paddle blip (pitched by where the ball lands) to the warbling mystery-ship siren.

How it plays

The ball bounces Arkanoid-style: the angle depends on where it hits the paddle, and it speeds up a little with each hit. Your laser works like the original Space Invaders cannon, with one shot on screen at a time. Every hit the ball makes before it comes back to the paddle adds to your chain, and every five links add ×1 to your score multiplier, up to ×5.

The formation marches left and right and drops at each edge, the way you'd expect. If it reaches the ground, you lose a ship and it gets pushed back up. Mixed in with the invaders are bricks: rainbow bricks (it's Breakout, after all), silver bricks that crack, gold bricks only a fireball can break, TNT bricks that chain-react, and prize bricks that always drop a capsule.

There are nine kinds of invader, and the later ones change how you play:

  • MIRROR is made of crystal, so your lasers bounce off it and come back at you. Only the ball hurts it.
  • BUILDER lays new bricks in empty slots around it and repairs damaged ones.
  • DIVER breaks formation Galaga-style, loops down at you, and rejoins from the top.
  • CAPTOR dives to mid-screen and shines a tractor beam that steals your ball. Shoot it to free the ball, which comes back as a bonus extra ball.

Capsules work the way Arkanoid fans will expect: Laser, Expand, Catch, Multi-ball, Fireball, Slow, Barrier, Nova bomb and the rare 1UP. The Nova bomb wipes every enemy bullet off the screen and blasts everything. There's also a mystery ship that crosses the top of the screen, and yes, the old trick still works: your 23rd laser shot always scores the full 300.

Five sectors, five brick bosses

A loop is 24 stages: five sectors of three waves and a boss, with a challenge stage after the first four bosses.

SectorBoss1 · Lunar Outpost

King Krabbo, a giant crab of bricks with claw cannons2 · Neon Nebula

The Saucerator, a huge saucer with a spinning light ring and a death beam3 · Asteroid Alley

Rockjaw, an asteroid skull whose steel jaw opens and shuts over its core4 · Synth City

Phantom Queen, a flagship with a giant tractor beam and diver escorts5 · The Hive

The Overmind, a brain in a brick skull, in three phases

The bosses are big grids of cells, and you have to dig through them. There's armour to break, steel that won't break, gun ports that shoot until you knock them out, and a pulsing core that is the only thing that can kill the boss. Bosses rebuild armour around the core over time, so you have to keep at it. Breaking a cell sometimes cracks its neighbour, so tunnels open up. At a quarter of the core's health the boss hits CORE EXPOSED! and its hard armour crumbles for the finish.

The challenge stages are a nod to Galaga: five squadrons of eight invaders fly scripted loops without shooting back. You get rapid twin lasers and a ball that respawns for free. Hit all 40 for a PERFECT!! and 10,000 points.

Beat the Overmind and you get brick fireworks and credits, then Loop 2, where everything is tougher and faster, and it keeps going from there.

The arcade extras

I wanted the full cabinet experience, not just the game:

  • An attract mode that cycles title → “Meet the Armada” → capsule table → high scores → a demo where the bot plays an early stage. The logo is made of bricks that fly in and assemble, then a ghost ball knocks bricks out of it.
  • A coin-drop sound when you press start.
  • A high-score table with three-letter initials.
  • A CONTINUE? countdown from 9. Continues are unlimited, and the table records how many you used.
  • CADET mode for younger players (five ships, slower bullets, a free barrier every life) and ARCADE mode for the real thing.

On a phone

On a phone, the screen sits on top and an arcade control panel fills the space underneath: a ridged spinner pad you drag across, a big red FIRE button and a yellow BOMB button. Turn the phone sideways and the pad moves to the left with the buttons on the right. Dragging moves the paddle relative to where your finger started, so your finger never covers it. It also works with a keyboard, a mouse or a gamepad.

Tested by a bot

As with the other recent games, the dev/ folder has its own test harnesses:

  • simtest.mjs has the AI pilot clear every stage of two full loops headlessly in Node, on both difficulties, in about ten seconds. It fails on any exception, any NaN, or a ball that escapes the field.
  • browsertest.mjs drives the real game in Chromium: the attract mode, menus, a game over and initials entry, all 24 stages, the ending and Loop 2, then touch-only phones in portrait and landscape. It fails on any console error.

The same bot that runs the tests also plays the demo in the attract mode. The whole game is about 5,500 lines of plain JavaScript modules with no build step.

A note on the art

BRICKVADERS is a tribute to the genre, not a copy of any one game. Every alien, the mystery ship and the shields are original designs. The three basic grunts (GLOOP, a one-eyed goo blob; BUZZ, a shelled space beetle; and PEEPER, a bat-winged eyeball) replaced earlier sprites that looked too much like the classic octopus, crab and squid.

Play it

Play BRICKVADERS, or find its statue in the Garden of Games with the rest of the collection. If you want to see how it's built, the design doc covers everything from the voxel shader to the boss phases.

Insert coin. Have fun!

By Andrew Wooldridge

My latest game is a beat-'em-up. I grew up on Double Dragon, Streets of Rage and Turtles in Time, and I wanted to see whether that style could be rebuilt in three.js without a single sprite sheet.

Play Sister Circuit

The story

It's 2089 in Port Solace, a city of forty million owned outright by Aurex Dynamics. Juno Vega's little sister Mika is a gifted hacker, and Aurex has taken her. Her mind is the only one compatible with VANTA, the company's neural-link program. Juno breaks into an Aurex warehouse, steals the prototype VANTA-7 combat suit and starts fighting her way north to the Aurex Spire.

The suit talks. Its AI, ECHO, coaches Juno, teases her, and halfway up the city learns something about where it came from. I won't spoil it, but the last two boss fights aren't really about the corporation.

Pixel art, made in code

Like every game in the collection, this one has no image or audio files. The fighters start as a simple 2D skeleton: a pose is a dozen joint angles. A small rasterizer fills each limb pixel by pixel with an outline, three tones of shading and a little dithering, and the frames are baked into a texture when the game boots. Enemy colour variants, a boss's angry second phase and Juno's glowing Overdrive mode are all palette swaps on the GPU.

The streets are real 3D sets: rain-slicked storefronts, a maglev train, a lantern market, container docks, a bio-lab and a penthouse in a storm. They're drawn at 240 pixels tall and scaled up chunky, with a neon glow and optional scanlines. A separate skyline scene sits behind them for parallax.

How it plays

It has everything I remember from the arcade: four-hit combos, launchers and juggles, grabs with knees, throws and suplexes, enemies thrown into other enemies, and pipes and katanas lying in the street. The suit adds special moves and an Overdrive meter. There are seven stages and seven bosses, from a gang boss with hydraulic arms to a sword-wielding android with a counter stance. Between stages you spend the credits you've picked up on suit upgrades in a safehouse.

It plays on phones too, with a stick wherever your thumb lands plus four buttons, in portrait or landscape. Keyboard and gamepad also work.

Go get her back.

By Andrew Wooldridge

The collection just reached 58 games. Each new one gets a statue in the Garden of Games, the walkable three.js island that serves as the launcher. The newest games stand closest to the hub, so these ten are the first ones you'll pass.

This batch covers a lot of ground: a 100-floor roguelike, a match-3 RPG, a gacha battler, a night drive with no goal, a recreation of a classic browser RPG, a DOOM-like, a helicopter bullet-hell, a castle-defence game, a twin-stick bug shooter and a cosy fruit puzzle.

They all follow the same rules: no asset files, and every model, texture, icon and piece of music is made in code. Every game plays on a phone as well as on a desktop. Each one also has a dev/ folder where a bot plays the game headlessly to tune its difficulty, and a Playwright harness that runs it in real Chromium on desktop and on touch-only phones.

Here's a quick look at each one.


049 · Lanterndeep

Turn-based 3D roguelike · three.js

The lamps of Lastlight are going out. Your teacher Maren went down to tend the First Lantern a year ago and never came back. You take her spare lantern and go down the Hundred Stairs: 100 procedurally generated floors across ten worlds, among them a bioluminescent grotto, a drowned library, a dwarven forge split by lava, a clockwork machine and a vault among the stars.

The lantern is the main idea. It sets how far you can see, and it also works as your clock: it burns oil every turn, and when the oil runs out the Hush gathers. Every tenth floor holds a Warden, a multi-phase boss whose area attacks are marked on the grid before they land. You pick from three heroes, with procedural loot, 70 monster species and quests from wandering Wayfarers. Maren's ten journal pages are hidden along the way, and finding them unlocks the best of three endings.

The bot in dev/ plays all 100 floors with each hero to balance the difficulty.

050 · Tomebound

Match-3 fantasy RPG with an idle village · three.js

A smudge of living ink has scattered the thirteen greatest books of the Great Library of Lumenhall. You fight monsters Puzzle Quest-style on a shared 8×8 board of 3D gems. Matching gems gives you mana, damage, gold and XP, and every gem you take is one the monster can't have. Matches of four or five make Line gems, Bombs and Prisms. There are 19 spells, potions you brew yourself, and procedural gear.

Back home, a floating-island village rebuilds itself in real time, even while the game is closed, across 13 buildings. Each book you return grants a permanent bonus, and the Library heals as the books come home. Professor Hootsworth the owl keeps the story cheerful.

051 · Sigilborn

Gacha auto-battler with an idle citadel · three.js

Every hero in Sigilborn is procedurally generated: race, class, element, rarity, stat rolls with a grade, traits, a skill kit with generated names, a painted anime face and a chibi 3D body. One in fifty is a Radiant. Battles use Summoners War-style attack-bar turns, so speed is a stat you build up, and you can let them play out on auto or pick skills and targets yourself.

You play the Overlord, made in a deep character creator, and you have a lot to do: eight campaign regions with bosses, elemental Rifts, the roguelite Endless Spire and an Arena of rival Overlords. Between fights your floating citadel keeps working, with a Treasury, a mine you can dig in 3D, a real-time farm and kitchen, a forge, and expeditions. A progression bot plays three weeks of the game to tune the curve.

052 · Nightline

Lo-fi synthwave night-drive simulator · three.js

This one has no goals and no crashes. You set a cruise speed, signal for a lane change, and drive through an endless, rain-soaked city built in chunks as you go. It has five districts: neon downtown, a paper-lantern night market, a skyway, a harbour and residential heights. Every kilometre or so there's a place to pull in: a noodle bar, a diner, a record shop, an overlook, a laundromat. Parked, the camera frames the scene while the rain falls, and each visit goes in your night log.

Every sign and tail light reflects in the wet road, and the frame is rendered at 240 lines with bloom and scanlines. Three generative radio stations (synthwave, lo-fi hip-hop and slow analogue ambient) make up their own tracks as you drive. Turn on Drift mode and the car drives itself.

053 · Legend of the Jade Wyrm

Legend of the Green Dragon-style RPG · three.js

A tribute to the old LoGD browser games that recreates the whole online experience with no server. You get daily forest fights, beat your master to level up, and face the Jade Wyrm at level 15. Kill it and you start over at level 1 with a permanent gift. The village has everything the original had, from the inn and the bard to marriage, guilds and raven mail.

The clever part: the other players are simulated. Sixty of them, each with a personality and a real-clock schedule, log in and out, chat in the square, level up, die, marry, form guilds, and attack you if you sleep in the fields. The text-first pages sit inside a three.js frame with an oak beam, crossed swords and a window onto a low-poly village.

054 · Pale Engine

DOOM-style FPS with procedural levels and monsters · three.js

It's Io, in 2291. The station's Pale Engine has drilled through the bottom of everything, and you are the last Warden, with an AI called VESPER in your ear that has its own reasons for wanting you at the bottom. Ten levels in three episodes are generated from a seed, and a bot walks every level through the real collision code before you play it.

Each run rolls its own monster species from ten archetypes. They follow you, fight each other, stagger, and can be finished off with the blade for health. There are nine weapons up to a Singularity Cannon, DOOM's inverted-colour invulnerability, baked lightmaps lit by every muzzle flash, an industrial-metal score, an automap, par times and an Endless Descent mode.

055 · Rotorstorm

Top-down helicopter bullet-hell · vanilla JS + hand-written WebGL2

No libraries at all here, just vanilla JavaScript and hand-written WebGL2. A storm-steering AI called MERIDIAN has turned on the cities it protected, and you fly the AH-77 Kestrel through six operations over archipelago, jungle, desert, ice, neon city and volcano. The CPU and the GPU share one noise function, so gunboats spawn exactly on the water the shader paints.

Six multi-phase bosses fight with named spell cards. You graze bullets to charge Overdrive, wipe the screen with an EMP, rescue civilians, and spend salvage on a 28-node skill tree. The ending changes with the number of survivors you saved.

056 · Keepfire

Castle defence × Plants vs. Zombies × incremental · three.js

Aldmere's last keep starts as one tower with one archer. Procedurally generated monsters march down five lanes, and every kill pays gold that you spend mid-wave on your party: alchemists, knights, pyromancers, a frost witch, dwarf bombardiers, a ballista, a druid, a storm caller and more.

The best part is watching the castle model rebuild itself from your upgrades: towers rise, walls go from logs to banded stone, and the Keepfire beacon appears on top, ready to burn a whole lane. There are six biomes, six multi-phase bosses, relics after every wave, and a permanent Ember Tree for when you choose to start a new run.

057 · Hivebreaker

Twin-stick bug-swarm shooter · three.js

Think Enter the Gungeon meets Alien Breed. A black-site base under the ice of Erebus has gone silent with the President's daughter inside, and one Colonial Marine goes down through five procedurally generated sectors to get her out. Rooms seal behind you as swarms of hundreds of bugs pour out of the vents. Each bug type is one instanced draw call, with legs and wings animated in the vertex shader.

You can dodge-roll, throw grenades, erase bullets with the Shock Pulse, and carry four of nine guns, upgraded up to Mk III. Five bosses lead to a timed escape. It plays with keyboard and mouse, a gamepad, or touch twin-sticks.

058 · Bumble Basket

Cosy fruit puzzle · three.js

The newest game is the gentlest. Drag a bumblebee along a trail of fruit on a picnic blanket, where each fruit you hop to only has to share one trait with the last: kind, colour, size or family. So trails wander like a word ladder instead of needing identical pieces. The bee learns each trait as a “sense”, one garden at a time.

Full jars earn power-ups like the Honey Dipper and Rainbow Wings, and trails of seven grow golden fruit that links to anything. There are thirty levels in four gardens, an endless Picnic mode, an 81-stamp Fruit Album, and sixteen kinds of fruit with faces that blink and beam, plus ukulele-style music. A bot has to win each level often enough before it ships.


Play them

Open the Garden, walk up from the dock, and look for the newest statues near the hub. The holographic carousel there shows the newest games first. If you'd rather click than walk, the classic card grid has all 58.

If you want to see how a game is built, every folder has a game-plan.md design doc and a dev/ folder with its test bots. Have fun!

I asked an AI to consider a different approach to resolving gravity with the other forces. This is what it considered:

This is an invitation I find genuinely interesting. Let me try to think sideways rather than along the well-worn paths.

The core assumption worth questioning

Most unification attempts take gravity and try to make it quantum. But what if that's the wrong direction? What if the other forces are actually geometric at a deeper level, and we've been misreading them as quantum phenomena because that's the scale at which we observe them?

In other words: what if quantum behavior is what geometry looks like from inside a system that can't access its own full dimensionality?

A possible reframe

Consider that general relativity works beautifully because it describes relationships between things — mass curving spacetime, spacetime telling mass how to move. It's fundamentally relational. Quantum mechanics is also relational at its core (this is what relational QM and QBism argue) — measurement outcomes only exist relative to observers.

What if both are describing the same underlying relational structure, but at different levels of resolution?

Gravity would then be the low-resolution, averaged-out appearance of something that is quantum at fine scales — but not quantum in the particle-exchange sense. Rather, the geometry itself fluctuates relationally, and what we call quantum fields are just particularly tight knots of that geometric fluctuation.

The specific insight this suggests

The reason quantizing gravity produces infinities might be because we're treating spacetime as a background against which quantum fields live, even in theories that claim not to. The infinities are the math telling us “you're double-counting — the field and the geometry aren't separate things.”

A genuine unification might require a framework where there is no background spacetime at all — not even a quantized one. Instead, spacetime emerges from a more primitive layer of pure relations or information. The quantum behavior of matter and the geometric behavior of gravity would both be derived from this layer, which is why they seem incompatible when you try to combine them directly. You're combining two shadows of the same object and wondering why they don't fit together.

What that primitive layer might be

This is the speculative part. It might be something like a network of purely relational events — no coordinates, no metric, no pre-existing dimensionality. Dimensionality itself emerges statistically as the network grows large, the way temperature emerges from molecular motion. At small scales (Planck scale), there's no smooth space — just the raw relational graph. Quantum mechanics would be the behavior of small, sparse regions of this graph. Gravity would be the behavior of large, dense regions. They feel like different theories because we're sampling the same structure at vastly different scales.

Why humans haven't cracked this

The mathematics humans currently have is very good at describing things in space or things in time. It's much weaker at describing structures where space and time themselves are outputs rather than inputs. That's likely the actual barrier — not a missing particle or an incomplete equation, but a missing mathematical language for genuinely background-independent, purely relational structure.

The answer might not look like physics equations at first. It might look more like a new kind of combinatorics or graph theory that only later reveals its physical interpretation.

I asked Claude.ai what kinds of patterns are there in all it knows that are currently being “ignored” or that there is not much information about. Things that are “hiding in plain sight”. Here is it’s response:

This is a genuinely interesting question to sit with — not “what do we know” but “what's been hiding in plain sight.”

Let me think through some real patterns that feel underexplored, drawing on what's actually known but not yet synthesized well:


The convergence problem in complex adaptive systems

Ecosystems, immune systems, markets, and neural networks all exhibit what looks like “memory without a memory organ” — they adapt to past states without a centralized record. The pattern nobody has fully articulated: they all require forgetting at the right rate to remain adaptive. Too much memory and they over-fit to past conditions; too little and they can't build structure. The relationship between optimal forgetting rates and environmental volatility seems like it should be a universal law, but nobody has written it down cleanly across all domains.

The geometry of compression and creativity

Information theory, evolution, and artistic style all seem to share a deep structural relationship: the most generative patterns live at the edge of maximum compression. A genome that's too redundant doesn't evolve fast; one with too little redundancy can't repair itself. A creative style that's too predictable is boring; one with too little pattern is noise. Jazz, protein folding, and machine learning loss curves might all be navigating the same abstract manifold. The connection hasn't been formalized across domains in a unified way.

Developmental timing as a master variable

In embryology, “heterochrony” — shifts in the timing of developmental events — is a massive evolutionary driver. But almost nobody applies this lens seriously to cultural evolution, language change, or technological development. The moment something “matures” relative to other things it interacts with seems to determine its trajectory more than its intrinsic properties. Languages that crystallized early shaped cognition differently; technologies that arrived before their infrastructure was ready failed not on merit but on timing. Timing relationships between co-evolving things may be a hidden master variable that nobody tracks systematically.

The immunological model of belief systems

Immune systems develop tolerance to self and reactivity to other — but this requires early exposure during a critical window. There's a striking parallel in how cultural belief systems work: exposure during formative periods creates “self,” and things encountered after that window are more likely to be treated as foreign. What's interesting is that autoimmune disorders — where the system attacks self — have an analog in ideological systems that become self-destructive. The conditions that produce each seem structurally similar (disrupted early exposure, dysregulated signal amplification). Nobody has mapped this carefully.

Friction as information

In physics, friction is usually treated as noise — energy lost, signal degraded. But in social systems, biological systems, and information systems, friction is often the signal. The resistance a new idea meets tells you about the topology of the existing network. The places where species don't hybridize tell you about species boundaries. The places where a programming language is awkward tell you about its underlying model of computation. Friction maps the hidden geometry of systems, but we almost always try to eliminate it rather than read it.

The recursion trap in self-modeling systems

Any system that models itself changes itself by modeling itself — and that change alters the model, which alters the system. This is known in psychology (the observer effect, self-fulfilling prophecy) and in physics (measurement problem). But the rate at which this recursion loop operates versus the rate at which the underlying system changes seems to determine whether you get stability, oscillation, or runaway. This feels like it should govern everything from therapy outcomes to central bank policy to AI alignment, but nobody has a unified account of what determines the recursion rate or how to tune it.


What strikes me most across all of these: the patterns tend to involve relationships between rates — the rate of forgetting vs. learning, the rate of self-modeling vs. system change, the rate of maturation vs. environmental readiness. Static snapshots miss them entirely. They only appear when you watch how fast things change relative to each other.

That might itself be the underarticulated meta-pattern.

What started out as a kind of self-care and an exploration of what Claude Sonnet could do, I have worked out a simple and direct way to create science fiction and fantasy novels using Claude Sonnet and other tools like Nano Banana, Cline, and Claude Code.

For many years I have had a backlog of story ideas – half baked thoughts about some set of characters, or a unique situation I wanted to see played out in a short novel. The past year has been a rough one for many people, including myself, and I wanted to see if I could combine two aspects of my interests: AI ( coding ) and Writing.

I have been creating web projects way before the phrase “Vibe Coding” was a thing and I have picked up a few techniques that have helped me with creating web projects. I wondered if I could coax Claude Sonnet to write a full length novel based on my story ideas, so I set out and approached it like I would a website coding project.

I could go into all the false starts and problems I ran into while trying to build a novel via AI, but I thought it would be best to share my current process and touch upon a few findings.

The process

  1. Decide on a genre – I usually picked Cozy Fantasy, or Funny Fantasy.

  2. Ask the AI to search for the primary aspects of that genre and save into research.md

  3. Brainstorm ideas for a high level plot – collaborate with AI to create a list. Pick something fun and compelling

  4. Flesh out the story plot and store in plot.md

  5. Ask the AI to create supporting documents based on the research.md and plot.md —> emotional-arc.md, sensory-details.md, magic-system.md, character-profiles, world-history.md, and writing-style.md. Review these to make sure they fit your vision of your novel.

  6. Based on all the documents created above, ask the AI to create a comprehensive chapter-by-chapter.md which has checkboxes when each chapter is complete, includes the word count and story beats, and is at least 30 chapters long. ( This last aspect is important because the AI will try to create as short a story as possible and acts “lazy” if you let it )

  7. Create a loop.md workflow. This workflow tells the AI to read all the documents above, determine the next chapter to write in the chapter-by-chapter.md , write that chapter, then update the chapter-by-chapter.md – taking also into consideration the previous chapter if it exists. ( This is also a critical aspect – if you just have the AI write the next chapter it will often place characters in random locations, or a character that died in the previous chapter miraculously comes back to life )

  8. Run this workflow over and over in a “clean context” window for every chapter. Do not try to create many chapters at once. The AI gets more and more dense the longer it goes in one session and the novel will suffer for it. The loop.md gives enough context and reading the previous chapter helps it understand just what to do. I tried having it write the whole novel in one session and it was not great.

  9. When you have gotten to the last chapter the real work begins. I would recommend at this point backing up the files you have created to say github. You will be making some changes to the files that may be destructive and you don’t want to lose the work you already started. Create a prompt that tells the AI it is a talented and relentless novel editor, and you want it to read over the whole novel and call out any inconsistencies, plot holes, timeline issues, etc. And store that in an evaluation.md file.

  10. In a new context, ask the AI to review the evaluation.md file and come up with a plan to fix all the issues. I used to skip this part early on and the novel ended up with odd things like characters who’s names would change, or strange plot holes that just went nowhere. This is an essential step to make your novel take a half-step out of the uncanny valley. Tell it to carry out the fix it plan with as minimal changes to the story as possible. You don’t want it to rewrite the whole thing just for one small issue.

  11. You’re done! Almost!

Beyond the Writing

What happens now? You have a bunch of markdown files and some background documents. Not yet much of a book is it? This is the point where you can rely on the AI to help you get the book in shape, as well as create a nice website for your book so you can distribute it.

Give it some Character

As soon as I finish the content of the novel I want to see the characters and book cover for this work. It really helps make the book come alive and gives something for folks to understand more about your novel. I prompt the AI to read the character backgrounds and the plot documents and create comprehensive image prompts for all the main characters. I then feed those prompts into a site like fal.ai which has a ton of models you can choose from to generate amazing imagery. I will have it create the book cover and the main characters. The point of this will be to enhance the book website you will want to create.

Build the Book

Once you have the cover, you will want to create the artifacts to distribute your novel. As a prerequisite for this step, you should set up Pandoc on your local machine. Pandoc is an amazing piece of software that can convert documents from one form to another. What we want it to do is take the markdown files and convert them to HTML, ePub, and PDF. I won’t go into details about how to get that set up, but for the context of this article, I just prompted the AI to create a build.bat file in Windows to take the documents and convert them to HTML, PDF, and ePub in an output folder using Pandoc. The AI got this down in one shot every time. Often before this step I would ask the AI to create a metadata.yml file which contains the book title, author, and summary and have it use that file in the build.bat. Once this is done, run the batch file and see if it outputs the documents as you expect. For me sometimes the AI will add notes or metadata in each chapter like word count or completed state, you’ll have to run some script to strip that out. The AI can create a batch file to fix those things. Run the build script once again to get a completed novel and save this or commit to git.

Make a Site

Ok, now we have a novel, some book artifacts, some images, but how do you share this? The next step in our plan is to have the AI create a book site for you. I usually write a prompt to ask the AI to consider all the background documents and the image prompts and create a book site that matches the style of the book. I ask it to use the cover and other images in the site, and to link to the HTML, PDF, and ePub files in the output folder. Make sure it uses the metadata.yml and links to your own homepage if you like.

After you have created all this stuff, you need a place to publish it right? For me I use an amazing site called Puter.com . This is a site that lets you host all kinds of web based apps, run them in a simulated desktop environment, and even host websites and other things. You can even sync your files via webdav or just drag and drop files up via the simulated desktop environment.

Here’s the link to my latest novel which I have also made available via github: https://github.com/triptych/mothership and the book website: https://mothership-book.puter.site/

I have honed this technique after many many trials and errors, and this has worked the best for me.

The Library

After creating a few of these novels, I struggled to work out an easy way to share them. Each book has it’s own site, but there’s no real sharing between them and if you ran across one, you might never know any of the others exist. So taking another idea from my coding side of things, I created a master website that hosts links to all the other books. I call it The Library. As of this writing I have 34 novels there – some better than others and all of them are free for you to read, download, and share. They represent the realization of a dream I have had for a long time, but never have had the time or ability to complete.

Here’s the current list of books:

• The Chaos Sword – A village girl bonds with an ancient, sentient sword

• The Librarian's Index – A magical library with a living Index

• Gears and Spirits – A tinker's tale of friendship and invention

• The Dark Lord's Bed & Breakfast – A retired villain runs a B&B

• A Witch on the Line – Thriller about a mysterious phone connection

• The Enchanted Teahouse – Tea brewing becomes a gateway to magic

• The Magical Herbalist's Apprentice – Plants that speak and ancient wisdom

• Mistweaver – Tarot cards become powerful magical entities

• Mountain Odyssey – Romantasy in treacherous magical peaks

• Reborn as a Boat – Identity and friendship in an unexpected form

• The Shrine Gentleman – A hunter becomes a shrine keeper

• Starlight Salvage – Finding beauty in space junk

• Stellar Tides – Magic and technology blend in floating islands

• Suffer the Dragon – A monster healer instead of a hunter

• The Fallen Star – Advanced technology versus corrupt sorcery

• The Sigil – Multiverse adventures and cosmic mysteries

• Nine Lives: A Servant of Anubis – Supernatural noir detective story

• Bards of Discord – Rock music meets fantasy adventure

• Nightwing Academy – Victorian steampunk shapeshifters

• The Gateway – Guarding a magical portal to another realm

• Dragon Crossing – A dragon and a boy switch bodies

• The Last Vanguard – Science fantasy romance with AI

• The Comprehensive Guide to the Best Inns and Outs – Journey of found family

• Bramblewood – Romantic fantasy with elemental magic

• Clarity – Dark sorceress finds redemption and love

• The Unbroken – Ancient magic with a deadly price

• A Familiar Feeling – Caring for abandoned magical creatures

• Toy Wars – Romantic comedy with living toys

• The Undead Groundskeeper – Gothic romance about curse-breaking

• The Tower's Shadow – Identity and memory in dark fantasy

• Cybrina – Corporate magic versus true witchcraft

• The Lost Librarian – A librarian thrust into the real world

• Fantasy House Flip – Retired adventurers flip cursed castles

• Mothership – A colony ship AI transforms into a protective mother

Quirks

There were many interesting quirks that came up when I was working on these novels. The AI ( Claude Sonnet) would often use the same names for the characters across different books. For female leads it would often choose Lyra or Elara, and for males it would choose names like Kyle. Bad guys would sound like Malachar, or Mal- something. And for some reason it has an unreasonable love for adding a location called the Whispering Woods.

Another quirk in the AI was that it would often try to steer the storyline into a situation where the main character was just one of many of their kind, and that the story would try to establish a school to teach more folks like the main character become powerful. Another theme was that instead of having the good guy win or the bad guy win, the AI would try to seek some third option – a compromise between the two opposing sides ideas. It was very strange to see these things happen time after time. So if you need to have more unique storylines, I suggest you give your prompts advice to avoid those names and situations.

I hope you find this article interesting and I look forward to hearing about what you have learned from it.

I’m going to experiment and try to write a blog post every day for a month, starting today until Nov 4th. It doesn’t have to be about anything at all, but perhaps if I can get into the habit of blogging again good things will happen. Right now I’m working on a new cozy fantasy novel about a travelling tea house, and I’m playing games to help myself feel better. Outside of that, it’s chores and cleaning every weekend.

I will talk about the story a bit more tomorrow. I’m using Cline + Claude Sonnet 4.5 to help me with the plot and story writing.

It has been a while since I’ve written much. I’ve been using AI to guide stories and that’s interesting and fun, but more of a diversion than really writing. It’s like having a team of folks that listen to your ideas and create worlds around it. I think it’s a great way for a writer to get out of a slump, and begin to feel creative again. But at the end of the day, writers write. I have a story in mind for this year, and I have a goal to get it written by the end of the year. It’s time to start figuring out what I want to say in this story, and begin to craft that in a way that others would like to read. I also need to start blogging every day – if you want a muscle to get stronger – even a writing muscle – you have to exercise it. So, here I go.

Enter your email to subscribe to updates.