Documentation / @debuffjp/dev / DevSession
Class: DevSession
Defined in: dev/src/session.ts:216
Shared dev state for a game: pause/step/speed, frame recording, an activity log and human notes. The overlay, dev hooks and the agent link all use the same session.
Properties
activity
readonlyactivity:Activity[] =[]
Defined in: dev/src/session.ts:218
agentLastSeenAt
agentLastSeenAt:
number=Number.NEGATIVE_INFINITY
Defined in: dev/src/session.ts:245
performance.now() of the last agent action (agent link); -Infinity if never.
agentsAttached
agentsAttached:
number=0
Defined in: dev/src/session.ts:319
Agents holding an attach connection through the dev server (agent link).
errors
readonlyerrors:ExplainedError[] =[]
Defined in: dev/src/session.ts:225
Uncaught errors, unhandled rejections and loop errors, explained and de-duplicated (max 50).
eventCounts
readonlyeventCounts:Record<string,number> ={}
Defined in: dev/src/session.ts:237
How many times the game emitted each event (game.emit) since load.
events
readonlyevents:GameEventRecord[] =[]
Defined in: dev/src/session.ts:239
The latest game events with their tick and detail (max 200).
game
readonlygame:Game
Defined in: dev/src/session.ts:254
notes
readonlynotes:Note[] =[]
Defined in: dev/src/session.ts:219
pausedBy
pausedBy:
string|undefined
Defined in: dev/src/session.ts:241
Who paused the game, or undefined while running.
pauseOnSpikeMs
pauseOnSpikeMs:
number=0
Defined in: dev/src/session.ts:243
Pause automatically when a frame exceeds this many milliseconds (0 = off).
profiler
readonlyprofiler:Profiler
Defined in: dev/src/session.ts:251
myaku: hitches explained (profile()), with debuff's update and render as spans.
recorder
readonlyrecorder:FrameRecorder
Defined in: dev/src/session.ts:217
recording
recording:
InputRecording|undefined
Defined in: dev/src/session.ts:221
Input recorded since page load, for replays (present once attachInput is called).
Accessors
agentConnected
Get Signature
get agentConnected():
boolean
Defined in: dev/src/session.ts:314
An agent acted on this game in the last 30 seconds.
Returns
boolean
paused
Get Signature
get paused():
boolean
Defined in: dev/src/session.ts:309
Returns
boolean
Methods
agentSeen()
agentSeen():
void
Defined in: dev/src/session.ts:332
Returns
void
attachInput()
attachInput(
input):void
Defined in: dev/src/session.ts:361
Start recording this input for replays. Idempotent.
Parameters
input
Returns
void
changed()
changed():
void
Defined in: dev/src/session.ts:499
Returns
void
clearErrors()
clearErrors():
void
Defined in: dev/src/session.ts:480
Forget recorded errors (after fixing them).
Returns
void
keepForReload()
keepForReload():
void
Defined in: dev/src/session.ts:394
Called just before the dev server reloads the page for a code change: save the session so the new code can replay it to this same tick (state-preserving reload). Running games keep running.
Returns
void
known()
known():
Replay|undefined
Defined in: dev/src/session.ts:369
Everything known about this session: the pre-rewind timeline while you're still parked where a rewind left you, otherwise what was actually played (any new tick or input branches off the old timeline).
Returns
Replay | undefined
log()
log(
who,action,detail?,undo?):void
Defined in: dev/src/session.ts:485
Parameters
who
string
action
string
detail?
string
undo?
() => void
Returns
void
note()
note(
text):Note
Defined in: dev/src/session.ts:437
Flag the current moment with a note for an agent to pick up.
Parameters
text
string
Returns
pause()
pause(
who?,detail?):void
Defined in: dev/src/session.ts:339
Parameters
who?
string = "you"
detail?
string
Returns
void
release()
release():
void
Defined in: dev/src/session.ts:296
Returns
void
restore()
restore(
request,target):void
Defined in: dev/src/session.ts:402
Finish a rewind or a code reload after the page loads again (see rewind and keepForReload).
Parameters
request
RewindRequest
target
ReplayTarget
Returns
void
resume()
resume(
who?):void
Defined in: dev/src/session.ts:346
Parameters
who?
string = "you"
Returns
void
rewind()
rewind(
tick):void
Defined in: dev/src/session.ts:382
Go back (or forward, within the known session) to tick: the page reloads and replays its inputs to that tick, so the game's state is exactly what it was, then stays paused there.
Parameters
tick
number
Returns
void
setAgentsAttached()
setAgentsAttached(
n):void
Defined in: dev/src/session.ts:322
Update attached agents from the dev server; logs connects and disconnects.
Parameters
n
number
Returns
void
setParam()
setParam(
group,key,value,who?):void
Defined in: dev/src/session.ts:427
Set a param and log it with an undo that restores the previous value.
Parameters
group
string
key
string
value
who?
string = "you"
Returns
void
setSpeed()
setSpeed(
scale,who?):void
Defined in: dev/src/session.ts:419
Parameters
scale
number
who?
string = "you"
Returns
void
step()
step(
n?,who?):void
Defined in: dev/src/session.ts:354
Advance exactly n fixed steps (pauses first, so the result stays put).
Parameters
n?
number = 1
who?
string = "you"
Returns
void
subscribe()
subscribe(
fn): () =>void
Defined in: dev/src/session.ts:492
Subscribe to state changes (pause, log, notes). Returns an unsubscribe function.
Parameters
fn
() => void
Returns
() => void
acquire()
staticacquire(game):DevSession
Defined in: dev/src/session.ts:286
The session for game, created on first use. Call release() when done.
Parameters
game
Returns
DevSession