hayao.js — Public API digest
Auto-generated by
npm run api. Everything importable from@hayao. Grep here for the real surface — never guess an API from memory.
967 exports.
classs (74)
AchievementsAmbientFieldAnimationPlayerAudioBusBitmapTextBlend1DBlend2DBone2DBroadcastChannelTransportCamera2DCameraControllerCanvas2DRendererCinematicPlayerClipPlayerClockCoroutinesDebugPaneDepthSortDuotoneHeroEventBusFloatingTextFsmGamepadSourceHeadlessRendererIkTargetInputBufferInputDeviceTrackerInputRecorderInputStateIsoPrismKeyboardSourceLightLayerLocalStorageAdapterLockstepSessionLoopbackHubLoopbackTransportLootTableMemoryStorageMenuGamepadNodeNodePoolNullStorageParallaxLayerParticlesPhaseClockPixelBufferPlayerInputPointerSourcePointLightRingBufferRngRollbackSessionRoomHostSaveManagerScreenTransitionSessionRecorderShakerShellSignalSkeletonSkeletonDebugSnapshotRingSpatialHashSpriteSvgRendererTextTextureSpriteTileLayerTimerTouchControlsUndoStackVerletChainWebGL2RendererWorld
functions (409)
abilitiesOf: (world: WorldGraphDef, taken: readonly string[]) => SetablationIssues: <S, M>(exp: AblationExperiment<S, M>, opts?: AblationOptions) => string[]achievementIssues: (defs: AchievementDef[], timeline: Record<string, unknown>[]) => string[]addBody: (rw: RigidWorld, def: RigidBodyDef) => numberaddDistanceJoint: (rw: RigidWorld, def: DistanceJointDef) => numberaddPrismaticJoint: (rw: RigidWorld, def: PrismaticJointDef) => numberaddRevoluteJoint: (rw: RigidWorld, def: RevoluteJointDef) => numberaddTransition: (parent: Node, config?: TransitionConfig) => ScreenTransitionaddWeldJoint: (rw: RigidWorld, def: WeldJointDef) => numberagencyIssues: <State, Move>(puzzle: Puzzle<State, Move>, opts?: AgencyOptions) => string[] agencyStats: <State, Move>(puzzle: Puzzle<State, Move>, opts?: AgencyOptions) => AgencyStats albumTrack: (id: string) => AlbumTrack | undefinedall: (…waits: Wait[]) => WaitanalyzePlaytest: (def: GameDefinition<Record<string, unknown>>, session: PlaytestSession, opts?: AnalyzeOptions) => PlaytestReportangleDelta: (a: number, b: number) => numberapplyChannel: (node: Node, channel: ClipChannel, value: number) => voidapplyImpulse: (rw: RigidWorld, id: number, ix: number, iy: number, px?: number | undefined, py?: number | undefined) => voidapplyReverb: (buf: StereoBuffer, opts?: ReverbOptions) => voidapplyReverbSend: (dry: StereoBuffer, send: StereoBuffer, opts?: ReverbOptions) => voidapplyTransform: (m: Transform, p: Vec2) => Vec2asciiEntities: (rowsAscii: string[], tileSize?: number, chars?: Record<string, TileId>) => { char: string; tx: number; ty: number; x: number; y: number; }[]assertAgency: <State, Move>(puzzle: Puzzle<State, Move>, opts?: AgencyOptions) => AgencyStats assertAudio: (buf: StereoBuffer, exp: AudioExpectation) => AudioAssertionassertDeterministic: (makeWorld: WorldFactory, log: InputLog) => DeterminismReportassertLoadBearing: <S, M>(exp: AblationExperiment<S, M>, opts?: AblationOptions) => AblationReportassertRamp: (difficulty: readonly number[], opts?: RampOptions) => voidassertSnapshotStable: (makeWorld: WorldFactory, log: InputLog, warmup: number) => { ok: boolean; hashA: string; hashB: string; }assertSolvable: <State, Move>(puzzle: Puzzle<State, Move>, options?: SolveOptions) => SolveResultastar:(start: N, isGoal: (n: N) => boolean, neighbours: WeightedNeighbours , key: NodeKey , opts?: { heuristic?: ((n: N) => number) | undefined; maxNodes?: … astarGrid: (start: Cell, goal: Cell, passable: Passable, opts: { cols: number; rows: number; diagonal?: boolean | undefined; cost?: ((x: number, y: number) => number) |…atomManifest: (atom: AtomDefinition) => AtomManifestEntryatomToGame: (atom: AtomDefinition) => GameDefinition<Record<string, unknown>>attachAchievementToasts: (ach: Achievements, icon?: string) => () => voidautotile4: (grid: BoolGrid) => (WangTile | null)[][]autotileToCommands: (grid: BoolGrid, options?: AutotileDrawOptions) => (RectCommand | PolyCommand)[]availableUpgrades: (defs: readonly UpgradeDef[], owned: readonly string[]) => UpgradeDef[]bandBalance: (sig: Samples, sampleRate?: number) => BandBalancebarPhase: (elapsedSec: number, secPerBar: number) => numberbfs:(start: N, neighbours: Neighbours , key: NodeKey , opts?: { goal?: ((n: N) => boolean) | undefined; maxNodes?: number | undefined; }) => BfsResult blazon: (c: Crest) => stringbleedViewBox: (containerW: number, containerH: number, safeW: number, safeH: number, maxScale?: number) => ViewBoxblendIssues: (samples: BlendSample[], dims?: 1 | 2) => string[]blobPath: (rng: Rng, radius: number, wobble?: number, lobes?: number) => stringbodyAABB: (b: RigidBody) => RectbodyContains: (b: RigidBody, x: number, y: number) => booleanbootChimeScore: (a4?: number) => Tone[]bootDom: (def: GameDefinition<Record<string, unknown>>, mount?: HTMLElement | undefined) => DomHarnessbuildHeroRig: (scheme?: DuotoneScheme, name?: string) => NodebuildSkeleton: (root: Node) => SkeletoncadenceResolves: (romans: string[]) => booleancameraIssues: (samples: readonly Vec2[], opts?: CameraOptions) => string[]canonicalHandle: (handle: string) => stringcanvasGradient: (ctx: { createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient; createRadialGradient(x0: number, y0: number, r0: number, x1: nu…cardLayout: (card: Node) => CardLayout | undefinedcellFloat: (x: number, y: number, seed?: number) => numbercellHash: (x: number, y: number, seed?: number) => numbercellInt: (x: number, y: number, n: number, seed?: number) => numberchangeFrames: (timeline: ProbeFrame[], key: string) => number[]checkDeterministic: (makeWorld: WorldFactory, log: InputLog) => DeterminismReportchordChanges: (symbols: string[], octave?: number) => number[][]chordNotes: (symbol: string, octave?: number) => number[]clientToDesign: (rect: { left: number; top: number; width: number; height: number; }, width: number, height: number, clientX: number, clientY: number) => Vec2clipEvents: (def: ClipDef, prev: number, next: number) => string[]clipFinished: (def: ClipDef, elapsed: number) => booleanclipIssues: (def: ClipDef, knownTargets?: readonly string[] | undefined) => string[]clipTime: (def: ClipDef, elapsed: number) => numbercollide: (a: RigidBody, b: RigidBody) => Manifold | nullcommandsToSVGInner: (commands: DrawCommand[], idPrefix?: string, viewW?: number, viewH?: number) => stringcomposeCampaign: <State, Move>(spec: CampaignSpec<State, Move>) => Campaign<State, Move>composeTransform: (m: Transform, n: Transform) => TransformconnectedComponents: (cols: number, rows: number, passable: Passable, diagonal?: boolean) => ComponentsconnectWebSocket: (url: string) => PromisecontourToCommands: (grid: BoolGrid, options?: AutotileDrawOptions) => PolyCommand[]contrastRatio: (a: string, b: string) => numbercreatePlanBot: <Step extends { kind: string; }, Probe>(plan: Step[], execs: Record<string, StepExec<Step, Probe>>) => PlanBotcreatePlatformerState: (x: number, y: number) => PlatformerStatecreateRigidWorld: (opts?: RigidWorldOpts) => RigidWorldcreateStereo: (durationSec: number, sampleRate?: number) => StereoBuffercreateWorld: <TState extends Record<string, unknown> = Record<string, unknown>>(def: GameDefinition, opts?: number | CreateWorldOptions | undefined) => World<…> crestFactorDb: (sig: Samples) => numbercrestSvg: (handle: string, opts?: CrestSvgOptions) => stringcueForState: (state: “title” | “explore” | “tension” | “reward”) => SoundtrackCue | undefinedcullSegments: (light: Vec2, radius: number, segs: readonly ContourSegment[]) => ContourSegment[]dashJumpDistance: (cfg?: PlatformerConfig) => numberdatan: (x: number) => numberdatan2: (y: number, x: number) => numberdbfs: (amp: number) => numberdcos: (x: number) => numberdebugCircle: (cx: number, cy: number, radius: number, opts?: DebugDrawOptions) => voiddebugDrawCount: () => numberdebugDrawEnabled: () => booleandebugLine: (x0: number, y0: number, x1: number, y1: number, opts?: DebugDrawOptions) => voiddebugPoint: (x: number, y: number, opts?: DebugDrawOptions) => voiddebugRect: (x: number, y: number, w: number, h: number, opts?: DebugDrawOptions) => voiddebugText: (text: string, x: number, y: number, opts?: DebugDrawOptions & { size?: number | undefined; }) => voiddecode2bit: (source: string | bigint, width: number, height: number) => PixelBufferdecodeBits: (source: string | bigint, width: number, height: number) => PixelBufferdecodeMessage: (data: string) => NetMessage | nulldecodeRLE: (runs: readonly number[], width: number, height: number) => PixelBufferdefaultStorage: (prefix?: string | undefined) => StorageAdapterdefineAtom: (def: AtomDefinition) => AtomDefinitiondefineGame: <TState extends Record<string, unknown> = Record<string, unknown>>(def: GameDefinition) => Required<Pick<GameDefinition , “seed” | “width” | ”… defineLevel: (spec: LevelSpec) => LevelDatadeserializeNode: (data: SerializedNode) => Nodedexp: (x: number) => numberdexp2: (x: number) => numberdhypot: (x: number, y: number) => numberdiamondPoints: (w: number, h: number) => number[]diatonicChord: (tonic: number, mode: “major” | “minor” | “harmonicMinor” | “melodicMinor” | “dorian” | “phrygian” | “lydian” | “mixolydian” | “locrian” | “majorPentatonic” …diffLevels: (a: LevelData, b: LevelData) => LevelChange[]distanceGain: (model: DistanceModel, distance: number, refDistance?: number, maxDistance?: number, rolloff?: number) => numberdistanceWrap: (a: number, b: number, size: number) => numberdlog: (x: number) => numberdownloadDataURL: (url: string, filename: string) => voiddpow: (base: number, exp: number) => numberdrainDebugCommands: (view?: Transform) => DrawCommand[]drive: (world: World<Record<string, unknown>>, script: InputScript, until?: ((probe: Record<string, unknown>) => boolean) | undefined) => DriveResultdropShadow: (color: string, blur: number, dx?: number, dy?: number) => Shadowdsin: (x: number) => numberduckGain: (active: boolean, amountDb?: number) => numberduotone: (base: string, opts?: DuotoneOptions) => DuotoneSchemeencodeMessage: (msg: NetMessage) => stringencodeRLE: (buf: PixelBuffer) => number[]encodeWav: (buf: StereoBuffer) => Uint8ArrayestimateTempo: (sig: Samples, sampleRate?: number) => numberevalCurve: (curve: Breakpoint[], x: number) => numberfeatureDistance: (reference: AudioFeatures, candidate: AudioFeatures, weights?: Partial) => MatchResult features: (sig: Samples, sampleRate?: number) => AudioFeaturesfeedbackIssues: (contract: FeedbackContract, requiredEvents: readonly string[], opts?: FeedbackOptions) => string[]fft: (re: Float32Array, im: Float32Array ) => void findSoftlocks: (world: WorldGraphDef, mode?: CompletionMode) => SoftlockReportfirstFrame: (timeline: ProbeFrame[], pred: (p: ProbeFrame) => boolean) => numberfitFontSize: (m: FontMetric, text: string, maxWidth: number, maxSize: number) => numberfitViewport: (rect: { width: number; height: number; }, width: number, height: number) => ViewportfloodFill: (start: Cell, passable: Passable, opts: { cols: number; rows: number; diagonal?: boolean | undefined; }) => Cell[]fluxEnvelope: (sig: Samples, frameSize?: number, hop?: number) => Float32ArrayforgivenessIssues: (spec: ForgivenessSpec, opts?: ForgivenessOptions) => string[]formatTime: (seconds: number) => stringfractalNoise: (x: number, y: number, seed?: number, opts?: FractalOptions) => numberframeActions: (log: InputLog, i: number) => string[]frameAxes: (log: InputLog, i: number) => AxisFrame | undefinedgameInputMap: (def: GameDefinition<Record<string, unknown>>) => Readonly<Record<string, readonly string[]>>generateCave: (rng: Rng, opts: CaveOptions) => GridgenerateDungeon: (rng: Rng, opts: DungeonOptions) => DungeongenerateLevels: <State, Move>(factory: (rng: Rng) => Puzzle<State, Move>, opts: GenerateOptions<State, Move>) => GeneratedLevel<State, Move>[]generateLevelsReport: <State, Move>(factory: (rng: Rng) => Puzzle<State, Move>, opts: GenerateOptions<State, Move>) => GenerateReport<State, Move>genre: (id: string) => GenreTrack | undefinedgetBody: (rw: RigidWorld, id: number) => RigidBody | undefinedgetJoint: (rw: RigidWorld, id: number) => Joint | undefinedglow: (color: string, blur: number) => ShadowgraceWindowIssues: (label: string, windowFrames: number, accepts: (delayFrames: number) => boolean) => string[]gradient: (stops: readonly string[], n: number) => string[]gradientDef: (g: Gradient, id: string) => stringgreedyPolicy: <S, M>(heuristic: (state: S) => number, opts?: GreedyPolicyOptions) => Policy<S, M>gridAt: (g: Grid, x: number, y: number) => numbergridFromRows: (rows: readonly string[], solid?: string) => boolean[][]gridSet: (g: Grid, x: number, y: number, v: number) => voidgridToTilemap: (g: Grid, tileSize?: number) => TilemapDatagroundAt: (map: TilemapData, x: number, y: number, w: number, h: number, solids?: SolidRect[], dropThrough?: boolean) => { grounded: boolean; solid: number; }hapticsEnabled: () => booleanhashNoise: (…values: number[]) => numberhashString: (str: string) => numberhashValue: (value: unknown) => stringhayaboxDeck: (moodByCourtier?: Record<string, string>) => DeckSpechayaboxLoopBeats: () => numberhayaboxTutti: (moodByCourtier?: Record<string, string>) => SongheroStateFromMotion: (m: HeroMotion, opts?: { runThreshold?: number | undefined; }) => “idle” | “run” | “jump” | “fall” | “wallSlide” | “death” | “spawn”hexToHsl: (hex: string) => HSLhideScreen: () => voidhold: (actions: string[], frames: number) => SegmenthostRoom: (opts: RoomHostOptions) => RoomHosthsl: (h: number, s: number, l: number) => stringhsv: (h: number, s: number, v: number) => stringinitDirector: (waves: readonly WaveDef[]) => DirectorStateinputDensity: (frames: string[][]) => numberinstallCapture: (target: CaptureTarget) => HayaoCaptureinvalidCommandReason: (c: DrawCommand) => string | nullinvertTransform: (m: Transform) => TransforminVisionCone: (map: TilemapData, ex: number, ey: number, faceX: number, faceY: number, fov: number, range: number, tx: number, ty: number) => booleanisCaptureMode: () => booleanisGround: (col: number, row: number, opts: TerrainOptions) => booleanisMonotonic: (values: number[], dir: “up” | “down”, slack?: number) => booleaniso: (cfg: IsoConfig) => IsoProjectionjoinRoom: (opts: RoomClientOptions) => PromisejumpAirtime: (cfg?: PlatformerConfig) => numberjumpDistance: (cfg?: PlatformerConfig) => numberjumpHeight: (cfg?: PlatformerConfig) => numberkeyMentions: (code: string) => string[]keysToActions: (map: Readonly<Record<string, readonly string[]>>, keysDown: Set) => string[] layerGains: (layers: MusicLayer[], intensity: number) => Record<string, number>layoutIssues: (commands: DrawCommand[], opts?: LayoutOptions) => string[]layoutText: (font: BitmapFont, input: string | readonly RichChar[], options?: TextLayoutOptions) => TextLayoutlerpAngle: (a: number, b: number, t: number) => numberlevelFromSeed: <State, Move>(factory: (rng: Rng) => Puzzle<State, Move>, seed: number) => Puzzle<State, Move>levelIssues: (data: LevelData) => string[]levelReachable: (data: LevelData, opts?: { passable?: Passable | undefined; diagonal?: boolean | undefined; }) => ReachReportlevelToTilemap: (data: LevelData) => TilemapDatalightingIssues: (commands: DrawCommand[], avatarFill: string, avatarWorld: Vec2, opts?: LightingOptions) => string[]linearGradient: (stops: readonly StopInput[], angleDeg?: number) => LinearGradientlineOfSight: (map: TilemapData, ax: number, ay: number, bx: number, by: number) => booleanlintDeck: (deck: DeckSpec) => string[]lintSong: (song: Song, opts?: LintOptions) => MusicLintResultlongestLull: (eventFrames: number[], totalFrames: number) => numberlookAheadIssues: (cameraSamples: readonly Vec2[], targetSamples: readonly Vec2[], minLead?: number) => string[]loop: (id: string) => DrumLoop | undefinedmagnitudeSpectrum: (frame: Samples) => Float32ArraymakeCard: (spec: CardSpec) => NodemakeGrid: (cols: number, rows: number, fill?: number) => GridmakeReach: (start?: number, settle?: number) => (target: number, dt: number) => numbermakeTransform: (pos: Vec2, rotation: number, scale: Vec2) => TransformmarchingSquaresCases: (grid: BoolGrid) => number[][]marchingSquaresContours: (grid: BoolGrid, options?: ContourOptions) => ContourSegment[]mask4: (grid: BoolGrid, x: number, y: number) => numbermask8: (grid: BoolGrid, x: number, y: number) => numbermatchReport: (reference: AudioFeatures, candidate: AudioFeatures) => stringmeasureLine: (font: BitmapFont, chars: readonly RichChar[]) => numbermeasureText: (font: BitmapFont, text: string) => numbermeasureVectorText: (m: FontMetric, text: string, size: number) => numbermergePlayerFrames: (players: readonly string[], inputs: ReadonlyMap<string, readonly string[]>) => string[]midiToFreq: (midi: number, a4?: number) => numbermidiToName: (midi: number) => stringmissingControlHints: (world: World<Record<string, unknown>>, inputMap: Readonly<Record<string, readonly string[]>>) => string[]mix: (a: string, b: string, t: number) => stringmixLinear: (a: string, b: string, t: number) => stringmixMono: (bus: StereoBuffer, sig: Samples, startSample: number, gain?: number, pan?: number) => voidmixPose: (a: Pose, b: Pose, t: number, out?: Pose) => PosemoveRect: (map: TilemapData, rect: Rect, dx: number, dy: number, opts?: MoveOpts) => MoveResultmutateColor: (rng: Rng, hex: string, amounts?: DriftAmounts) => stringnetMessage: <T extends Omit<NetMessage, “v”>>(msg: T) => T & { v: number; }nextBarBoundary: (elapsedSec: number, secPerBar: number, epsilon?: number) => numbernextStep: () => WaitnineSlice: (rect: Rect, style: NineSliceStyle, z?: number, transform?: Transform) => DrawCommand[]normalize: (buf: StereoBuffer, target?: number) => voidnoteToMidi: (name: string) => numberoccludersFromTilemap: (map: TilemapData) => ContourSegment[]onsetDensity: (sig: Samples, sampleRate?: number) => numberopenVoicing: (chord: number[]) => number[]optimalPolicy: <S, M>(opts?: SolveOptions) => Policy<S, M>oscillate: (time: number, frequency?: number, wave?: WaveKind) => numberpackVarints: (nums: readonly number[]) => stringpanFromOffset: (dx: number, spread?: number) => numberpanGains: (pan: number) => { l: number; r: number; }parseLightRun: (run: DrawCommand[]) => ParsedLightRun | nullparseRich: (markup: string, colorMap?: Record<string, string>) => RichChar[]parseSnapshot: (text: string | null) => WorldSnapshot | nullpassableFromTilemap: (map: TilemapData) => Passablepeak: (buf: StereoBuffer) => numberpeakAmp: (sig: Samples) => numberpickEntry:(rng: Rng, entries: readonly WeightedEntry []) => T pickForm: <TState extends Record<string, unknown> = Record<string, unknown>>(def: GameDefinition, containerAspect: number) => ResolvedForm pitchToFreq: (pitch: string | number, a4?: number) => numberpixelsToCommands: (buf: PixelBuffer, palette: readonly Swatch[], options?: PixelDrawOptions) => RectCommand[]platformerReachable: (data: LevelData, opts: PlatformerReachOptions) => ReachReportplayerIds: (count: number) => string[]pointQuery: (rw: RigidWorld, x: number, y: number, mask?: number) => RigidBody | undefinedpollDirector: (waves: readonly WaveDef[], state: DirectorState, time: number, rng?: Rng | undefined) => SpawnEvent[]polygonBox: (w: number, h: number) => RigidShapeprogression: (tonic: number, mode: “major” | “minor” | “harmonicMinor” | “melodicMinor” | “dorian” | “phrygian” | “lydian” | “mixolydian” | “locrian” | “majorPentatonic” …progressionPuzzle: (world: WorldGraphDef, mode?: CompletionMode) => Puzzle<ProgressState, ProgressMove>proveCompletable: (world: WorldGraphDef) => SolveResultproveFullCompletion: (world: WorldGraphDef) => SolveResultpump: (world: World<Record<string, unknown>>, frames: number, actions?: string[]) => voidquantizeAngle: (radians: number, buckets: number) => numberrace: (…waits: Wait[]) => WaitradialGradient: (stops: readonly StopInput[], opts?: { cx?: number | undefined; cy?: number | undefined; r?: number | undefined; }) => RadialGradientrampIssues: (difficulty: readonly number[], opts?: RampOptions) => string[]rampStats: (difficulty: readonly number[]) => RampStatsrandomPolicy: <S, M>(seed: number, opts?: RandomPolicyOptions) => Policy<S, M>rayCastRigid: (rw: RigidWorld, x0: number, y0: number, x1: number, y1: number, mask?: number) => RigidRayHit | nullraycastTiles: (map: TilemapData, x0: number, y0: number, x1: number, y1: number) => RayHitreachableRegions: (world: WorldGraphDef, abilities: Iterable) => string[] readCrest: (handle: string) => CrestreconstructPath:(cameFrom: Map<string, N>, key: NodeKey , start: N, goal: N) => N[] recordTimeline: (world: World<Record<string, unknown>>, frames: string[][]) => ProbeFrame[]rectBlocked: (map: TilemapData, x: number, y: number, w: number, h: number, solids?: SolidRect[]) => booleanrectContains: (r: Rect, p: Vec2) => booleanrectsOverlap: (a: Rect, b: Rect) => booleanregisterNode: (type: string, factory: NodeFactory) => voidregularPolygon: (sides: number, radius: number, rotation?: number) => number[]regularPolyPoints: (sides: number, r: number, rotation?: number) => number[]relLuminance: (hex: string) => numberremoveBody: (rw: RigidWorld, id: number) => voidremoveJoint: (rw: RigidWorld, id: number) => voidrenderAudioCard: (buf: StereoBuffer, meta: AudioCardMeta) => stringrenderAudioFilmstrip: (buf: StereoBuffer, opts?: AudioFilmstripOptions) => stringrenderFilmstrip: (world: World<Record<string, unknown>>, frames: string[][], opts: FilmstripOptions) => stringrenderSong: (song: Song, opts?: RenderSongOptions) => StereoBufferrenderSongAsync: (song: Song, opts?: RenderSongAsyncOptions) => PromiserenderSound: (spec: SoundSpec, opts?: { rng?: Rng | undefined; sampleRate?: number | undefined; }) => SamplesrenderToSVGString: (commands: DrawCommand[], width: number, height: number, background?: string) => stringreplay: (makeWorld: WorldFactory, log: InputLog) => { finalHash: string; hashes: string[]; }replaySession: (def: GameDefinition<Record<string, unknown>>, session: PlaytestSession, opts?: number | ReplayOptions | undefined) => World<…>resetNodeIds: (start?: number) => voidresetZzfxWarnings: () => voidresolveTracks: (def: ClipDef, skeleton: Skeleton) => BoundTrack[]resolveTuning: (spec: TuningSpec | undefined, overrides?: TuningValues | undefined) => TuningValuesresourceGlyph: (draw: string | GlyphDraw, hue: string, size?: number, set?: GlyphSet) => NodereverbSendSteps: (dry: StereoBuffer, send: StereoBuffer, opts?: ReverbOptions, window?: number) => Generator<void, void, void>reverbSteps: (buf: StereoBuffer, opts?: ReverbOptions, window?: number) => Generator<void, void, void>rigidStep: (rw: RigidWorld, dt: number) => ContactEvent[]rleDecode: (input: string) => stringrleEncode: (input: string) => stringrms: (sig: Samples) => numberroomCenter: (r: Room) => { x: number; y: number; }rootless: (chord: number[], targetMidi?: number | undefined) => number[]rumble: (opts?: RumbleOptions) => voidrunAblation: <S, M>(exp: AblationExperiment<S, M>, opts?: AblationOptions) => AblationReportrunBrowser: (def: GameDefinition<Record<string, unknown>>, mount: HTMLElement, opts?: RunOptions) => GameHandlerunBrowserNet: (def: GameDefinition<Record<string, unknown>>, mount: HTMLElement, opts: NetRunOptions) => NetGameHandlerunFeelGates: (spec: FeelSpec, ctx?: FeelContext) => FeelReportrunHeadless: <TState extends Record<string, unknown> = Record<string, unknown>>(def: GameDefinition, inputLog?: InputLog | undefined) => HeadlessResult runProject: (project: ProjectDefinition, mount: HTMLElement, opts?: WorkshopOptions) => WorkshopHandlerunWorkshop: (baseDef: GameDefinition<Record<string, unknown>>, mount: HTMLElement, opts?: WorkshopOptions) => WorkshopHandlesafeAreaIssues: (commands: DrawCommand[], opts: SafeAreaOptions) => string[]safeViewport: (rect: { width: number; height: number; }, view: ViewBox, safeW: number, safeH: number) => ViewportsalienceIssues: (commands: DrawCommand[], avatarFill: string, background: string, opts?: SalienceOptions) => string[]sampleClip: (def: ClipDef, elapsed: number) => SampledChannel[]sampleGradient: (stops: readonly string[], t: number) => stringsamplePose: (def: ClipDef, phase: number) => PosesampleTrack: (keys: Keyframe[], t: number) => numbersaveCanvas: (el: HTMLElement | SVGElement | undefined, filename?: string) => booleanscaleMidis: (tonic: number, mode?: “major” | “minor” | “harmonicMinor” | “melodicMinor” | “dorian” | “phrygian” | “lydian” | “mixolydian” | “locrian” | “majorPentatonic”…scalePitchClasses: (tonic: number, mode?: “major” | “minor” | “harmonicMinor” | “melodicMinor” | “dorian” | “phrygian” | “lydian” | “mixolydian” | “locrian” | “majorPentatonic”…scatter: (x: number, y: number, probability: number, seed?: number) => booleanscatterCells: (x0: number, y0: number, cols: number, rows: number, probability: number, seed?: number) => { x: number; y: number; }[]scoreTrack: (buf: StereoBuffer, profile: GenreProfile) => QualityScorescreenNav: () => ScreenNav | nullscriptedPlaythrough: (world: World<Record<string, unknown>>, script: Segment[]) => PlaythroughResultscriptToFrames: (script: InputScript) => string[][]scrubTo: (world: World<Record<string, unknown>>, def: GameDefinition<Record<string, unknown>>, ring: SnapshotRing, inputFrames: readonly string[][], axesLog: readonly…secondsPerBar: (bpm: number, beatsPerBar?: number) => numberserializeSnapshot: (snap: WorldSnapshot) => stringseries: (timeline: ProbeFrame[], key: string) => unknown[]setDebugDraw: (on: boolean) => voidsetHapticsEnabled: (on: boolean) => voidsetOverlayHost: (el: HTMLElement) => voidsetScreenObserver: (cb: ((kind: “show” | “hide”, title?: string | undefined) => void) | null) => voidsetToastHost: (el: HTMLElement) => voidshadeHex: (hex: string, f: number) => stringshadowDef: (s: Shadow, id: string) => stringshadowQuads: (light: Vec2, radius: number, segs: readonly ContourSegment[]) => number[][]shapeBBox: (c: DrawCommand) => BBox | nullshapeBox: (cmd: DrawCommand) => { x: number; y: number; w: number; h: number; } | nullshareURL: (opts?: ShareOptions) => Promise<“shared” | “copied” | “unavailable”>showScreen: (spec: ScreenSpec) => ScreenHandlesignalHash: (sig: Samples) => numbersleep: (seconds: number) => WaitsmoothClosedPath: (points: Vec2[], tension?: number) => stringsmoothOpenPath: (points: Vec2[], tension?: number) => stringsnapAxis: (value: number, buckets: number, min?: number, max?: number) => numbersoftClip: (x: number) => numbersoftClipInPlace: (buf: StereoBuffer) => voidsolidNeighbours: (g: Grid, x: number, y: number) => numbersolve: <State, Move>(puzzle: Puzzle<State, Move>, options?: SolveOptions) => SolveResultsolveFabrik: (root: Vec2, lengths: number[], target: Vec2, opts?: { maxIter?: number | undefined; tolerance?: number | undefined; initial?: Vec2[] | undefined; }) => Fabr…solveJoint: (j: Joint, A: RigidBody, B: RigidBody, dt: number, scratch: JointScratch) => voidsolveTwoBoneIK: (root: Vec2, l0: number, l1: number, target: Vec2, bendDir?: 1 | -1) => TwoBoneResultsongBeats: (song: Song) => numbersongDuration: (song: Song) => numbersongRenderCost: (song: Song, opts?: { sampleRate?: number | undefined; }) => SongRenderCostsortCommands: (cmds: DrawCommand[]) => DrawCommand[]soundtrackCue: (id: string) => SoundtrackCue | undefinedspatialMix: (dx: number, dy: number, hearing?: number, rolloff?: number) => SpatialMixspecFromZzfx: (p: readonly (number | undefined)[]) => SoundSpecspectralCentroid: (sig: Samples, sampleRate?: number) => numbersplitByLightLayer: (sorted: DrawCommand[]) => LightRunSplitspringStep: (s: SpringState, target: number, omega: number, dt: number) => SpringStatestar: (points: number, outer: number, inner: number, rotation?: number) => number[]steer2D: (px: number, py: number, tx: number, ty: number, out: string[], dead?: number) => voidstepPattern: (grid: string, pitch: Pitch, opts?: StepGridOptions) => Note[]stepPlatformer: (s: PlatformerState, input: PadInput, dt: number, map: TilemapData, cfg?: PlatformerConfig, platforms?: Platform[]) => PlatformerEventsstereoDuration: (buf: StereoBuffer) => numberstereoFrames: (buf: StereoBuffer) => numberstereoWidth: (buf: StereoBuffer) => numberstopHaptics: () => voidsubSeed: (seed: number, i: number) => numbertelegraphIssues: (timeline: readonly TelegraphFrame[], minFrames: number, label?: string) => string[]terrainHeight: (col: number, opts: TerrainOptions) => numberterrainSlice: (startCol: number, count: number, opts: TerrainOptions) => number[]textBox: (cmd: TextCommand) => TextBoxtextToCommands: (font: BitmapFont, layout: TextLayout, options?: TextDrawOptions) => RectCommand[]tileAt: (map: TilemapData, tx: number, ty: number) => numbertileAtPoint: (map: TilemapData, x: number, y: number) => numbertilemapFromAscii: (rowsAscii: string[], tileSize?: number, chars?: Record<string, TileId>) => TilemapDatatoast: (title: string, opts?: ToastOptions) => () => voidtoggleFullscreen: () => voidtranspose: (notes: number[], semitones: number) => number[]typewriterCount: (total: number, elapsedSec: number, charsPerSec: number) => numberunpackVarints: (input: string) => number[]validateWorld: (world: WorldGraphDef) => string[]valueNoise: (x: number, y: number, seed?: number) => numbervibrate: (pattern: number | number[]) => voidviewBoxToDesign: (rect: { left: number; top: number; width: number; height: number; }, view: ViewBox, clientX: number, clientY: number) => Vec2vnorm: (a: Vec2) => Vec2voiceLead: (chords: number[][]) => number[][]wait: (frames: number) => SegmentwaitFor: (cond: () => boolean) => WaitwakeBody: (b: RigidBody) => voidwangTile: (mask: number) => WangTilewarnCommandOnce: (kind: string, reason: string, detail?: unknown) => voidweatherEnvelope: (t: number, keys: readonly WeatherKey[]) => numberweightedIndex: (rng: Rng, weights: readonly number[]) => numberweightedPick:(rng: Rng, items: readonly T[], weights: readonly number[]) => T wipeStep: (transition: ScreenTransition, opts?: WipeOptions & { name?: string | undefined; }) => CinematicStepwithAlpha: (hex: string, alpha: number) => stringworldPoints: (b: RigidBody) => number[]wrap: (v: number, lo: number, hi: number) => numberwrapVectorText: (m: FontMetric, text: string, maxWidth: number, size: number) => string[]zcr: (sig: Samples, sampleRate?: number) => number
interfaces (324)
AblationExperimentAblationOptionsAblationReportAcceptedProofAchievementDefAchievementEntryActBoundsActSpecAgencyOptionsAgencyStatsAlbumTrackAmbientStyleAnalyzeOptionsAnnotationAnnotationContextArcCommandAtomCueAtomDefinitionAtomManifestEntryAudioAssertionAudioCardMetaAudioExpectationAudioFeaturesAudioFilmstripOptionsAutotileDrawOptionsBandBalanceBBoxBehaviorBfsResultBitmapFontBitmapTextConfigBlendSampleBone2DConfigBotCtxBoundTrackBreakpointCameraBoundsCameraConfigCameraControllerConfigCameraOptionsCampaignCampaignLevelCampaignSpecCaptureTargetCardLayoutCardSpecCardTemplateCardThemeCaveOptionsCellChipCinematicStepCircleCommandClipDefClipEventClipPlayerConfigClockConfigComponentsContactEventContactPointContourOptionsContourSegmentCoreEventsCoroutineHandleCreateWorldOptionsCrestCrestSvgOptionsDeathClusterDebugDrawOptionsDebugHostDebugPaneOptionsDeckSpecDepthSortConfigDesyncInfoDeterminismReportDeviceTrackerOptionsDifficultyBandDirectorStateDistanceJointDistanceJointDefDomHarnessDriftAmountsDriveResultDrumLoopDungeonDungeonOptionsDuotoneOptionsDuotoneSchemeEffectRowEllipseCommandFabrikResultFeatureDeltaFeedbackOptionsFeedbackResponseFeelContextFeelReportFeelSpecFilmstripOptionsFloatStyleFontMetricForgivenessOptionsForgivenessSpecFormFactorFractalOptionsFutileVerbGameDefinitionGameHandleGamepadSourceOptionsGeneratedLevelGenerateOptionsGenerateReportGenreProfileGenreTrackGradientStopGreedyPolicyOptionsGridHayaboxCourtierHayaboxMoodHayaoCaptureHeadlessResultHeroConfigHeroMotionHesitationSpanHotContextHSLIkTargetConfigImageCommandInputLogInputSourceIsoConfigIsoPrismConfigIsoProjectionJointScratchKeyframeKnobEventLayoutOptionsLevelChangeLevelDataLevelEntityLevelSpecLightingOptionsLightLayerConfigLightRunSplitLinearGradientLintOptionsLockstepOptionsLoopbackOptionsLoopDeckHandleLoopStemManifoldMatchResultMenuActionMenuGamepadOptionsMoveOptsMoveResultMusicLayerMusicLintResultNetGameNetGameHandleNetRunOptionsNetSessionConfigNineSliceStyleNodeConfigNotePadInputPaintPaletteParallaxLayerConfigParsedLightParsedLightRunParticleStylePathCommandPhaseDefPixelDrawOptionsPlacedGlyphPlanBotPlatformPlatformerConfigPlatformerEventsPlatformerReachOptionsPlatformerStatePlaytestReportPlaytestSessionPlaythroughResultPointerReadoutPointerSourceOptionsPointerTargetPointLightConfigPolyCommandPostProcessPassPreparedSongPreparedStemPrismaticJointPrismaticJointDefProgressStateProjectDefinitionProjectManifestPuzzleQualityScoreQuitContextRadialGradientRampOptionsRampStatsRandomPolicyOptionsRayHitReachReportRecorderInitRectRectCommandRendererRendererConfigRenderSongAsyncOptionsRenderSongOptionsReplayOptionsResolvedFormReverbOptionsRevoluteJointRevoluteJointDefRichCharRigidBodyRigidBodyDefRigidRayHitRigidWorldRigidWorldOptsRngStateRollbackOptionsRoomRoomCallbacksRoomClientOptionsRoomHostOptionsRumbleOptionsRunOptionsSafeAreaOptionsSalienceOptionsSampledChannelSampleHandleScreenEventScreenHandleScreenNavScreenSpecScriptSegmentSegmentSerializedNodeSettingsShadowShareOptionsShellOptionsSkeletonDebugConfigSliderSpecSlotBoxSoftlockReportSolidRectSolveOptionsSolveResultSongSongHandleSongRenderCostSoundSpecSoundtrackCueSpatialMixSpawnEventSplashConfigSpringStateSpriteConfigStateHandlersStepGridOptionsStereoBufferStorageAdapterTelegraphFrameTerrainOptionsTextBoxTextCommandTextConfigTextDrawOptionsTextLayoutTextLayoutOptionsTextureSpriteConfigTileCellTileLayerConfigTilemapDataTimelineEntryTimerConfigToastOptionsToggleSpecToneTouchButtonTouchControlsLayoutTouchStickTrackTrackDefTransformTransitionTransitionConfigTransportTuningKnobTuningSpecTwoBoneResultUpgradeDefVariantVariantRefVec2VerletChainConfigViewBoxViewportVolumesWallClockMarkWangTileWaveDefWeatherKeyWebGLRendererConfigWeightedEdgeWeightedEntryWeldJointWeldJointDefWipeOptionsWorkshopHandleWorkshopOptionsWorldConfigWorldContextWorldEdgeWorldGraphDefWorldPickupWorldRegionWorldSnapshot
types (70)
AtomKindAxisFrameBodyKindBoolGridClipChannelClipLoopCompletionModeCrestArrangementCrestBordureCrestChargeCrestDivisionCrestHueCrestOrdinaryCrestShapeCrestTreatmentDistanceModelDrawCommandEaseEasingEdgeEndReasonFeedbackChannelFeedbackContractGamepadMapGlyphDrawGlyphSetGradientHeroStateInputDeviceKindInputMapInputScriptInstrumentJointListenerNeighboursNetMessageNodeFactoryNodeKeyOccluderPassablePauseModePitchPlayerIdPolicyPoseProbeFrameProgressMoveRegaliaSchemeNameRigidShapeSamplesScaleNameShapeSlotSlotAnchorStepExecSwatchTextAlignTileIdTileProducerTriggerTuningValueTuningValuesUniformValueWaitWangFrameWaveWaveKindWeightedNeighboursWipeKindWorldFactory
consts (88)
ALBUM: { title: string; subtitle: string; concept: string; tracks: AlbumTrack[]; }AMBIENT_PRESETS: { readonly snow: (colors?: string[]) => AmbientStyle; readonly rain: (colors?: string[]) => AmbientStyle; readonly ash: (colors?: string[]) => AmbientStyle; }atomId: (title: string) => stringaudio: AudioBusBACKGROUND_PROFILE: GenreProfileBLEED_MAX: 1.6BLOOM_PIPELINE: PostProcessPass[]CARD_DAY: CardThemeCARD_NIGHT: CardThemeCARD_TEMPLATE: CardTemplateclamp: (v: number, lo: number, hi: number) => numberCLIP_CHANNELS: readonly ClipChannel[]DEFAULT_GAMEPAD_MAP: GamepadMapDEFAULT_GLYPHS: GlyphSetDEFAULT_INPUT_MAP: Readonly<Record<string, readonly string[]>>DEFAULT_PALETTE: PaletteDEFAULT_PLATFORMER: PlatformerConfigDEFAULT_SESSION_CONFIG: NetSessionConfigDEFAULT_TILE_CHARS: Record<string, TileId>deg2rad: (d: number) => numberdlog10: (x: number) => numberdlog2: (x: number) => numberEASINGS: Record<string, Easing>FLOAT_PRESETS: { readonly damage: (color?: string) => FloatStyle; readonly crit: (color?: string) => FloatStyle; readonly heal: (color?: string) => FloatStyle; readonly lab…FONT_5: BitmapFontGENRE_PROFILES: Record<string, GenreProfile>GENRES: GenreTrack[]GLYPH_NATIVE: 22HAYABOX: { title: string; subtitle: string; concept: string; bpm: number; beatsPerBar: number; bars: number; courtiers: HayaboxCourtier[]; }HAYABOX_BARS: 8HAYABOX_BEATS_PER_BAR: 4HAYABOX_BPM: 96HAYABOX_SCALE: readonly string[]HERO_CLIPS: { readonly idle: ClipDef; readonly run: ClipDef; readonly jump: ClipDef; readonly fall: ClipDef; readonly wallSlide: ClipDef; readonly death: ClipDef; readon…HERO_FOOT_OFFSET: numberHERO_STATES: (“idle” | “run” | “jump” | “fall” | “wallSlide” | “death” | “spawn”)[]IDENTITY: TransformINSTRUMENTS: Record<string, Instrument>invLerp: (a: number, b: number, v: number) => numberisLightCommand: (c: DrawCommand) => booleanknob: { num(key: string, opts: { default: number; min?: number | undefined; max?: number | undefined; step?: number | undefined; label?: string | undefined; group?…LAYER_DEBUG: 2LAYER_HUD: 1LAYER_LIGHT: 0.5LAYER_WORLD: 0lerp: (a: number, b: number, t: number) => numberlerpDamp: (current: number, target: number, lambda: number, dt: number) => numberLOOPS: DrumLoop[]mapHeight: (map: TilemapData) => numbermapWidth: (map: TilemapData) => numberMOUSE_ACTIONS: readonly [“mouse.left”, “mouse.right”, “mouse.middle”]NEIGHBORS_4: readonly Cell[]NEIGHBORS_8: readonly Cell[]NET_PROTOCOL_VERSION: 1PAD_NEUTRAL: PadInputPALETTES: Record<string, Palette>PANEL_PRESETS: { readonly parchment: () => NineSliceStyle; readonly slate: () => NineSliceStyle; }PARTICLE_PRESETS: { readonly dust: (colors?: string[]) => ParticleStyle; readonly burst: (colors?: string[]) => ParticleStyle; readonly hit: (colors?: string[]) => ParticleSty…playerAction: (player: string, action: string) => stringplayerInput: (world: World<Record<string, unknown>>, player: string) => PlayerInputposeKey: (target: string, channel: string) => stringrad2deg: (r: number) => numberREGALIA: { readonly paper: “#ffffff”; readonly mist: “#f4f6fb”; readonly cloud: “#eef1f6”; readonly line: “#e7e8ee”; readonly muted: “#8b90a6”; readonly soft: “#5a607…REGALIA_DAY: PaletteREGALIA_NIGHT: PaletteREGALIA_SCHEME_NAMES: (“gold” | “meadow” | “dusk” | “rose” | “bark”)[]REGALIA_SCHEMES: { readonly gold: DuotoneScheme; readonly meadow: DuotoneScheme; readonly dusk: DuotoneScheme; readonly rose: DuotoneScheme; readonly bark: DuotoneScheme; }remap: (v: number, a0: number, a1: number, b0: number, b1: number) => numberSAMPLE_RATE: 44100SAVE_FORMAT_VERSION: 1SCALES: { readonly major: readonly [0, 2, 4, 5, 7, 9, 11]; readonly minor: readonly [0, 2, 3, 5, 7, 8, 10]; readonly harmonicMinor: readonly [0, 2, 3, 5, 7, 8, 11]; …screenRect: (w: number, h: number) => Rectsettings: SettingsStoresmoothstep: (edge0: number, edge1: number, v: number) => numberSOUNDTRACK: { title: string; subtitle: string; concept: string; designNote: string; cues: SoundtrackCue[]; }spring: (value?: number) => SpringStateTAU: numberTILE: { readonly EMPTY: 0; readonly SOLID: 1; readonly ONEWAY: 2; readonly HAZARD: 3; }tileCenter: (tx: number, ty: number, tileSize: number) => { x: number; y: number; }vadd: (a: Vec2, b: Vec2) => Vec2vdist: (a: Vec2, b: Vec2) => numbervdot: (a: Vec2, b: Vec2) => numbervec2: (x?: number, y?: number) => Vec2VERSION: “0.5.3”vlen: (a: Vec2) => numbervscale: (a: Vec2, s: number) => Vec2vsub: (a: Vec2, b: Vec2) => Vec2WEBGL_EFFECTS: { readonly passthrough: “#version 300 es\nprecision mediump float;\nin vec2 v_uv;\nuniform sampler2D u_scene;\nuniform sampler2D u_prev;\nout vec4 fragColor;…
exports (2)
Node2DOVERPASS_600