Audiences & Multiplayer Sync
API status — PROPOSED, NOT IMPLEMENTED. SkCine is currently a design specification in this conversation; no built SkCine.jar or syntax registry was supplied. All SkCine-specific examples are intended API contracts, not verified runnable
.sk. Do not advertise these as tested until each example passes a real Skript reload and runtime test.
Audience modes
- Single viewer: isolated camera, dialogue, particle visibility, and cleanup.
- Collection: scene has multiple viewers, shared logical clock and optional per-viewer parameters.
- Proximity: resolve matching viewers at start or update dynamically using an explicit policy.
- World/server audience: avoid accidentally broadcasting private camera changes.
set {_audience::*} to players in radius 15 around {_center}
set {_playback} to play cine scene {_scene} for {_audience::*}
The core Skript expression for selecting players by radius needs syntax validation on the targeted version; this line illustrates a collection-valued audience.
Shared vs. per-viewer state
| Component | Default ownership |
|---|---|
| Timeline clock | Group scene instance |
| Camera | Per viewer |
| Subtitle language | Per viewer |
| Dialogue choice | Per viewer unless group voting enabled |
| Shared world actor | Group scene |
| Packet actor | Viewer session |
| One-shot gameplay reward | Authoritative Skript/player gameplay system |
Join/leave behavior
A joining player should not inherit a random scene camera. A disconnecting viewer must be removed from the audience and restored on reconnect if state recovery is required. Group instance may continue, pause, or cancel based on a declared audience policy.
Skip voting
Individual skip: detach viewer only. Group skip: require threshold and apply once to shared instance. Do not allow one viewer to veto the cinematic indefinitely without a timeout.
Performance
Share math and static geometry; deliver only audience-specific outputs separately. Bound packets per viewer and monitor actual server and client load.