browser-entry/playback/worker-channel

Playback-specific worker-channel contracts.

These types sit above the lower-level browser worker protocol and describe the request budgeting plus summary data flow used by the playback loop.

The key idea is cadence smoothing: the browser renders on animation frames, while the worker advances simulation in step batches. These contracts describe how a fractional render-time budget becomes a concrete worker request.

Tiny example: a budget of 2.4 frames this render usually becomes 2 simulation steps now plus 0.4 carried forward to the next render tick.

browser-entry/playback/worker-channel/playback.worker-channel.types.ts

PlaybackStepPayload

Shared alias for the worker playback-step payload.

This keeps the playback worker-channel modules focused on playback semantics instead of long imported protocol names.

PlaybackStepRequest

Request payload for one playback-step worker call.

The browser asks the worker to advance simulation by a small batch of steps and to package the result for the current viewport dimensions.

ResolvePlaybackStepRequestInput

Input used to resolve the next playback-step request and budget remainder.

Playback uses a fractional frame budget so browser render cadence and worker simulation cadence can be smoothed together over time.

ResolvePlaybackStepRequestResult

Output for the resolved playback-step request and frame-budget remainder.

The resolved request records both the integer step batch to send now and the leftover fractional budget to carry into the next render tick.

browser-entry/playback/worker-channel/playback.worker-channel.request.services.ts

Playback batch-request helpers for the browser worker channel.

The playback loop accumulates simulation budget in fractional units, then converts that budget into integer worker step requests on each render tick.

resolvePlaybackStepRequest

resolvePlaybackStepRequest(
  input: ResolvePlaybackStepRequestInput,
): ResolvePlaybackStepRequestResult

Resolves step count and request payload for the next worker playback batch.

This is the pacing bridge between browser rendering and worker simulation. Rather than sending a fixed step count every frame, the loop carries forward fractional remainder so long-term playback speed stays closer to the intended emulation rate.

Parameters:

Returns: Request payload plus carried-over fractional frame budget.

browser-entry/playback/worker-channel/playback.worker-channel.summary.services.ts

Summary and HUD helpers for playback worker-channel results.

Once the worker replies with a playback-step payload, these helpers turn that raw protocol data into the browser-facing telemetry and end-of-episode summary values used elsewhere in the playback loop.

resolvePlaybackCompletionSummary

resolvePlaybackCompletionSummary(
  playbackStepPayload: { requestId: number; snapshot: EvolutionPlaybackStepSnapshot; instrumentation?: { activationCallsPerFrame: number; simulationStepsPerRaf: number; } | undefined; done: boolean; averagePipesPassed?: number | undefined; p90FramesSurvived?: number | undefined; winnerPipesPassed?: number | undefined; winnerFramesSurvived?: number | undefined; },
  latestLeaderPipesPassed: number,
  latestLeaderFramesSurvived: number,
): { averagePipesPassed: number; p90FramesSurvived: number; winnerPipesPassed: number; winnerFramesSurvived: number; }

Resolves final playback summary values when the worker reports completion.

Some end-of-episode aggregates may be omitted from the worker payload, so the browser falls back to the latest leader values it has already observed during playback.

Parameters:

Returns: Final aggregate playback summary.

resolvePlaybackFrameStats

resolvePlaybackFrameStats(
  playbackStepPayload: { requestId: number; snapshot: EvolutionPlaybackStepSnapshot; instrumentation?: { activationCallsPerFrame: number; simulationStepsPerRaf: number; } | undefined; done: boolean; averagePipesPassed?: number | undefined; p90FramesSurvived?: number | undefined; winnerPipesPassed?: number | undefined; winnerFramesSurvived?: number | undefined; },
  frameIndex: number,
  activeBirdCount: number,
  leaderPipesPassed: number,
  leaderFramesSurvived: number,
): PlaybackFrameStats

Resolves HUD playback frame stats from worker payload and leader metrics.

The frame-stats payload combines browser-derived leader information with any instrumentation values provided by the worker.

Parameters:

Returns: Normalized per-frame HUD telemetry payload.

Generated from source JSDoc • GitHub