Skip to content
Docs
Studio

Studio events reference

Every trigger, condition and action of the Studio's event sheet, with its slots and their types.

Rows read When a trigger, If conditions, Do actions (see Events). Each item's sentence shows its slots in italics; the id is how project files and MCP agents name it. Items marked advanced are listed under Advanced in the pickers.

This page is generated from the Studio's vocabulary.

Triggers

Match

SentenceIdSlots
The match startsmatch-startnone
The match stopsmatch-stopnone
The match pausesmatch-pausenone
The match resumesmatch-resumenone

Players

SentenceIdSlots
A player joins the roomplayer-joinnone
A player leaves the roomplayer-leavenone
A player enters the matchplayer-enternone
A player exits the matchplayer-exitnone
A player gains rolerole-gainrole: role (optional)
A player loses rolerole-lossrole: role (optional)

Controls

SentenceIdSlots
A player presses actionaction-pressaction: action (optional)
A player releases actionaction-releaseaction: action (optional)
A player is about to use actionbefore-actionaction: action (optional)
A player uses actionactionaction: action (optional)

World

SentenceIdSlots
An object enters sensorsensor-entersensor: object (optional)
An object leaves sensorsensor-leavesensor: object (optional)
A disc crosses line directioncrossingline: crossing (optional); direction: one of "either", "forward", "backward" (optional)
disc landslanddisc: disc or instance (optional)

UI

SentenceIdSlots
A player uses controlui-controlcontrol: ui-node

Room

SentenceIdSlots
The room sends nameroom-eventname: name

Events

SentenceIdSlots
event is raisedcustomevent: custom-event

Time

SentenceIdSlots
Every tickevery-ticknone
After every tickafter-every-ticknone
Every n ticksevery-ticksn: number
Every n secondsevery-secondsn: number
timer reaches seconds secondstimer-reachestimer: timer variable; seconds: number

Variables

SentenceIdSlots
variable changesvariable-changesvariable: variable

Conditions

Discs

SentenceIdSlots
disc's x cmp ndisc-xdisc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number
disc's y cmp ndisc-ydisc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number
disc's speed cmp ndisc-speeddisc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number
disc's velocity x cmp ndisc-velocity-xdisc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number
disc's velocity y cmp ndisc-velocity-ydisc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number
disc's radius cmp ndisc-radiusdisc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number
disc's mass cmp ndisc-massdisc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number
disc's damping cmp ndisc-dampingdisc: disc or instance; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number
object is a sensoris-sensorobject: object
Distance between disc and target cmp ndistancedisc: disc or instance; target: any; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number

Collisions

SentenceIdSlots
object is in group groupin-groupobject: object; group: collision group
object accepts group groupaccepts-groupobject: object; group: collision group

Objects

SentenceIdSlots
object is otheris-objectobject: object; other: object
object is controlled by a playercontrolledobject: object
object is controlled by playercontrolled-byobject: object; player: player

Players

SentenceIdSlots
player is in the matchin-matchplayer: player
player is holding actionholdingplayer: player; action: action
player has rolehas-roleplayer: player; role: role
player's name is textplayer-nameplayer: player; text: text
Number of players in the room cmp nplayers-in-roomcmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number
Number of players in the match cmp nplayers-in-matchcmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number

Match

SentenceIdSlots
The match is runningmatch-runningnone
The match is pausedmatch-pausednone
The current tick cmp ncurrent-tickcmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number

Time

SentenceIdSlots
timer cmp n secondstimer-comparetimer: timer variable; cmp: one of "=", "≠", "<", "≤", ">", "≥"; n: number

Variables

SentenceIdSlots
variable cmp valuevariable-comparevariable: variable; cmp: one of "=", "≠", "<", "≤", ">", "≥"; value: the variable's type
variable is textvariable-textvariable: variable; is: one of "is", "is not"; text: text
variable statevariable-setvariable: variable; state: one of "is set", "is empty"
a cmp bcomparea: any; cmp: one of "=", "≠", "<", "≤", ">", "≥"; b: any

Lists

SentenceIdSlots
list contains itemlist-containslist: any; item: any
list is emptylist-emptylist: any

Advanced

SentenceIdSlots
value (advanced)expressionvalue: boolean

Logic

SentenceIdSlots
Any ofany-ofnone

Actions

Match

SentenceIdSlots
Start the matchmatch-startnone
Stop the matchmatch-stopnone
Pause the matchmatch-pausenone
Resume the matchmatch-resumenone
Finish the matchmatch-finishnone
Send chat message textsend-chattext: text; colour: colour (optional); weight: one of "normal", "bold" (optional); style: one of "normal", "italic" (optional); sound: one of "normal", "none", "notification" (optional); to: audience (optional)
Send name to the room with payloademitname: name; payload: JSON payload (optional)
Play soundplay-soundsound: asset; at: disc or instance (optional); to: audience (optional); volume: number (optional)

Players

SentenceIdSlots
Put player in the matchput-in-matchplayer: player
Put player in the spectatorsput-in-spectatorsplayer: player
Give player control of discgive-controlplayer: player; disc: disc or instance
Release player's discrelease-controlplayer: player
Set player's radius to nset-player-radiusplayer: player; n: number
Set player's acceleration to nset-player-accelerationplayer: player; n: number
Set player's damping to nset-player-dampingplayer: player; n: number
Set player's avatar to avatarset-player-avatarplayer: player; avatar: any (optional)
Use schema for playeruse-schemaschema: action-schema; player: player
Give role to playergive-rolerole: role; player: player
Take role from playertake-rolerole: role; player: player

Controls

SentenceIdSlots
Cancel the actioncancel-actionnone

Variables

SentenceIdSlots
Set variable to valueset-variablevariable: variable; value: the variable's type
Add n to variableadd-to-variablen: number; variable: variable
Store value in variablestorevalue: the variable's type; variable: variable

Time

SentenceIdSlots
Start timertimer-starttimer: timer variable
Stop timertimer-stoptimer: timer variable
Reset timertimer-resettimer: timer variable

Events

SentenceIdSlots
Raise eventraiseevent: custom-event

UI

SentenceIdSlots
Show node for whoui-shownode: ui-node; who: player (optional)
Hide node for whoui-hidenode: ui-node; who: player (optional)
Open node for whoui-opennode: ui-node; who: player (optional)
Close node for whoui-closenode: ui-node; who: player (optional)

Advanced

SentenceIdSlots
Run script script (advanced)run-scriptscript: script

World

SentenceIdSlots
Create a disc at positioncreate-discposition: point; radius: number (optional); mass: number (optional); damping: number (optional); groups: collision groups (optional); height: number (optional); rising: number (optional); airGravity: number (optional); bounce: number (optional); tall: number (optional); store: variable (optional)
Create a wall through pointscreate-wallpoints: list of point; ends: one of "open", "closed" (optional); bias: number (optional); tall: number (optional); store: variable (optional)
Create a joint between first and secondcreate-jointfirst: disc or instance; second: disc or instance; distance: number (optional); store: variable (optional)
Create a crossing from start to endcreate-crossingstart: point; end: point; store: variable (optional)
Create an instance of prefab at positioncreate-instanceprefab: prefab; position: point; store: variable (optional)
Create a visualcreate-visualstore: variable (optional)
Create a camera at centercreate-cameracenter: point; width: number (optional); height: number (optional); to: audience (optional); store: variable (optional)
Set the layer order to layersset-layer-orderlayers: list of text
Destroy objectdestroyobject: object
Let audience know objectset-audienceobject: object; audience: audience
Set object's distance to valueset-joint-distanceobject: object; value: number
Set object's strength to valueset-joint-strengthobject: object; value: any

Discs

SentenceIdSlots
Move disc to positionmove-discdisc: disc or instance; position: point
Set disc's velocity to velocityset-velocitydisc: disc or instance; velocity: point
Set disc's gravity to valueset-disc-gravitydisc: disc or instance; value: point
Set disc's damping to valueset-disc-dampingdisc: disc or instance; value: number
Set disc's mass to valueset-disc-massdisc: disc or instance; value: number
Set disc's radius to valueset-disc-radiusdisc: disc or instance; value: number
Set disc's rotation to valueset-disc-rotationdisc: disc or instance; value: number
Set disc's angular velocity to valueset-disc-angularVelocitydisc: disc or instance; value: number
Launch disc upward at speedlaunch-discdisc: disc or instance; speed: number
Set disc's avatar to avatarset-disc-avatardisc: disc or instance; avatar: any (optional)
Paint disc fillset-disc-appearancedisc: disc or instance; fill: colour; stroke: colour (optional); strokeWidth: number (optional); opacity: number (optional)
Set disc's layer to layerset-disc-layerdisc: disc or instance; layer: layer

Collisions

SentenceIdSlots
Set object's tall to valueset-tallobject: object; value: number (optional)
Add object to group groupadd-groupobject: object; group: collision group
Remove object from group groupremove-groupobject: object; group: collision group
Set object's accepted groups to groupsset-acceptedobject: object; groups: collision groups
Set object's bounciness to nset-bouncinessobject: object; n: number
Make object kindset-sensorobject: object; kind: one of "a sensor", "solid"

Walls

SentenceIdSlots
Move wall to positionplace-wallwall: wall; position: point
Set wall's velocity to velocityset-wall-velocitywall: wall; velocity: point
Slide wall to position over seconds secondsmove-wallwall: wall; position: point; seconds: number
Move wall through points over seconds seconds, thenwall-followwall: wall; points: list of point; seconds: number; then: one of "once", "repeating", "back and forth"
Move point index of wall to positionset-wall-pointindex: number; wall: wall; position: point
Curve edge index of wall by curveset-wall-curveindex: number; wall: wall; curve: number
Set wall's thickness to biasset-wall-biaswall: wall; bias: number

Visuals

SentenceIdSlots
Change object's property to valuechange-cameraobject: object; property: one of "center", "width", "height"; value: any

Slot types

  • JSON payload

  • action

  • action-schema

  • any

  • asset

  • audience

  • boolean

  • collision group

  • collision groups

  • colour

  • crossing

  • custom-event

  • disc or instance

  • layer

  • list of point

  • list of text

  • name

  • number

  • object

  • one of "=", "≠", "<", "≤", ">", "≥"

  • one of "a sensor", "solid"

  • one of "center", "width", "height"

  • one of "either", "forward", "backward"

  • one of "is set", "is empty"

  • one of "is", "is not"

  • one of "normal", "bold"

  • one of "normal", "italic"

  • one of "normal", "none", "notification"

  • one of "once", "repeating", "back and forth"

  • one of "open", "closed"

  • player

  • point

  • prefab

  • role

  • script

  • text

  • the variable's type

  • timer variable

  • ui-node

  • variable

  • wall