luv

Workshop wiki

characters-instruments.lisp

captures/characters-instruments.lisp

system luv/showcase · 17 definitions · on GitHub

in-package#:luv.showcase

Focused inhabitants and player instruments, each photographed through its real interaction owner. Fixture speech and menu state live here in source; no world-agent or network-backed conversation is created. #W7T2IT #DYJZBK

defuncharacter-instrument-meadow-pose

A quiet midtone meadow view behind dialogue and instrument surfaces.

defunmake-character-instrument-meadow-world

The gazetteer meadow with a sparse, deterministic flower garden.

let
dolist
coordinate'
617
719
916
1019
destructuring-bind
xyz
coordinate
setfluvcraft::*flowers-block*
world
defuncall-with-character-instrument-session

Call function in the deterministic meadow with only subject-owned HUD.

defuncall-with-focused-character
functionspawn-functionspeech&keytitlewidthheightday-fraction

Focus one source-owned character and call function with its exact pose.

call-with-character-instrument-session
lambda
session
let
character
funcallspawn-functionsession

spawn-embodied-agent retains the player's travel heading. This authored conversation turns the subject toward the actual camera.

let
eye
luvcraft:camera-position
luvcraft:luvcraft-session-camerasession
setf
agent::embodied-agent-facing-yawcharacter
atan
-
luvcraft::vec3-xeye
-
luvcraft::vec3-zeye

focus-luvcraft-session creates the character's real dialogue overlay. gnome-say only publishes fixture text; unlike gnome-ask it creates no world-agent and performs no model or network work.

agent:gnome-saycharacterspeech
funcallfunctionsessioncharacter
:titletitle:widthwidth:heightheight:day-fractionday-fraction
defunspawn-capture-gnome
session
agent:spawn-agent:sessionsession:x8:y2:z8
defunspawn-capture-cat
session
agent:spawn-cat:sessionsession:x8:y2:z8
defunfilm-character-focus-pull
sessionpathnametarget-poselabel

Film the real focused character while the camera eases to target-pose.

let*
camera
luvcraft:luvcraft-session-camerasession
step
/1d0frame-rate
luvcraft:film-luvcraft-sessionsessionpathname:secondsseconds:frame-rateframe-rate:include-hud-pt:include-viewmodel-pnil:before-frame
lambda
when
zerop
modframeframe-rate
formatt"capture ~A: focus second ~D/~D~%"label
1+
/frameframe-rate
seconds
finish-output

The focused FoV and dialogue are the gnome's own interaction, not a crop or a separately painted caption. #W7T2IT

luv:define-capturegnome-garden-conversation
:figurew7t2it:kind:image:extension"png":description"A gnome at its real conversational FoV with source-owned dialogue."
pathname
call-with-focused-character
lambda
sessiongnomepose
declare
ignoregnome
luvcraft:capture-luvcraft-screenshotsessionpathname:camera-posepose:include-hud-pt:include-viewmodel-pnil
#'spawn-capture-gnome"The ridge is warm now; the shaded path stays cool.":title"gnome garden conversation":width+gallery-landscape-width+:height+gallery-landscape-height+:day-fraction0.42
luv:define-capturegnome-garden-focus-pull
:figurew7t2it:kind:video:extension"mp4":description"A short deterministic pull into the gnome's focused conversation view."
pathname
call-with-focused-character
lambda
sessiongnomepose
declare
ignoregnome
film-character-focus-pullsessionpathnamepose"gnome-garden-focus-pull"
#'spawn-capture-gnome"I kept a little room between the flowers and the path.":title"gnome garden focus pull":width+gallery-landscape-width+:height+gallery-landscape-height+:day-fraction0.42

cat inherits the embodied-agent conversation protocol but retains its own SDF body, face position, audience distance, and focused camera pose. These portrait recipes enter that actual interaction. #W7T2IT

luv:define-capturecat-in-the-sun-conversation
:figurew7t2it:kind:image:extension"png":layout:portrait:description"The seated cat in warm light, using its real focused dialogue surface."
pathname
call-with-focused-character
lambda
sessioncatpose
declare
ignorecat
luvcraft:capture-luvcraft-screenshotsessionpathname:camera-posepose:include-hud-pt:include-viewmodel-pnil
#'spawn-capture-cat"The sunny stone is occupied. The path may proceed around me.":title"cat in the sun conversation":width+gallery-portrait-width+:height+gallery-portrait-height+:day-fraction0.38
luv:define-capturecat-in-the-sun-focus-pull
:figurew7t2it:kind:video:extension"mp4":layout:portrait:description"A portrait pull into the cat's own audience distance and focused FoV."
pathname
call-with-focused-character
lambda
sessioncatpose
declare
ignorecat
film-character-focus-pullsessionpathnamepose"cat-in-the-sun-focus-pull"
#'spawn-capture-cat"I have inspected the meadow. It is acceptable.":title"cat in the sun focus pull":width+gallery-portrait-width+:height+gallery-portrait-height+:day-fraction0.38

Player instruments remain live McCLIM frames composited into the one game canvas. The fixtures below configure those owners directly. #DYJZBK

defunconfigure-capture-metabar
session

Open the real metabar on grading and select its light-shafts knob.

let*
frame
mcluv:widget-overlay-frameoverlay
knob
or
error"The grading metabar has no SHAFT-GAIN knob."
mcluv::metabar-open-group-rowoverlay:grading
let
index
positionknob
mcluv::metabar-rowsframe
:key#'second:test#'eq
unlessindex
error"The SHAFT-GAIN knob is absent from the open grading group."
mcluv::metabar-selectoverlayindex

A still wants the fully open endpoint, not wall-clock easing captured at an arbitrary phase.

setf
mcluv::metabar-slideoverlay
1d0
mcluv::metabar-last-timeoverlay
0d0
overlay
luv:define-capturemetabar-grading
:figuredyjzbk:kind:image:extension"png":description"The real metabar's grading group, with light shafts selected in context."
pathname
call-with-character-instrument-session
lambda
session
luvcraft:capture-luvcraft-screenshotsessionpathname:include-hud-pt:include-viewmodel-pnil
:title"metabar grading":width+gallery-landscape-width+:height+gallery-landscape-height+:day-fraction0.42
defunconfigure-capture-command-menu
session

Open the real M-x menu with a useful multi-result partial query.

let*
frame
mcluv:widget-overlay-frameoverlay
setf
luvcraft.clim::command-menu-queryframe
"toggle"
luvcraft.clim::command-menu-selectedframe
0
let
matches
luvcraft.clim::command-menu-resultsframe
unless
>=
lengthmatches
3
error"M-x fixture query TOGGLE produced only ~D match~:P."
lengthmatches
overlay
luv:define-capturecommand-menu-filter
:figuredyjzbk:kind:image:extension"png":description"The real M-x command table filtered by a useful partial query."
pathname
call-with-character-instrument-session
lambda
session
luvcraft:capture-luvcraft-screenshotsessionpathname:include-hud-pt:include-viewmodel-pnil
:title"command menu filter":width+gallery-landscape-width+:height+gallery-landscape-height+:day-fraction0.42