Skip to main content

Move Commands

Movement APIs, movement strategies, and move route helpers.

Members

addMovement

Add a movement strategy to this entity Returns a Promise that resolves when the movement completes (when isFinished() 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: MovementStrategy
  • options?: MovementOptions

Returns

Promise that resolves when the movement completes

Examples

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: MovementStrategy
  • options?: MovementOptions

Returns

Promise that resolves when the movement completes

animationFixed

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

canMove

Whether the player can move. The synchronized state is stored internally in _canMove; canMove is exposed as a plain property for v4 compatibility.
  • Source: packages/common/src/Player.ts
  • Kind: getter/setter
  • Defined in: RpgCommonPlayer

Signature

Examples

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?: number
  • duration?: number
  • options?: MovementOptions

Returns

Promise that resolves when the dash completes

Examples

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?: number
  • duration?: number
  • options?: MovementOptions

Returns

Promise that resolves when the dash completes

directionFixed

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. The speedMultiplier 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?: number
  • loop?: 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?: number
  • loop?: 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 strategies

hasActiveMovements

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 movements

infiniteMoveRoute

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 MovementManager can cancel strategies via remove(), clear(), or stopMovement() without resolving the Promise returned by add().
  • 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).
  • When multiple knockbacks overlap, directionFixed and animationFixed are 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?: number
  • duration?: number
  • options?: MovementOptions

Returns

Promise that resolves when the knockback completes or is cancelled

Examples

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?: number
  • duration?: number
  • options?: MovementOptions

Returns

Promise that resolves when the knockback completes

moveRoutes

Give an itinerary to follow using movement strategies
  • Source: packages/server/src/Player/MoveManager.ts
  • Kind: method
  • Defined in: IMoveManager

Signature

Parameters

  • routes: Routes
  • options?: MoveRoutesOptions

Returns

Promise that resolves when all routes are completed

moveTo

Move toward a target player or position using AI pathfinding Uses the SeekAvoid 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 cancelled

Examples

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?: number
  • period?: 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?: number
  • period?: 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 removed

replayRoutes

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: ProjectileType
  • direction: { 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: ProjectileType
  • direction: { x: number, y: number }
  • speedFactor?: number

speed

Player movement speed. The synchronized state is stored internally in _speed; speed is exposed as a plain property for v4 compatibility.
  • Source: packages/common/src/Player.ts
  • Kind: getter/setter
  • Defined in: RpgCommonPlayer

Signature

Examples

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) When true, 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) When true, 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 When true, 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

Returns

Extended class with movement management methods

Examples