Credibility pass: the reel's scars sanded, the veil finally hung
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>
This commit is contained in:
co-authored by
Claude Fable 5
parent
88994f18a2
commit
7a32370ccb
@@ -2,11 +2,12 @@
|
||||
|
||||
The first-person view (`/?fpv`, and the replay's "your eyes" mode) throws
|
||||
spell moments through the air as **billboard sprites**: flat images that
|
||||
always face the camera, drawn glowing in mid-air, occluded by walls, and
|
||||
scaled by distance. Nine sprites cover every spell moment in the game.
|
||||
Each lives at `packages/web/public/textures/../fx3d/<name>.png` — replace
|
||||
the file, refresh, done. The current files are placeholder radial glows;
|
||||
all nine are shown side by side at `/?tokens` under "The conjurations."
|
||||
always face the camera, drawn in mid-air, occluded by walls, and scaled
|
||||
by distance. The sprites in `FX_ART` (fpv/fx3d.ts) cover every spell
|
||||
moment in the game. Each lives at `packages/web/public/fx3d/<name>.png`
|
||||
— replace the file, refresh, done. Missing files fall back to built-in
|
||||
procedural glows; the whole set is shown side by side at `/?tokens`
|
||||
under "The conjurations."
|
||||
|
||||
## Technical requirements
|
||||
|
||||
@@ -15,10 +16,9 @@ all nine are shown side by side at `/?tokens` under "The conjurations."
|
||||
- **Size:** square, any resolution; 128×128 or 256×256 recommended. The
|
||||
renderer scales freely and pixelates on magnification (the whole view
|
||||
is deliberately chunky, like the wall textures).
|
||||
- **Drawn additively:** sprites are composited in "lighter" (additive)
|
||||
mode over a dark dungeon, so dark pixels vanish and bright pixels glow.
|
||||
Paint light-on-transparent; pure black will be invisible. Midtones read
|
||||
as translucent light.
|
||||
- **Compositing:** painted sprites draw normally — inks stay true, dark
|
||||
outlines hold. (Only `warpglow` in terrain3d is drawn additively, as
|
||||
light.) Impacts fade out by alpha as they swell.
|
||||
- **No animation frames.** Each sprite is a single still. Motion comes
|
||||
from the renderer: projectiles streak across the room, impacts swell
|
||||
from small to large while fading out. Radially symmetric (or nearly so)
|
||||
@@ -39,11 +39,11 @@ all nine are shown side by side at `/?tokens` under "The conjurations."
|
||||
| `hit.png` | impact | damage landing on someone you can see; punches, claws |
|
||||
| `shimmer.png` | impact | teleports, warps, illusions, minds touched — the general "magic happened here" glimmer, violet by tradition |
|
||||
| `shield.png` | impact | an attack fully stopped; absorbed spells |
|
||||
| `rubble.png` | prop | a destroyed wall's remains: bursts on the kill, then stands as a mound at the fallen edge for the rest of the reel. Unlike the others this is drawn OPAQUE (normal compositing) — paint it as solid debris, not light |
|
||||
| `rubble.png` | prop | a destroyed wall's remains: bursts on the kill, then stands stretched across the fallen edge's whole gap for the rest of the reel — piles painted at the canvas's lower corners land at the two posts |
|
||||
|
||||
Projectiles hold their size in flight (about a third of a wizard's
|
||||
height). Impacts start small and swell to roughly double while fading —
|
||||
so an impact painted as a ring or burst reads especially well.
|
||||
height). Impacts start small and swell past triple while fading — so an
|
||||
impact painted as a ring or burst reads especially well.
|
||||
|
||||
What the sprites do NOT need to carry: screen-wide flashes when YOU are
|
||||
hit (red), healed (green), or teleported (violet), the camera shake, the
|
||||
@@ -81,10 +81,6 @@ hedge — leaf litter to the square's edges, a floor decal like the pit.
|
||||
`public/terrain3d/safe.png` is the wall safe, standing as an opaque
|
||||
strongbox (square, transparent ground).
|
||||
|
||||
Note on `rubble.png`: it renders stretched ACROSS the fallen wall's
|
||||
whole gap — one cell wide, half a cell tall — so piles painted at the
|
||||
canvas's lower corners land at the two posts.
|
||||
|
||||
## One more paintable surface: the home tile
|
||||
|
||||
`public/textures/home.png` is a floor overlay for home-base cells,
|
||||
|
||||
Reference in New Issue
Block a user