The chronicle stops judging what is share-worthy: the 👁 now rides
every turn's opening line — headers, skipped turns, extra turns — and
the players decide which moments deserve reliving. The game-winning
line keeps its own crown eye. The notable-event catalog and the
one-eye bookkeeping retire with the judgment.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF
Both PICK LOCK and MASTER KEY promise the door relocks behind the
walker — not that it stands unlocked for the turn. Passing through
any door unlocked this turn now shuts it at once at the walker's
back, unless a hand holds it open; the pick-and-peek stays (an
unpassed door keeps its opening until turn's end), and holding via a
targeted cast works as ever, displayed key included. The displayed
key's own walk-through likewise leaves no lingering opening for
bystanders — their peek needs a held door. Frozen behind rev 4 so
stored games keep their turn-long openings. 18 ledgers verified; 277
tests.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF
"Display Immediately," says the card — now the key lives up to it.
Cast bare (a new Display button beside the hold-the-door checkbox),
it goes straight on display; once displayed, it turns in every lock
its bearer walks through — no more casting at each door — with the
door relocking behind them at turn's end like any picked lock, and
the doorUnlocked event still swinging the door in the reels. Cast at
an adjacent door it still works one lock like PICK LOCK, including
holding the door open for others. A JAMmed LOCK refuses it as ever,
and the adjacent peek through workable locks already rode the rev-2
sight rules. Replay-safe ungated: bare casts were never recorded
(they were refused), displayed cards still count against the hand
limit, and walking through a locked door only widens what is
accepted.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF
The client always offered CHAOS from the hint bar without a target,
and the engine refused it: "attack spells target a player". Not this
one — cast bare, it sweeps every other living wizard into the pile,
each offered their FULL SHIELD sit-out in turn order from the caster.
No stack forms; full shields only ever excluded a player from the
storm, so the queue is the whole defense. The older player-targeted
form stays accepted, so stored games replay unchanged. The scramble
joins the chronicle's notable events — a turn that redeals every hand
earns its eye.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF
An automaton beside the wizard carrying its gold shuttled on and off
their square until every move was spent — the chase goal flipped
between "the thief's cell" and "the gold" with each step, because it
keyed on whether the thief stood underfoot. The chase now claims the
march only while the blow it exists to deliver is still live (an
attack in hand, the turn's attack unspent, casting open): those gates
hold still as the clockwork walks, so the goal cannot flip mid-march.
Caught with the strike live, it stands its ground; otherwise the gold
has its legs for the turn. A regression walks the exact scene and
forbids the A-B-A shuttle. The bot-vs-bot harness also learns to
route WARD's pending moment to the treasure's owner.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF
VISIONSTONE only ever lit the attack path: casterLos knew it, but
every sight check routed through gameLos — creations like THORNBUSH,
dispels, CREATE DOOR, STONE TO WATER — refused "no line of sight"
through the bearer's one wall. gameLos now honors the stone whenever
the viewer bears it, at every revision: widening what a cast may
target never changes how a recorded command replays, so games already
in flight get the fix at once. Only the ambush's mid-move eye is
frozen per game (rev 3) — springing lands in the ledger's flow, and
stored games must replay their blindness. All 18 production ledgers
verified; 272 engine tests.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF
The engine always honored the stone — its bearer casts through exactly
one wall or door — but the targeting shadow never did: sightedCellsFor
kept every square behind a wall dimmed, so the aid told the bearer the
stone wasn't working. The sighted set now retries each unseen square
with a single edge removed, mirroring casterLos; the automaton shares
the function, so bots see through their stones too. Two tests pin the
engine ruling and the client parity.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF
Teleport wraps the maze's rim: its four counted squares now step
through warp mouths like any doorway, so a wizard can blink off one
side of the board and onto the other.
A wizard at a door's threshold may pull it open and peek — lock
removed, door unlocked this turn, or PICK LOCK / MASTER KEY in hand —
without stepping through. The door still hangs shut to everyone down
the hallway; only a HELD door is propped open for every eye. Gated
behind rules rev 2 (now sourced from the engine's CURRENT_RULES_REV)
so stored games replay with their doors dark; the client's sight
mirror learns the same peek.
Fear no longer nails a cornered wizard to the floor: a step closer to
the dread is allowed when it walks the shortest way out of it, so
escape can round a corner. Standing outside and stepping in is still
refused.
All 15 production ledgers verified before deploy; 269 engine tests.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF
The eye earned its place — every notable turn offers its reel unless a
player has switched it off, and an explicit off stays respected.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The per-column sprite gate blanked an overlay's WHOLE column wherever a
nearer body touched it — a treasure chest masked the warp veil all the
way to the ceiling. Each column now remembers its nearest sprite's
vertical span as well as its depth, and every overlay family (veils,
ghost walls, lintels, rising conjurations) draws in segments above and
below the covered band, sampling the matching slice of its texture — so
the shimmer wraps the chest instead of vanishing over it.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The warp veil painted over a wizard standing before the mouth — the
overlay passes ran after the sprites with no knowledge of their depth.
Each column now remembers its nearest sprite, and every overlay family
(veils, ghost walls, doorway lintels, rising conjurations) skips the
columns where a body stands closer, while still washing translucently
over anything beyond.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Three blind reviews over the first-person arc, every finding verified
against the source. History-narrating comments made timeless or cut;
the stacked BUDDY comment collapsed to one voice. Dead code out: the
orphaned FACE copy, the DIR_ANGLE duplicate, the dead loop-counter
poke, the impossible-state sentinel. The never-produced "warp" hit
kind resolved the right way — warp mouths now hang a translucent veil
of the painted warp texture, so art that never rendered finally does.
Types tightened (SlabStrike named once, ShareData rides CatchUpStep,
botTier loses its casts), the gallery reads MATERIALS instead of a
hand-copied list, the chronicle resets through one helper, a
superseded share mint rejects instead of stranding, and the conjured
safe gains the growth key its siblings had. Tests lose a triple
assignment, a tautology, and two self-swallowing regex alternatives.
The sprite spec — which still told the artist to paint for additive
compositing the renderer no longer uses — now describes the renderer
that exists.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
One instant-replay eye per turn keeps the chronicle uncluttered — but
the turn that WINS the game is the turn people want to relive, and if
its wizard did something notable earlier, the eye had already been
spent by the time the crown line printed. The game-winning line now
carries its own eye regardless, fireworks and all.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Every reel caption now carries the acting wizard's standee at its left
— the same token art the board plays with, framed in the caption's own
ink — and the burned-in video caption bar gets the portrait too, so a
shared clip names its actors by face as well as by name.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Eric caught the whole-game reel opening in the wrong head: turn zero's
turnStarted fires in the deal, before any step, so the boundary scan
found nothing and fell back to the share's pov prop — the WINNER, whose
eyes then watched the first player's whole turn from across the maze.
When no boundary precedes the current step, the owner is now read from
the reel's first turnEnded, which turn zero always contains.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Whole-game share links minted fine and then 404ed: the share page
rebuilds through catchUpSteps, whose seat check never learned the
SPECTATOR exemption momentSteps got — the anonymous viewer held no
seat, so the rebuild refused and the page said "no such replay". The
spectator is now admitted to finished games' full replays, public
knowledge only, same as single turns.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
treasureDropped and objectDropped played as nothing — the gold simply
teleported from chest to floor between frames. A drop now glints (the
spark blooming where it lands, a beat after the blow when combat
knocked it loose), and a wizard dropping at their own feet takes the
cutaway: a third-person shot of them setting the prize down — or
spilling it. When the reel's wizard strikes the spill loose from
someone else, the attack-facing already has the victim in frame, so
the treasure falls on camera.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A carried treasure rendered nowhere in first person — the thief hauling
your gold looked exactly like an innocent. The treasure now rides its
carrier at chest height, drawn just in front of their card (a sort bias
wins the tie), gliding along with their tweened strides and showing
through warp mouths like everything else. The workshop rehearses it
with ?carry=Rival.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Eric asked what else happens off-camera, and the audit found a family:
a wizard's creature marching or clawing, objects dragged from afar,
punches (always same-square, so also invisible), treasure grabbed at
one's own feet, the Thumb of God's landing. Rather than patch each,
one rule retires the class: when nothing else aims the reel's own
wizard's step, the camera aims wherever the fx layer is about to play
its first impact or projectile landing — so every effect that exists,
and every one added later, gets watched by construction. Creature
marches and treasure grabs (which play no fx) get explicit aim rungs;
own-square deeds keep taking the cutaway.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Two A9WK summons — fire imp, shadow — landed on their casters' OWN
squares: no turn can face your own feet, and a creature in your own
cell is closer than the near plane, so both materialized invisibly.
The aim now reads creatureCreated (the summon's true landing, whatever
the cast's target says), and a deed on the wizard's own square takes
the CUTAWAY: the camera steps outside, stands down the deepest
corridor, and — for cutaway frames only — the reel's own wizard
renders too, so you watch the imp grow at your own feet with yourself
in the shot.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Eric's rosebush-through-a-wall, hunted to two roots. A camera-facing
billboard viewed obliquely rotates out of its square, so cell-bound
volumes are now windowed to the exact segment where their plane
crosses their own cell — no end may paint beyond it. And the real
smoking gun: the near-bias that lets a hedge win the tie against the
wizard standing in it was applied to the OCCLUSION depth too, letting
the hedge cheat a fifth of a cell through any neighboring wall. The
bias now orders sprites among themselves only; walls always judge the
true depth.
Also answered: edge-deeds turn the head. Picking or jamming a lock,
unlocking with the Master Key, raising or razing or drowning a wall —
any edge-bearing deed by the reel's own wizard now aims the camera at
that edge's midpoint before the outcome shows, same as any other
target.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Nothing appears fully-formed anymore. Summoned creatures and conjured
terrain volumes scale up from a sliver, bottom-anchored, as if growing
out of the floor. Conjured SOLIDS — walls, firewalls, stone, and yes,
illusion walls for whoever they fool — RISE: while growing, the rays
pass over them so the room behind stays visible, and the renderer
draws the young face climbing bottom-up with violet swirls running
across it, solidifying as it tops out. Every creation also blooms the
shimmer at its cell. The growth is driven through the fx channel, so
the director's slate applies: things grow only once the camera faces
them.
Two camera notes squared away en route: the slate-setter read back the
state it had just written, registering itself as its own dependency
(an update-depth ping-pong under fast stepping) — locals now; and a
reel whose FINAL step strides into a corner gets one more turn after
the walk lands, to a view worth ending on.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
DUKK's floor-to-ceiling white sliver, decoded: the sprite gate only
asked "did this column's ray warp?" — so a REAL body standing in front
of a warp mouth was clipped out of the mouth's columns (leaving a
baffling sliver of a huge close sprite), and a body virtualized
through warp A could paint columns bent by warp B. Every column now
remembers WHICH warp bent its ray and how far away that mouth stood;
a real body paints a column only nearer than its mouth (in front of
the window), and a virtual one only through its own warp's columns,
beyond the mouth. Projectile legs carry the same identity.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Eric dispelled an object and it un-rendered off-screen, before the
camera had turned to look. The reel now sequences like a director:
each step the camera writes a slate — how long the PREVIOUS world
stays on screen while the eyes turn toward the recipient — and both
the view swap and the step's effects reveal together when the turn
lands. Cutaways hold a beat of the world-before too, so a thing
destroyed across the maze is SEEN existing, then seen ending. Cuts
that open the reel still reveal at once.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Eric walked a five-player board's corner warp and the world stretched.
The lane rule — carry the along-the-edge offset through unchanged —
is only correct for half the side pairings: for the rest (N to N,
E to N, and their kin, the ones five-player boards deal), the proper
rotation lands the entry axis head-to-head against the exit axis, and
preserving the raw lane smuggled a REFLECTION into the traversal —
rays crossing over at the mouth, parallax inverted, the far room
swimming. warpLaneMirrored computes the pairing's sign from the
rotation itself; castRay mirrors the lane where required, and
warpMotion anchors the far mouth at its opposite corner to stay the
same pure rotation — so sprites and projectile legs agree with the
rays again. The workshop grows ?players=2..6 to stand on any table
size (the mirror-class mouths live on the five-player boards).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rubble drawn to span its gap stopped short of the posts, and the
ledger of blame is arithmetic: billboard widths scaled by the vertical
pixel ratio (H/depth) when horizontal pixels-per-world-unit is the
focal length over depth — about 1.4x larger. Every "one cell wide"
volume rendered at seventy percent. Sprites that declare an aspect now
mean WORLD width and use the horizontal scale, so rubble reaches post
to post and hedges brush both walls; plain square token sprites keep
their familiar pixel shape.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The audit Eric called for, delivered whole. Open doors are DOORWAYS
now: stone jamb posts at both ends and a lintel hung across the top
(paintable as textures/doorframe.png), the way through open to the eye.
Battle damage shows — the engine's per-edge wallDamage wears painted
cracks into any wall, heavier as harm mounts. The wall safe stands as
a strongbox volume instead of a flat token. Hedges take root: an
underbrush floor decal covers the whole square beneath them (Eric's
report — a billboard at center depth can't reach the floor trapezoid's
near edge), and the hedge itself widens past the cell. Rubble
stretches across the fallen wall's full gap, corner piles landing at
the posts, exactly as its art was painted.
The first-person effect gaps close: victory now throws SIX fireworks
climbing over the winner's home with gold washing the screen; sector
rotations flash violet and heave the whole world; the Thumb of God
lands with a burst and a shudder; walls conjured from nothing rise in
stone dust; and every hazard pratfall plays — pit falls (with a dark
drop and jolt for the faller's own eyes), ooze slips, tack yelps,
thorn snaps, slime, dust. Dying in first person fades long and dark.
And the whole tale travels: a finished game's full replay carries the
share button too — turn -1 mints a link to every turn of the game,
each through its wizard's own eyes, titled for the winner's triumph.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The wraith reel still ended in a wall, and the ledger showed why: its
final step CUTS home from the cutaway at the summon site — a nine-cell
leap — and the camera read that leap as a walk, faced along it into
the masonry, and counted itself aimed, which silenced the closing-shot
rescue. Leaps no longer set facing: any step that will cut computes
willCut first, strides only turn the eyes within a stride's reach, and
a cut that lands with nothing aimed always re-picks its view from the
new position. The wraith turn now closes down a corridor with the
wraith itself in frame.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A reel that ends nose-to-brick ends badly — especially recorded. On
the final step the idle-gaze rescue raises its standard (a wall inside
1.2 cells is a bad last frame) and scores the four cardinals by more
than corridor depth: a visible wizard or creature weighs most, loose
treasure half, each behind a real line-of-sight check. The camera
turns once to the best view and only if one clearly beats what it has
— a wizard walled in on every side keeps its poor view rather than
hunting forever.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
"You draw Waterbolt" belongs in the chronicle, not on a replay whose
canvas gets recorded and passed around — the reel's captions now skip
the private-draw events (drawn, dealt, stolen) and say only how many.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The window's straddle commands hold more than the turn they open and
close: the opener carries the previous wizard's last draws, the closer
the next wizard's first upkeep — so every instant replay ran on into
the following turn (and, with the camera now following the turn-taker,
jumped into the next wizard's head for the overrun). momentSteps trims
both straddles at the boundary events: the reel opens on "X's turn
begins" and stops at X's turnEnded, keeping only what belongs to X.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Eric's rule, applied everywhere: every reel — moment, catch-up, whole
tale — follows the wizard whose turn it is, the pov switching at each
handover as boundaries scroll past. And the J8LL mystery dies with it:
turn zero's opening boundary lives in the DEAL, before any command, so
scanning a moment's steps found the NEXT turn's start instead and put
the camera in the wrong wizard's head. momentSteps now names the owner
from the very boundary that opened the turn — counted through the deal
— and carries it to the client and the share page, where it also fixes
the same latent mis-titling.
Also aboard: the cutaway shot. When the eyes aim at something they
cannot see — a wraith summoned across the maze, a spell through walls —
the camera cuts to the target's cell for that beat, standing back down
its deepest corridor, and cuts home on the next step. The wraith no
longer materializes off-screen.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The game log's sixty-line window was a render cap, not a limit of what
the client holds — a rejoin replays the whole game into memory. The
chronicle now renders every line back to the deal, and its auto-scroll
grows manners: it follows the newest line only while the reader sits at
the bottom, and holds its place once they scroll up into history.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The flat token billboards give way to terrain that inhabits the room.
Pits, slime, tacks, and the dimensional warp's rings are painted INTO
the flagstones — the home-tile decal pass grows into a general per-cell
overlay grid, one texture per cell, alpha-blended texel by texel. Thorn
and rose hedges fill their square wall to wall at half height, drawn
with a near-bias so the wizard standing among the thorns peeks over the
top. The killer ooze rises as a full translucent cube of jello, bricks
and bodies visible through it; dust billows; and each dimensional warp
mouth throws an additive pillar of violet light up from its floor ring.
Billboards learn aspect, translucency, glow, and draw-order bias to
carry it all.
Nine paintable starters ship — four floor decals under textures/, five
standing volumes under terrain3d/ (spec updated for the artist, hedges
wide, jello solid, warpglow as light) — shown in the token workshop,
rehearsable in place with /?fpv&terrain=thornbush@3,7;jello@4,7.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Host and x-forwarded-proto are attacker-writable and were interpolated
raw into the share page's meta attributes. The proto must now be
literally http or https, and the host is HTML-escaped like everything
else that reaches the head.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The share button lands on the instant replay. One click mints a slug —
persistent, unguessable, one per (room, turn) — and copies a /watch
link anyone can open: the server rebuilds exactly that turn for the
nameless SPECTATOR, public knowledge only, none of the rest of the
game visible. The page arrives with its OpenGraph card pre-baked into
the head (crawlers never run the app): the turn's title and round in
the text, and an og.png of the maze itself — cells, walls, doors, warp
mouths, homes, standees — painted server-side and PNG-encoded with
nothing but node's own zlib. The viewer page wears its chrome: the
WIZ-WAR masthead linking home, the turn's title, the reel opening
straight into the turn-owner's eyes with a "watch it again" loop, and
a footer that says what this table is and deals the visitor in.
The share page loads as its own entry so a shared link never drags the
full app's socket appetite along; the reel's modal scrim learns to
stand in a page instead of over one.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A wizard who has seen through an illusion no longer walks toward empty
air where the board shows a dashed ghost: the ray records the first
known-illusion edge it crosses without stopping, and the renderer
stands a wall there at one-fifth opacity, violet ripple running through
it, drawn over the sprites so bodies show through its breath. Untested
illusions get the same tell the board gives — a faint shimmer on their
solid face, maybe stone, maybe not — while a believed illusion stays
honest brick. The workshop rehearses it with ?illusion=H:2,8.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A9WK's mystery, solved by Eric: the wizard walked through an illusion
wall it disbelieves, and the viewer — still deceived — watched the
camera slide through solid stone. The deception stays intact, but the
crossing now performs: any body stepping through an edge the VIEWER
holds as wall (which can only be an illusion the mover saw through)
shimmers on both faces, with the stone-gray wash when the eyes
themselves cross. Same dressing Pass Wall wears.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Two more camera flaws, read straight out of A9WK's clip against its
ledger. The reel's first run measured the leap from the camera's
uninitialized origin as a stride and FACED ALONG IT — an arbitrary
heading that landed nose-first in a wall, and counted as aimed, so the
corridor fallback never ran. A stride only turns the eyes once the
camera is real. And idle beats are rescued generally: whenever nothing
aims the eyes and they would sit staring at a wall closer than a
stride, they turn down the deepest corridor instead — so pacing into a
dead-end cell no longer parks the whole screen inside brick.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A9WK's clip showed the flaw: a turn owner who casts without moving left
the camera staring into the wall its default heading happened to face,
for the whole turn. The facing ladder grows two rungs: the eyes turn
toward their OWN magic — a cast's target or cell, an attack's defender,
a thrown object's landing — and when a reel opens on a stationary
wizard with nothing to aim at, the camera faces the longest corridor
from where they stand instead of hardcoded east.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Hitting record used to capture from wherever the reel stood — at the
end, the auto-stop fired a beat later and saved one second of the
final frame. Recording now rewinds to the top and rolls the whole
reel. And the container asks for MP4 (H.264) first, the format every
phone and platform plays, keeping WebM only where the browser cannot
mux it; the extension follows the container.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Entertainment polish for the instant replay, all through one wizard's
eyes. Doors now slide open along their own edge — Wolf3D style — when
anyone steps through in a reel, hold for the crossing, and swing shut;
the raycaster takes a per-edge openness map and doors carry their
texture with them, leaving a sliver of jamb at the far post. A wall
that dies bursts into stone and shakes the camera, then leaves a mound
of rubble at the fallen edge for the rest of the reel (a tenth
paintable sprite, drawn opaque — debris, not light). Jammed locks
seethe: a rusty pulse across the wood, keyed off the view's own door
states. Walking THROUGH a wall shimmers on both faces and washes the
walker's own screen stone-gray. And every home base wears its owner's
emblem on the flagstones — a near-white paintable overlay tinted by
wizard color per cell in the floor cast.
Testing surfaced a real ghost: a body standing near a far warp mouth
also rendered at its virtual position, which can overlap real
corridors — the depth buffer alone cannot clip it. Every column now
remembers whether its ray bent, and a sprite draws only where its warp
side matches the column's; projectile legs carry the same flag.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The dream feature lands, behind a preference that ships off for now.
The chronicle's lines grow structure — each knows its turn, counted by
the same boundary events on both ends of the wire (the server counts
the deal's own events too, or every number would sit one turn behind).
The first notable line of a turn — combat, spectacle, a targeted cast
— wears a small eye; clicking it asks the server for that one turn's
steps, rebuilt and redacted like any reel, and the replay opens
STRAIGHT into first person through the eyes of the wizard whose turn
it was: their position, the viewer's knowledge, nothing private leaked.
It plays that turn and stops. Save-video and the board toggle come
along for free.
Two camera bugs die with it: the replay tween effect tracked its own
writes, restarting the ease every frame until walks decayed into the
slow wall-piercing drift Eric saw — untracked reads run one tween per
step now. And the reel camera follows whichever eyes the reel wears,
not always your own.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A stride into a warp mouth now carries the walker out of the paired
mouth mid-glide, body turned exactly as the rays turn — canWalk admits
a rim edge only where a mouth waits, and the crawler splits the stride
at the crossing. And with painted conjuration sprites arriving, the fx
pass composites them normally instead of additively: painted art is
ink, not light, and additive blending would bloom its outlines white.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>