Move Commands
Movement APIs, movement strategies, and move route helpers.Members
- addMovement
- addMovement
- animationFixed
- applyIceMovement
- applyIceMovement
- breakRoutes
- clearAllPlayerStates
- clearMovements
- clearPlayerState
- dash
- dash
- directionFixed
- followPath
- followPath
- frequency
- getActiveMovements
- hasActiveMovements
- infiniteMoveRoute
- knockback
- knockback
- moveRoutes
- moveTo
- moveTo
- onStuck
- oscillate
- oscillate
- removeMovement
- replayRoutes
- shootProjectile
- shootProjectile
- stopMoveTo
- stuckThreshold
- stuckTimeout
- through
- throughEvent
- throughOtherPlayer
- WithMoveManager
addMovement
Add a movement strategy to this entity Returns a Promise that resolves when the movement completes (whenisFinished() returns true).
If the strategy doesn’t implement isFinished(), the Promise resolves immediately.
- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
WithMoveManagerClass
Signature
Parameters
strategy:MovementStrategyoptions?:MovementOptions
Returns
Promise that resolves when the movement completesExamples
addMovement
Add a custom movement strategy to this entity Returns a Promise that resolves when the movement completes.- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Parameters
strategy:MovementStrategyoptions?:MovementOptions
Returns
Promise that resolves when the movement completesanimationFixed
Whether animation changes are locked (prevents automatic animation changes)- Source:
packages/server/src/Player/MoveManager.ts - Kind:
property - Defined in:
IMoveManager
Signature
applyIceMovement
Apply ice movement physics Simulates slippery surface physics where the entity accelerates gradually and has difficulty stopping. The maximum speed is based on the player’s base speed multiplied by a speed factor. With default speed=4 and factor=1: maxSpeed = 4 (same as original default)- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
WithMoveManagerClass
Signature
Parameters
direction:{ x: number, y: number }speedFactor?:number
Examples
applyIceMovement
Apply ice movement physics Max speed is calculated from the player’s base speed multiplied by the speedFactor.- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Parameters
direction:{ x: number, y: number }speedFactor?:number
breakRoutes
Stop an infinite movement- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Parameters
force?:boolean
clearAllPlayerStates
Clears all player movement states Useful for cleanup during server shutdown or when resetting game state.- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
MoveList
Signature
Examples
clearMovements
Remove all active movement strategies from this entity- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
clearPlayerState
Clears the movement state for a specific player Should be called when a player changes map or is destroyed to prevent memory leaks and stale stuck detection data.- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
MoveList
Signature
Parameters
playerId:string
Examples
dash
Perform a dash movement in the specified direction Creates a burst of velocity for a fixed duration. The total speed is calculated by adding the player’s base speed (this.speed()) to the additional dash speed.
This ensures faster players also dash faster proportionally.
With default speed=4 and additionalSpeed=4: total = 8 (same as original default)
- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
WithMoveManagerClass
Signature
Parameters
direction:{ x: number, y: number }additionalSpeed?:numberduration?:numberoptions?:MovementOptions
Returns
Promise that resolves when the dash completesExamples
dash
Perform a dash movement in the specified direction The total speed is calculated by adding the player’s base speed to the additional speed. Returns a Promise that resolves when the dash completes.- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Parameters
direction:{ x: number, y: number }additionalSpeed?:numberduration?:numberoptions?:MovementOptions
Returns
Promise that resolves when the dash completesdirectionFixed
Whether direction changes are locked (prevents automatic direction changes)- Source:
packages/server/src/Player/MoveManager.ts - Kind:
property - Defined in:
IMoveManager
Signature
followPath
Follow a sequence of waypoints Makes the entity move through a list of positions at a speed calculated from the player’s base speed. ThespeedMultiplier allows adjusting
the travel speed relative to the player’s normal movement speed.
With default speed=4 and multiplier=0.5: speed = 2 (same as original default)
- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
WithMoveManagerClass
Signature
Parameters
waypoints:Array<{ x: number, y: number }>speedMultiplier?:numberloop?:boolean
Examples
followPath
Follow a sequence of waypoints Speed is calculated from the player’s base speed multiplied by the speedMultiplier.- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Parameters
waypoints:Array<{ x: number, y: number }>speedMultiplier?:numberloop?:boolean
frequency
Frequency for movement timing (milliseconds between movements)- Source:
packages/server/src/Player/MoveManager.ts - Kind:
property - Defined in:
IMoveManager
Signature
getActiveMovements
Get all active movement strategies for this entity- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Returns
Array of active movement strategieshasActiveMovements
Check if this entity has any active movement strategies- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Returns
True if entity has active movementsinfiniteMoveRoute
Give a path that repeats itself in a loop to a character- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Parameters
routes:Routes
knockback
Apply knockback effect in the specified direction Pushes the entity with an initial force that decays over time. Returns a Promise that resolves when the knockback completes or is cancelled.Design notes
-
The underlying physics
MovementManagercan cancel strategies viaremove(),clear(), orstopMovement()without resolving the Promise returned byadd(). -
For this reason, this method considers the knockback finished when either:
- the
add()promise resolves (normal completion), or - the strategy is no longer present in the active movements list (cancellation).
- the
-
When multiple knockbacks overlap,
directionFixedandanimationFixedare restored only after all knockbacks have finished (including cancellations). -
Source:
packages/server/src/Player/MoveManager.ts -
Kind:
method -
Defined in:
WithMoveManagerClass
Signature
Parameters
direction:{ x: number, y: number }force?:numberduration?:numberoptions?:MovementOptions
Returns
Promise that resolves when the knockback completes or is cancelledExamples
knockback
Apply knockback effect in the specified direction The force is scaled by the player’s base speed for consistent behavior. Returns a Promise that resolves when the knockback completes.- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Parameters
direction:{ x: number, y: number }force?:numberduration?:numberoptions?:MovementOptions
Returns
Promise that resolves when the knockback completesmoveRoutes
Give an itinerary to follow using movement strategies- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Parameters
routes:Routesoptions?:MoveRoutesOptions
Returns
Promise that resolves when all routes are completedmoveTo
Move toward a target player or position using AI pathfinding Uses theSeekAvoid strategy to navigate toward the target while avoiding obstacles.
The movement speed is based on the player’s current speed and frequency settings,
scaled appropriately.
- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
WithMoveManagerClass
Signature
Parameters
target:RpgCommonPlayer | { x: number, y: number }
Examples
moveTo
Move toward a target player or position using AI pathfinding- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Parameters
target:RpgCommonPlayer | { x: number, y: number }
onStuck
Callback function called when the player gets stuck (cannot move towards target) This callback is triggered when the player is trying to move but cannot make progress towards the target position, typically due to obstacles or collisions.- Source:
packages/server/src/Player/MoveManager.ts - Kind:
property - Defined in:
MoveRoutesOptions
Signature
Parameters
- “ - The current position of the player
Returns
If true, the route will continue; if false, the route will be cancelledExamples
oscillate
Apply oscillating movement pattern Creates a back-and-forth movement along the specified axis. The movement oscillates sinusoidally between -amplitude and +amplitude from the starting position.- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
WithMoveManagerClass
Signature
Parameters
direction:{ x: number, y: number }amplitude?:numberperiod?:number
Examples
oscillate
Apply oscillating movement pattern- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Parameters
direction:{ x: number, y: number }amplitude?:numberperiod?:number
removeMovement
Remove a specific movement strategy from this entity- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Parameters
strategy:MovementStrategy
Returns
True if the strategy was found and removedreplayRoutes
Replay an infinite movement- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
shootProjectile
Shoot a projectile in the specified direction Creates a projectile with ballistic trajectory. The speed is calculated from the player’s base speed multiplied by a speed factor. With default speed=4 and factor=50: speed = 200 (same as original default)- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
WithMoveManagerClass
Signature
Parameters
type:ProjectileTypedirection:{ x: number, y: number }speedFactor?:number
Examples
shootProjectile
Shoot a projectile in the specified direction Speed is calculated from the player’s base speed multiplied by the speedFactor.- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
Parameters
type:ProjectileTypedirection:{ x: number, y: number }speedFactor?:number
stopMoveTo
Stop the current moveTo behavior- Source:
packages/server/src/Player/MoveManager.ts - Kind:
method - Defined in:
IMoveManager
Signature
stuckThreshold
Minimum distance change in pixels to consider movement progress (default: 1 pixel) If the player moves less than this distance over the stuckTimeout period, they are considered stuck.- Source:
packages/server/src/Player/MoveManager.ts - Kind:
property - Defined in:
MoveRoutesOptions
Signature
stuckTimeout
Time in milliseconds to wait before considering the player stuck (default: 500ms) The player must be unable to make progress for this duration before onStuck is called.- Source:
packages/server/src/Player/MoveManager.ts - Kind:
property - Defined in:
MoveRoutesOptions
Signature
through
Whether the player goes through all characters (players and events) Whentrue, the player can walk through all character entities (both players and events)
without collision. Walls and obstacles still block movement.
This takes precedence over throughOtherPlayer and throughEvent.
- Source:
packages/server/src/Player/MoveManager.ts - Kind:
property - Defined in:
IMoveManager
Signature
Default
Examples
throughEvent
Whether the player passes through events (NPCs, objects) Whentrue, the player can walk through event entities without collision.
This is useful for NPCs that shouldn’t block player movement.
- Source:
packages/server/src/Player/MoveManager.ts - Kind:
property - Defined in:
IMoveManager
Signature
Default
Examples
throughOtherPlayer
Whether the player passes through other players Whentrue, the player can walk through other player entities without collision.
This is useful for busy areas where players shouldn’t block each other.
- Source:
packages/server/src/Player/MoveManager.ts - Kind:
property - Defined in:
IMoveManager
Signature
Default
Examples
WithMoveManager
Move Manager Mixin Provides comprehensive movement management capabilities to any class. This mixin handles various types of movement including pathfinding, physics-based movement, route following, and advanced movement strategies like dashing, knockback, and projectile movement.- Source:
packages/server/src/Player/MoveManager.ts - Kind:
function
Signature
Parameters
Base:TBase