Stage three: spells fly through your own eyes
The reel's first-person mode now shows the fight, not just the rooms. The board flourishes' event map is recast into world space (fx3d): fireballs, bolts, and thrown things streak caster to target as glowing billboards; landings swell and fade; blows that land on YOU wash the screen red and jolt the camera; warp-steps and teleports flash violet; a hurled body glides fast and straight with its eyes held steady. Nine paintable conjuration sprites ship at public/fx3d (spec for the artist in research/), shown in the token workshop beside the masonry. Three rough edges sharpened along the way: sprites now project through warp mouths under the same rigid motion the rays use, clipped by the depth buffer to the opening; fire and warp surfaces pull a different texture slice per world cell so a long blaze reads as one; and the replay camera only turns toward an actor its eyes could actually see. Two more gifts: the reel can record its first-person canvas straight to a downloadable WebM (⏺ save video), and the About tab now shows visitors the way into the three workshops. One buried mine defused: rAF hands frame-start times that can precede the tween's own clock, and a zero-length turn divided by it — one NaN facing poisoned every ray black and re-triggered the camera effect forever. The tween clamps and guards its phases now. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
fcafdb06de
commit
e8c6b93c71
@@ -7,6 +7,7 @@
|
||||
import EdgeGlyph, { type LockState } from "./EdgeGlyph.svelte";
|
||||
import FirewallEdge from "./FirewallEdge.svelte";
|
||||
import IllusionShimmer from "./IllusionShimmer.svelte";
|
||||
import { FX_ART } from "./fpv/fx3d";
|
||||
|
||||
const GROUPS: { title: string; files: string[] }[] = [
|
||||
{ title: "Wizards", files: ["wizard-0", "wizard-1", "wizard-2", "wizard-3", "wizard-4", "wizard-5"] },
|
||||
@@ -102,6 +103,23 @@
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
<h2>The conjurations — first-person spell sprites</h2>
|
||||
<p class="sub">
|
||||
The moments the raycaster throws through the air: projectiles in
|
||||
flight, bursts on landing, shimmers and shields. Each lives at
|
||||
<code>public/fx3d/<name>.png</code> — square, transparent ground,
|
||||
drawn glowing mid-air at any size; a procedural glow stands in
|
||||
wherever a file is missing.
|
||||
</p>
|
||||
<div class="grid">
|
||||
{#each FX_ART as name (name)}
|
||||
<figure>
|
||||
<img class="masonry conjuration" src={`/fx3d/${name}.png`} alt={`${name} sprite`} />
|
||||
<figcaption>{name}</figcaption>
|
||||
</figure>
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
<h2>Walls & doors — as the maze draws them</h2>
|
||||
<p class="sub">
|
||||
Wall-segment effects have never been tokens: locks picked, jammed, and
|
||||
@@ -195,4 +213,6 @@
|
||||
border: 1px solid #3a3428;
|
||||
background: #101318;
|
||||
}
|
||||
/* Sprites fly against darkness; show them on it. */
|
||||
.conjuration { background: #14101c; }
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user