Movement and travel
Collision, arrival feedback, directional push, grouping and travel are separate capabilities. Compose only the ones your Gizmo needs. The host always validates movement.
Walkability
walkable: true lets players enter the cell. The default is false. A walkable Gizmo needs no action, sound, or callback: see Walkable tile.
The matching installed definition controls collision on both client and server. Unknown or invalid saved instances remain blocking. Remove placed instances before changing fixed walkability in a live update.
Arrival feedback
step(state, event) returns null or temporary cosmetic lighting/audio. The event identifies a walking or pushed arrival. It cannot change shared state or grant movement.
Feedback lasts 1–2,000 ms. Joins, teleports and standing still do not trigger it. The host restores normal lighting and cancels stale output. Pressure pad isolates this behavior.
Directional push
ts
walkable: true,
push: state => state.on ? { direction: state.direction } : null,1
2
2
Push requires walkability. Directions are right, down, left, or up. Returning null turns it off. The host owns movement speed, collision, blocked-exit retry and floor rules.
Players can steer out. Optional blockOpposingInput: true blocks only the opposite input while allowing lateral exits. Its default is false. A started move finishes normally if the source switches off. Floor fan shows state-driven push.
Linked and offset travel
Travel requires a compatible movement authority. Check availability before relying on this capability on a hosted environment.
link: { size: 2 } asks Scape to group placements of the same type/version on one floor. The resulting linkId is opaque host metadata, not authored state. Grouping alone does not enable travel.
travel(state) returns null or a destination recipe:
ts
travel: () => ({
destination: { kind: 'offset', x: 4, y: 0 },
exits: [[0, 0]],
cooldownMs: 1000,
}),1
2
3
4
5
2
3
4
5
This is the core pattern in Jump pad. A linked recipe uses destination: { kind: 'linked' } and requires link.
The host checks ordered landing exits, bounds, occupied cells and collision. Offsets are integers within ±64 cells; exit offsets are within one cell of the destination. relative: true rotates exits with the incoming direction. A missing or ambiguous linked destination is inert.
Travel stays on one floor and cannot select another player or confer world admission. Cooldown is 650–5,000 ms. Optional moving-player feedback and arrival cosmetics respect host limits and reduced motion.
World picking and navigation
World navigation is separate from same-floor travel. It requires a host with world-navigation support; see availability.
worldEditor: { field, action, label } displays Scape's anchored world picker. The host resolves a public-world selection or entered world code, then submits { [field]: destination } to the declared editor action. A GizmoWorldDestination is { id, name }; null clears it. Validate that value with validGizmoWorldDestination, and include the field in configuration to preserve it in copied or saved settings. The picker works without navigation.
navigate(state) returns null or { world, transition?, feedback? }. When the local player tries to enter the Gizmo's cell, the host requests admission to that world. It can also use an authored fixed destination without a picker. world is a world code, never an arbitrary URL. Destination names are display metadata, not proof of access.
The host owns world discovery, permissions, credentials, bans, capacity and session cleanup. Placing or changing an active world link requires world administration even if your action declares a weaker permission. A rejected admission restores the player; removing, reconfiguring or replacing the source cancels a pending departure.
Optional transition uses { durationMs, scale, opacity, trail?: { color, opacity } }. Duration is 1–1,000 ms; scale and opacity are 0.02–1. A trail uses a six-digit hex color and opacity 0–1. Reduced motion skips these cosmetics. Optional feedback uses existing bounded sound-bank audio and haptic recipes. See the navigation types for exact fields and validators.
Door composes these capabilities with destination state, a nearby label, blue glow, departure motion and sound. Its placer must also be a world administrator to configure it. Protected entry/spawn doors remain host infrastructure. This Gizmo capability does not grant agents cross-world access through MCP.
Keep recipes generic
Portal composes linking, travel, presentation and effects. Conveyor composes walkability and push. Neither requires a named preset in the SDK. Use the travel, push and step references for precise shapes.
