Fog lit by rays: shadows cut through tiles, and walls stay visible
ci / verify (push) Successful in 52s
ci / verify (push) Successful in 52s
The fog asked one question per tile -- can I see its centre? -- and drew or skipped the whole tile on the answer. Every shadow was a staircase, tiles snapped in and out as you walked, and a wall beside you vanished whenever its centre happened to sit behind its neighbour. Visibility casts rays from the eye instead: a fixed sweep, plus two aimed either side of every wall corner, which is what makes each shadow edge a straight line rather than a smear between rays. The view now draws terrain and actors first and then darkness over whatever the rays did not reach, so a shadow runs straight through a tile and an enemy rounding a corner appears a slice at a time. Bullets are a child node and are still drawn over the dark; telegraphs are drawn after it, as they must be. "A bit less strict" is three specific things. A wall face you can see is lit 26 units in, measured perpendicular to the face; shadows end in a short fade rather than a line; and sight fades over its last 64 units rather than stopping at a circle. Still hard fog -- nothing remembered. The first version measured that depth along the ray, and a screenshot caught what no test had: a wall you look along got a sliver, so the wall beside you in a tunnel looked missing -- the old fog's own complaint. Perpendicular depth fixes it, and light stops the instant a ray steps back into the open, so it never rounds a corner, never reaches the far side of a one-tile wall, and never leaves a stepped wall through its other face. Two tiles touching only at a corner are closed. About half a millisecond a frame. Measured against the old fog in the same scene: hub 68 fps against 62, dungeon 240 against 240. The hub's own low rate predates this. MapGrid gains a revision counter so the corner list is rebuilt only when the map changes or the eye crosses a tile. screenshot.tscn now captures a dungeon, a tunnel and the tunnel with F1's overlay, which draws where each ray stopped -- and makes SHOT_DIR rather than failing every capture when it does not exist. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
83c3b920fb
commit
855669a665
12 files changed
+871
-45
No files matched your search
@@ -89,6 +89,28 @@ about as often as a good one.
|
||||
**Hard fog.** *(User, this session.)* No remembered terrain — anything outside
|
||||
current line of sight is not drawn, including ground already walked over.
|
||||
|
||||
**The fog is geometry, not a verdict per tile — and a little less strict.**
|
||||
*(User asked: "no longer grid based ... able to light up cells partially", and
|
||||
"a bit less strict". How strict was left to me.)* `Visibility` casts rays from
|
||||
the eye — a fixed sweep plus two aimed either side of every wall corner, which
|
||||
is what makes each shadow edge a straight line — and the view draws terrain and
|
||||
actors first, then darkness over everything the rays did not reach. A shadow
|
||||
edge runs straight through a tile; an enemy rounding a corner appears a slice
|
||||
at a time instead of popping in whole.
|
||||
|
||||
"Less strict" is three specific things. The face of a wall you can see is lit
|
||||
26 units deep, measured perpendicular to the face — along the ray it was a
|
||||
sliver for any wall seen at a grazing angle, and the wall beside you vanished,
|
||||
which is the complaint the old fog had. Shadows end in an 8-unit fade instead
|
||||
of a hard line. And the edge of sight fades over its last 64 units instead of
|
||||
stopping at a circle. Nothing is remembered: still hard fog.
|
||||
|
||||
Two lines this deliberately does not cross: light stops the moment a ray steps
|
||||
back out of the wall it was in, so it never rounds a corner or reaches the far
|
||||
side of a one-tile wall; and two blocking tiles that touch only at a corner are
|
||||
closed, not a crack. Bullets are drawn over the darkness, as they always were —
|
||||
a shot out of the black is still one you can dodge.
|
||||
|
||||
**Dungeon size scales with depth.** *(User, this session.)* `--depth N` is a dev
|
||||
flag; what raises depth in actual play is still open.
|
||||
|
||||
|
||||
Reference in new issue
Block a user