Skip to content

Camera System

Reverie includes a cinematic camera system that automatically frames contests with dynamic shots, smooth transitions, and context-aware positioning.

When a contest starts, the camera director takes control of spectator and contestant views. It automatically selects appropriate camera angles based on the current phase and action.

ContextDescriptionUsed During
STAGE_OVERVIEWWide shot showing entire stagePhase transitions, opening
CONTESTANTClose-up on individual contestantPerformance turns, presentations
AUDIENCEPan across audience seatingReactions, excitement moments
JUDGEFocus on judging areaVoting phase
CLOSEUPTight shot on PokemonMove execution, seal effects
HIGH_ANGLEOverhead dramatic shotResults reveal, combos
LOW_ANGLEGround-level upward shotEntrance, dramatic moments

Each hall has a grid of baked camera positions that the director selects from. This provides pre-calculated angles and distances for smooth cinematography.

Stand where you want the camera and run:

/hallbuilder camera <hall_id> add <focus_type>

Your current position and look direction are saved as a camera position for that focus type.

/hallbuilder camera <hall_id> list # List all positions
/hallbuilder camera <hall_id> test <focus_type> # Preview a camera shot
/hallbuilder camera <hall_id> test <focus_type> <angle> # Preview with angle (0-360)
/hallbuilder camera <hall_id> clear <focus_type> # Clear positions for a type
/hallbuilder camera <hall_id> clear all # Clear all camera positions

Camera transitions use smooth interpolation:

SettingDefaultDescription
default-duration1000Transition time in milliseconds
default-easing"ease_in_out"Easing function
smooth-rotationtrueSmooth rotation interpolation
enable-shaketrueCamera shake on dramatic events
shake-intensity0.1Shake intensity (0.0-1.0)
  • Starts with STAGE_OVERVIEW
  • Cuts to individual CONTESTANT shots as each is announced
  • Pans across AUDIENCE to show reactions
  • Focuses on each Pokemon with CLOSEUP
  • Orbits around the contestant with smooth rotation
  • Transitions between contestants with the configured easing
  • Returns to STAGE_OVERVIEW between turns
  • Switches to CONTESTANT focus during each player’s turn
  • CLOSEUP during move execution
  • HIGH_ANGLE for combo moments
  • STAGE_OVERVIEW while votes are counted
  • JUDGE focus during deliberation
  • AUDIENCE pan to show reactions
  • Dramatic HIGH_ANGLE reveal
  • CONTESTANT focus on the winner
  • Celebration camera with effects

Halls can define custom camera paths — sequences of positions that the camera follows over time:

cameras {
paths {
intro-paths = []
performance-paths = []
judging-paths = []
presentation-paths = []
}
}

Players who experience motion discomfort can adjust camera behavior:

/accessibility staticcamera # Disable camera movement entirely
/accessibility cameraspeed 0.5 # Reduce movement speed to 50%
/accessibility lowmotion # Enable low-motion mode

See Accessibility for all options.

/reverie debug exitcamera # Force exit camera mode
/reverie debug camerastates # Show current camera states for all players
  1. Music & Beatmaps — Audio that accompanies the camera work
  2. Accessibility — Player comfort settings
  3. Hall Configuration — Per-hall camera setup