Media

A media entry wraps a single file the host should play: a video, an audio file, a still image, or a Unity-native prefab. The entry carries timing data the writer authors (captions for the dialogue overlay, background-clip markers and story beats the recap UI reads), and the host loads the underlying file when a Play Sequence event fires. One place for the file and everything timed against it, so captions and recap annotations travel with the clip.

What’s not here: field-by-field reference for every media field (Media reference); firing an entry from an event (Play sequence event reference); layered scoped audio, which is a different shape (Audio cues).

Anatomy of a media entry

  1. Media: Title, ID, Description, Type, File, Extension, and Duration. The file binding lives here.
  2. Captions: timed lines spoken over the clip, one per row, each tied to a Character.
  3. Background Clips: time ranges the recap UI can skip or label as b-roll.
  4. Story Beats: narrative highlights the recap UI can surface by importance.
  5. Preview: plays the file in the inspector so a writer can verify timing without leaving the panel.

Add a media entry

The file has to live inside the project’s media/<type>/ subfolder before the editor can see it. Today that copy is a manual step: drop the file into media/video/, media/audio/, or media/images/ using Finder or the equivalent, then use the editor to register an entry against it. There’s no in-editor “browse for a file on my desktop” affordance yet.

  1. Copy the file into the matching media/<type>/ subfolder under your project folder.
  2. In the editor, open the Media tab in the Data View. Click Import New to pick from the files already sitting in the media/<type>/ subfolders and create an entry pre-bound to the file, or click Add Media to create a blank entry that you bind to a file yourself in the inspector.
  3. In the entry’s inspector, set Title (the visible name) and pick Type. Type drives where the host looks for the file and how the preview renders. If you used Add Media, pick the File now from the combobox: it lists every file present in the matching media/<type>/ subfolder, so a typo can’t ship. For video and audio, the Detect button next to Duration reads the length from the file.
  4. Save. The entry is now selectable from any Play Sequence event’s Sequence field.

The four Type values map to how the host loads the file. Video is a file under media/video/ (paired with a derived WebM under media/video_webm/ for Linux builds). Audio is a file under media/audio/, used for music, ambience, and voice-over. Image is a file under media/images/, used for stills, portraits, and overlays. Unity is a Unity-native prefab or addressable for projects shipping inside Unity: the host resolves the reference through its own pipeline rather than reading a file out of media/.

For audio entries, the inspector swaps the video preview for a compact audio player and adds a Use as background checkbox to the Media block. Ticking it marks the entry as a candidate the game can pull for menu music and other looping background beds; the flag doesn’t change normal Play Sequence playback. Captions, background clips, and story beats are still available on audio entries but rarely populated in practice; the recap surface is usually a video concern. For multi-segment scoped audio (music that loops through intro / loop / outro or ends on a specific event), reach for an audio cue instead of a single-file audio media entry. For location-scoped ambient audio, see Locations; the ambience surface bundles audio cues rather than media entries.

Author captions

Captions are the writer’s main reason to touch a video or image entry. Each caption carries a time range, a speaking character, and the displayed line, plus the usual translator notes attached to any localizable field.

  1. On a caption row, set Start (seconds from the start of the clip). Leave End empty to hold the caption until the next caption’s Start, or set it explicitly for a hard out-point.
  2. Pick the speaking character from the combobox on the row. It draws from the project’s character list.
  3. Type the line into the caption field. Use the Localize note to leave a hint for translators if the line is idiomatic or relies on visual context.
  4. Add Caption at the bottom of the section adds the next row; repeat for each line.

The inspector’s Preview section plays the clip with the captions overlaid, so a writer can verify timing without leaving the inspector. What ships to the player is whatever the host renders through its dialogue UI; the in-editor preview is an authoring aid.

Mark the recap surface

Background clips and story beats annotate the clip for recap UIs. A writer authors them once on the entry, and the host reads them from any recap surface that fires.

  1. Background Clips section label, with a count of the rows below it.
  2. A clip’s time range: Start and End, in seconds from the start of the clip.
  3. Story Beats section label, with its own row count.
  4. A beat’s Importance dropdown.
  5. A beat’s Decay field.
  • Background clip: a time range (Start to End) plus a free-form Description (“the camera pans across the empty valley”). Recap UIs use these to skip filler or label it as b-roll. Useful for long videos with both story and atmosphere. Add via Add Background Clip.
  • Story beat: a time range (Start / End), a Content line, an Importance dropdown on a five-step scale (Trivial, Minor, Moderate, Major, Critical), and a Decay field that lowers importance as the run progresses. Recap UIs surface beats in importance order. Add via Add Story Beat.

The typical pattern is background clips for sections you’d skip in a recap and story beats for moments you’d surface in one. A clip can carry both.

Fire a media entry

To play the entry in a run, add a Play Sequence event on a node or event list and pick the entry from its Sequence field. The runtime plays the file and surfaces the entry’s captions through the dialogue UI in sync. Audio entries with Use as background ticked are also available to the game for menu music outside any run: that path doesn’t need an event. See the Play sequence event reference for the event’s fields.

See also

Docs last synced: 2026-07-08
Screenshot viewer