Documentation Index
Fetch the complete documentation index at: https://v5.rpgjs.dev/llms.txt
Use this file to discover all available pages before exploring further.
Rpg Client Engine
Reference for theRpgClientEngine class.
Members
- addComponentAnimation
- addSound
- addSpriteComponentBehind
- addSpriteComponentInFront
- cameraFollowTargetId
- clear
- clearClientPredictionStates
- flash
- getComponentAnimation
- getSound
- getSpriteSheet
- mapShakeTrigger
- playSound
- processAction
- processDash
- pointer
- setCameraFollow
- setKeyboardControls
- setSoundResolver
- setSpritesheetResolver
- startTransition
- stopAllSounds
- stopSound
addComponentAnimation
Add a component animation to the engine Component animations are temporary visual effects that can be displayed on sprites or objects, such as hit indicators, spell effects, or status animations.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
componentAnimation:{ component: any, id: string }
Returns
The added component animation configurationExamples
addSound
Add a sound to the engine Adds a sound to the engine’s sound cache. The sound can be:- A simple object with
idandsrcproperties - A Howler instance
- An object with a
play()method
src property, a Howler instance will be created automatically.
- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
sound:anyid?:string
Returns
The added soundExamples
addSpriteComponentBehind
Add a component to render behind sprites Components added with this method will be displayed with a lower z-index than the sprite Supports multiple formats:- Direct component:
ShadowComponent - Configuration object:
{ component: LightHalo, props: {...} } - With dynamic props:
{ component: LightHalo, props: (object) => {...} } - With dependencies:
{ component: HealthBar, dependencies: (object) => [object.hp, object.param.maxHp] }
- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
component:any
Returns
The added component or configurationExamples
addSpriteComponentInFront
Add a component to render in front of sprites Components added with this method will be displayed with a higher z-index than the sprite Supports multiple formats:- Direct component:
HealthBarComponent - Configuration object:
{ component: StatusIndicator, props: {...} } - With dynamic props:
{ component: HealthBar, props: (object) => {...} } - With dependencies:
{ component: HealthBar, dependencies: (object) => [object.hp, object.param.maxHp] }
- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
component:any | { component: any, props: (object: any) => any, dependencies?: (object: any) => any[] }
Returns
The added component or configurationExamples
cameraFollowTargetId
ID of the sprite that the camera should follow. null means follow the current player- Source:
packages/client/src/RpgClientEngine.ts - Kind:
property - Defined in:
RpgClientEngine
Signature
clear
Clear all client resources and reset state This method should be called to clean up all client-side resources when shutting down or resetting the client engine. It:- Destroys the PIXI renderer
- Stops all sounds
- Cleans up subscriptions and event listeners
- Resets scene map
- Stops ping/pong interval
- Clears prediction states
Design
This method is used primarily in testing environments to ensure clean state between tests. In production, the client engine typically persists for the lifetime of the application.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Examples
clearClientPredictionStates
Clear client prediction states for cleanup Removes old prediction states and input history to prevent memory leaks. Should be called when changing maps or disconnecting.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Examples
flash
Trigger a flash animation on a sprite This method allows you to trigger a flash effect on any sprite from client-side code. The flash can be configured with various options including type (alpha, tint, or both), duration, cycles, and color.Design
The flash is applied directly to the sprite object using its flash trigger. This is useful for client-side visual feedback, UI interactions, or local effects that don’t need to be synchronized with the server.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
spriteId?:stringoptions?:{ type?: 'alpha' | 'tint' | 'both'; duration?: number; cycles?: number; alpha?: number; tint?: number | string; }
Examples
getComponentAnimation
Get a component animation by its ID Retrieves the EffectManager instance for a specific component animation, which can be used to display the animation on sprites or objects.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
id:string
Returns
The EffectManager instance for the animationExamples
getSound
Get a sound by ID, using resolver if not found in cache This method first checks if the sound exists in the cache. If not found and a resolver is set, it calls the resolver to create the sound. The resolved sound is automatically cached for future use.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
id:string
Returns
The sound if found or created, or undefined if not found and no resolverExamples
getSpriteSheet
Get a spritesheet by ID, using resolver if not found in cache This method first checks if the spritesheet exists in the cache. If not found and a resolver is set, it calls the resolver to create the spritesheet. The resolved spritesheet is automatically cached for future use.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
id:string
Returns
The spritesheet if found or created, or undefined if not found and no resolverExamples
mapShakeTrigger
Trigger for map shake animation- Source:
packages/client/src/RpgClientEngine.ts - Kind:
property - Defined in:
RpgClientEngine
Signature
playSound
Play a sound by its ID This method retrieves a sound from the cache or resolver and plays it. If the sound is not found, it will attempt to resolve it using the soundResolver. Uses Howler.js for audio playback instead of native Audio elements.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
soundId:stringoptions?:{ volume?: number; loop?: boolean }
Examples
processAction
Send an action input to the server. Use the optionaldata payload for context
such as a pointer position, selected target, or UI command details. The server
receives the normalized payload in player.onInput().
For the full flow, including keyboard action bindings and the difference between
custom actions and event interactions, see
Custom action inputs.
- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
action: Action name or control valuedata?: Optional custom payload sent with the action
Examples
processDash
Start a predicted dash for the current player. The dash is sent through the movement channel, so the client can simulate it immediately and the server can validate the authoritative result.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Examples
pointer
Read the latest pointer position tracked by the client canvas.world() returns
coordinates in map/world space, suitable for action payloads such as projectile
targets. screen() returns the latest canvas/global pointer position.
- Source:
packages/client/src/RpgClientEngine.ts - Kind:
property - Defined in:
RpgClientEngine
Signature
Examples
interactions
Register client-only pointer behaviors for map sprites. Use interactions for hover popovers, selection feedback, drag previews, cursor changes, and other CanvasEngine overlays. Nothing is sent to the server unless a behavior callsctx.action(...).
- Source:
packages/client/src/services/interactions.ts - Kind:
property - Defined in:
RpgClientEngine
Mental Model
interactions is a client-side layer attached to rendered map sprites. It does
not change gameplay state by itself.
Use it for:
- hover popovers
- selection states
- cursor changes
- local highlights and drag previews
- hitbox-based pointer filtering
- explicit pointer-driven actions
ctx.action(...) and validate the request on the server.
Registering A Behavior
target can be:
- a sprite/event id
- an event name
- a sprite
_type, such as"event"or"player" "*"for every sprite- a function receiving
{ client, target, sprite }
From A Client Module
Useinteractions.setup() when registering behaviors from a module:
interactions.use is also accepted:
Hover Popover
Register a CanvasEngine component as an overlay for an existing event:target/sprite: the RPGJS client spritestate:{ hovered, pressed, selected, dragging, data, overlays }bounds: the default visual boundshitboxBounds: the gameplay hitbox boundsgraphicBounds: the rendered graphic boundspointer: the client pointer helperclient: the currentRpgClientEngine
defineProps() are prop accessors.
Read the sprite with sprite() or target() before accessing its fields.
Component bounds are local to the sprite, so bounds() can be used directly to
draw overlays attached to that sprite.
Example:
Client-Only Selection
selectable() stores selection state locally. It does not send an action.
state().selected:
Explicit Server Action
Callctx.action(...) only when the pointer gesture is meant to perform
gameplay. This delegates to engine.processAction(...).
eventId should be treated as intent, not authority.
Hitbox-Based Interactions
UsehitTest() to choose the clickable or draggable area. This is useful when a
sprite graphic is larger than its gameplay body.
Inside handlers and hitTest(), ctx.bounds() returns world-space bounds so it
can be compared directly with ctx.pointer.world().
ctx.bounds('hitbox'): RPGJS gameplay hitboxctx.bounds('graphic'): rendered graphic boundsctx.bounds(): default bounds, currently graphic-first
Drag And Drop To A Tile
dragToTile() starts a local drag state and sends an action on drop.
ctx.pointer.tile() returns:
data:
Custom Drag Preview
For full control, use low-level handlers:DOMContainer, Graphics, Sprite, or Text.
Low-Level Behavior API
A behavior can define these handlers:pointerenterpointerleavepointeroverpointeroutpointerdownpointeruppointermoveclickdragstartdragmovedropcancel
Interaction Context
Every handler receivesctx:
Helpers
RPGJS exports small helpers for common cases:engine.interactions.use(...).
Network Rules
- Pointer movement, hover, overlays, selection, drag previews, and cursor changes are client-only.
ctx.overlay.*,ctx.state.*, andctx.select()do not send packets.ctx.action(...)is the only interaction helper that sends an action to the server.- Server code must validate distance, permissions, target visibility, and map state before applying gameplay changes.
setCameraFollow
Set the camera to follow a specific sprite This method changes which sprite the camera viewport should follow. The camera will smoothly animate to the target sprite if smoothMove options are provided.Design
The camera follow target is stored in a signal that is read by sprite components. Each sprite checks if it should be followed by comparing its ID with the target ID. When smoothMove options are provided, the viewport animation is handled by CanvasEngine’s viewport system.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
targetId:string | nullsmoothMove?:boolean | { time?: number; ease?: string }
Examples
setKeyboardControls
Assigns a CanvasEngine KeyboardControls instance to the dependency injection context This method registers a KeyboardControls instance from CanvasEngine into the DI container, making it available for injection throughout the application. The particularity is that this method is automatically called when a sprite is displayed on the map, allowing the controls to be automatically associated with the active sprite.Design
-
The instance is stored in the DI context under the
KeyboardControlstoken -
It’s automatically assigned when a sprite component mounts (in
character.ce) - The controls instance comes from the CanvasEngine component’s directives
-
Once registered, it can be retrieved using
inject(KeyboardControls)from anywhere -
Source:
packages/client/src/RpgClientEngine.ts -
Kind:
method -
Defined in:
RpgClientEngine
Signature
Parameters
controlInstance:any
Examples
setSoundResolver
Set a resolver function for sounds The resolver is called when a sound is requested but not found in the cache. It can be synchronous (returns directly) or asynchronous (returns a Promise). The resolved sound is automatically cached for future use.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
resolver:(id: string) => any | Promise<any>
Examples
setSpritesheetResolver
Set a resolver function for spritesheets The resolver is called when a spritesheet is requested but not found in the cache. It can be synchronous (returns directly) or asynchronous (returns a Promise). The resolved spritesheet is automatically cached for future use.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
resolver:(id: string) => any | Promise<any>
Examples
startTransition
Start a transition Convenience method to display a transition by its ID using the GUI system.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
onFinish prop.
Signature
Parameters
id:stringprops?:any
Examples
stopAllSounds
Stop all currently playing sounds This method stops all sounds that are currently playing. Useful when changing maps to prevent sound overlap.- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Examples
stopSound
Stop a sound that is currently playing This method stops a sound that was previously started withplaySound().
- Source:
packages/client/src/RpgClientEngine.ts - Kind:
method - Defined in:
RpgClientEngine
Signature
Parameters
soundId:string