World Objects¶
Build moving, interactive worlds by dropping SocialScape components onto GameObjects — no scripting and no Character Controller Pro required. Each one is configured in the Inspector; the runtime wires up the behaviour and the networking when your world loads. Riders stay in sync automatically.
Moving platforms¶
Add SSPlatform (SocialScape/Platform (Ridable)) to any solid object — an airship, boat, elevator, lift — and players who stand on it ride along in sync, with no drift or lag. The runtime gives the platform the physics body it needs; you don't add a Rigidbody.
There are two ways to move it, and you pick one:
- Built-in path — fill in Path Nodes: drop empty GameObjects where you want the platform to travel and drag them into the list in order. Set Move Speed (m/s) and Path Mode:
Loop— restart at the first node (circuits).PingPong— reverse back along the path (lifts, ferries).Once— stop at the last node.
- Your own mover — leave Path Nodes empty and drive the platform with a NexusScript or an Animator instead. List that script under Server-Only Components so it runs only on the server (the authority) and never fights the network sync.
| Field | What it does |
|---|---|
motion |
Standard (smooth, most platforms) or Fast (adds prediction + a higher update rate for very fast/warping platforms). |
syncRotation |
Sync rotation too — leave on for platforms that turn or bank. |
pathNodes |
Waypoints for the built-in path (in order). Leave empty to drive it yourself. |
moveSpeed |
Travel speed along the path, in metres/second. |
pathMode |
Loop / PingPong / Once. |
pauseAtNodes |
Seconds to pause at each waypoint. |
faceMoveDirection |
Rotate the platform to face the way it's travelling (boats, airships). |
serverOnlyComponents |
Your own mover scripts — run on the server only. |
Place the platform at its first waypoint
The path starts at node 0, so author the platform sitting at (or next to) the first waypoint to avoid an initial jump.
Platform seats¶
Add SSPlatformSeat (SocialScape/Platform Seat) to a child of a platform, positioned where a seated player should sit (a cockpit, a passenger seat). A seated player snaps to the anchor and rides locked in place.
| Field | What it does |
|---|---|
isPilotSeat |
Marks the seat reserved for the platform's controller (passenger seats leave this off). |
lockMovement |
Lock the occupant's movement while seated. |
Seating is driven by your interaction (for example "press E near the seat") from a NexusScript: Player.Board(platformId, seatAnchor) to sit and Player.Exit() to stand. The component just marks the anchor and its settings.
Ride zones (free movement)¶
Add SSRideZone (SocialScape/Ride Zone (free movement)) to a child of a platform with a trigger Collider covering a rideable interior (an airship cabin, a ship deck, a large elevator). Inside the zone, players are carried with the ship while still walking and jumping freely — including mid-jump. Unlike a seat, nothing is locked.
Experimental — read the trade-offs
While inside a ride zone, players are switched to kinematic movement so the ship can carry them, which means physics objects can't push them while they're in the zone. It works best for ships that translate; banking/rotating ships still use world-up gravity for now. Test it with your ship's motion before relying on it.
When you don't need free walking — a single fixed riding spot — use a Platform Seat instead; it's simpler and fully locked.
Jump pads¶
Add SSJumpPad (SocialScape/Jump Pad) to an object with a trigger Collider. Walk in, get launched. Bounce pads, launchers, updrafts, boost rings.
| Field | What it does |
|---|---|
direction |
Launch direction. (0,1,0) is straight up. |
useLocalSpace |
Aim the direction relative to the pad (rotate the pad to aim it). |
power |
Launch strength (velocity added), in m/s. |
Teleporters¶
Add SSTeleporter (SocialScape/Teleporter) to an object with a trigger Collider and drag a Destination transform. Walk in, arrive there. Portals, doors, fall-through respawns, level warps.
| Field | What it does |
|---|---|
destination |
Where the player arrives (place an empty GameObject and drag it here). |
applyDestinationRotation |
Also face the player the way the destination faces. |
keepMomentum |
Keep the player's speed through the teleport. Off (default) arrives stationary. |
Gravity volumes¶
Add SSGravityVolume (SocialScape/Gravity Volume) to an object with a trigger Collider. While a player is inside, "up" is redefined so gravity pulls a different way — wall-walking, ceiling-walking, mini-planets, low-grav rooms, spinning stations. Leaving the zone restores normal gravity.
| Field | What it does |
|---|---|
upDirection |
Which way is "up" inside the zone (gravity pulls the opposite way). (0,1,0) is normal. |
useLocalSpace |
Aim it relative to the zone (rotate the zone to aim gravity). |
How riding stays in sync¶
You don't configure any of this — but for context: a player standing on a platform syncs their position relative to the platform, not in world space, so there's no drift or lag as the platform moves. Jump pads, teleporters, and gravity volumes are purely local effects on whoever steps in; the resulting movement replicates like any other player motion, so there's no extra networking to set up.
Quick reference¶
| Component | Add to | Needs a trigger collider | Drives |
|---|---|---|---|
SSPlatform |
The moving object | No | A ridable moving platform (built-in path or your script) |
SSPlatformSeat |
A child of a platform | No | A fixed, locked riding seat (script-triggered) |
SSRideZone |
A child of a platform | Yes | Free-movement carry inside a moving ship |
SSJumpPad |
A zone object | Yes | Launches whoever enters |
SSTeleporter |
A zone object | Yes | Moves whoever enters to a destination |
SSGravityVolume |
A zone object | Yes | Redefines "up" while inside |
Next¶
- World setup and the descriptor → Worlds
- Script your own platform movers and interactions → NexusScript