function ready() {} // node entered the scene
function update(dt) {} // every frame
function onPress() {} // Button / Mesh3D clicked
function onInput(e) {} // raw pointer + keyboard
function onSignal(name, data) {} // game.emit from anywhere
function onCollide(other, side) // physics contact
function onChange() / onSubmit() // TextInput
body3d: 'dynamic' | 'static' · mass · friction · restitution
game.physics3d.impulse(node, x, y, z)
game.physics3d.setVelocity(node, x, y, z) · .velocity(node)
settings.physics.gravity3d (default -9.82)
Debugging
game.watch('hp', hp) // shows in the play debug bar
pause ⏸ / step ⏭ buttons while playing · Errors panel lists
syntax errors live · Output panel logs exports
Shortcuts
Cmd/Ctrl+Enter play · Cmd/Ctrl+S save · Cmd/Ctrl+Z undo · Cmd/Ctrl+D duplicate
Cmd/Ctrl+1/2/3 viewport 2D/3D/Game · Del delete · F2/double-click rename
3D viewport: W move · E rotate · R scale · F focus selection · shift snaps
2D: drag move · empty drag pan · wheel zoom · shift+drag snap · arrows nudge
Timeline: scrub, edit node, ◆ Key · double-click row = key that track