luvcraft/gazetteer.lisp
A deliberately artificial yard for checking legible cast shadows.
A tall simple pillar should cast an unmistakable pillar-shaped shadow across the bright receiver under the pinned low sun.
A small open grass meadow with a sandy patch, for looking at animals.
A couple of blocks for scale, and something for a turtle to walk around.
Pose one turtle for a still photograph rather than letting it wander.
Three turtles posed across the meadow: mid-stride, turning, and resting.
A single-frame high-contrast profile for visual shadow inspection.
Return the semantic screenshot views captured by the luvcraft gazetteer.
Capture one gazetteer view into directory and return the PNG pathname.
Capture views, or every known gazetteer view, into directory.
Capture one gazetteer view as a consecutive spatial or temporal sequence.
(source world chunk-key direction)How light should treat the absent neighbor of CHUNK-KEY in DIRECTION. Return :OPEN-SKY for a boundary known to see the sky, :CLOSED for a boundary known to be outside the world, or :UNKNOWN for terrain which merely is not resident.
(x y z)(&key (chunk-count 1)
(crystal-x 8)
(crystal-y 1)
(crystal-z 8))(&key (id (gensym "BLOCK-WORLD-"))
(chunk-width 16)
(chunk-height 16)
(chunk-depth 16)
(cell-extent 1d0)
source)(world x y z)Multiplication and scalar scaling.
(world x y z)Return one site as BLOCK and :RESIDENT, or NIL and :ABSENT. This sparse world-coordinate accessor constructs coordinate descriptors and a chunk lookup key. It is appropriate for inspectors, ray hits, collision probes, and sparse interaction. Algorithms over many cells should select a chunk/domain once and use…
(world)Solve and publish voxel light from scratch for WORLD's resident chunks. Returns the chunks whose published light changed. The selected production solver must have an explicit SOLVE-LIGHT-REGION-USING method.
Logical conjunction of tests and raw truth values.
Test whether one compatible scalar is at most another.
(x y z yaw gait-phase &key resting-p (seed 7))A small, slow, deliberate animal with a domed shell.
(x y z)The living animals near the player, and how to find more.
(population critter)(day-fraction)Mutable time-of-day state owned by a luvcraft session. SLY can pause it, set a time, change its rate, or pin it without restarting.
(keyframes)(name description title world-factory camera-factory day-fraction
&key width height sky-profile-factory critter-factory)Logical disjunction of tests and raw truth values.
(&key (chunk-width 16)
(chunk-height 16)
(chunk-depth 16)
(seed 121))(name &key (errorp t))(directory view)(view directory &key width height (provider *gpu-provider*))If you're lucky, someone has bound this to a working GPU-PROVIDER.
(pathname &key
(title "luv hidden block world")
(width 960) (height 640)
(world (make-empty-little-block-world))
(mesher (make-instance 'exposed-face-mesher))
(camera (make-instance 'fly-camera))
(critters (make-instance 'critter-population))
(provider *gpu-provider*)
(world-text-string nil)
(world-text-distance 8.0)
(world-text-lift 3.0)
(world-text-units-per-em 0.55)
(sky-clock (make-instance 'sky-clock
:pinned-day-fraction 0.5))
(sky-profile (make-default-sky-profile)))Open a hidden SDL canvas, render one block-world frame, and save it. The sky clock arrives pinned at noon so captures stay byte-deterministic; pass an unpinned clock to photograph another time of day. A capture never runs the frame simulation, so any animals it wants in shot arrive already placed in CRITTERS rather…
(directory &key views width height (provider *gpu-provider*))(view directory &key (count 4) (forward-step 0.2) (yaw-step 0.0)
day-start (day-step 0.0) difference-scale
shadow-diagnostic-p width height
(provider *gpu-provider*))(directory &key
(count 6)
(title "luv hidden block world")
(width 960) (height 640)
(yaw-step 0.35)
(forward-step 0.0)
day-start
(day-step 0.0)
difference-scale
(shadow-diagnostic-p nil)
(pathname-prefix "block-world")
(world (make-empty-little-block-world))
(mesher (make-instance 'exposed-face-mesher))
(camera (make-instance 'fly-camera))
(critters (make-instance 'critter-population))
(provider *gpu-provider*)
(sky-clock (make-instance 'sky-clock
:pinned-day-fraction 0.5))
(sky-profile (make-default-sky-profile)))Capture COUNT hidden block-world frames into DIRECTORY. Each frame reuses one hidden SDL canvas on PROVIDER, advances CAMERA's yaw by YAW-STEP, moves FORWARD-STEP world units along its initial heading, and moves the evaluated sky by DAY-STEP day fractions. DAY-START can replace the clock's initial time. When…
Named screenshot views for semantic luvcraft visual checks.