studio

FolioTier 2

video

Play a fullscreen cutscene, or place a video clip on the stage.

Use video play for a fullscreen cutscene, or video show for a clip that sits on the stage while dialogue continues. Give a stage clip an as name to place the same video more than once, then use that name with video hide to remove it. A stage clip without loop plays once and holds its final frame; with loop, it repeats until hidden or the scene ends. A fullscreen cutscene holds story progression until it finishes or is skipped.

Video Inspectors use the same transition dropdown as backgrounds, with None and Dissolve options. Show video controls its entrance; Hide video controls removal. Fullscreen video has independent Transition in and Transition out settings. Each defaults to None. Choosing Dissolve starts at 0.5 seconds and reveals an editable duration. Write video play denjiwork fadein 0.5 fadeout 0.5 for both fullscreen transitions, or video show card_reveal fadein 0.5 for a stage entrance.

The entrance dissolve starts when the first video frame is ready and works over a background or an empty stage. The fullscreen video and its black backdrop dissolve together. On completion or skip, an authored fullscreen exit holds the outgoing frame and fades it away while the next event runs. A following video uses its own transition settings. There is no automatic fullscreen exit fade. These visual transitions do not fade audio; stage clips remain muted.

Place fadein after stage placement settings. On video play, put fadeout after fadein when both are present. Both clauses come before loop or a trailing if condition. Omitted or zero durations cut immediately in that direction. For stage removal, write video hide second_screen fadeout 0.5. The selected clip keeps playing while it fades, then is released; dialogue and later events continue.

Position, size, rotation, and anchor are static. Re-show a mounted clip to change its placement or looping without restarting playback or its entrance. Paused previews show the settled, fully visible result, and paused timeline navigation skips fullscreen exit transitions. A fresh mount during running playback uses the authored dissolve. Motion clauses are rejected, and there is no video move.

Two shows of one video without an as name update the same clip. Named clips are separate placements and must be hidden by name. The Hide video dropdown includes stage clips from conditional branches. An unset target or a clip that is not on stage does nothing. A removal transition affects only the selected clip.

Configure story-wide visual access in Forge Money. One unlock follows the video asset across cutscenes, stage clips, and video-backed backgrounds; an as name does not create another purchase. Older locks on individual video play events remain available for review in Money. The video Inspector edits media and playback settings.

Parameters

ParameterKindRequiredDefaultNotes
actionidentifieryes-`play` starts a fullscreen cutscene; `show` places a clip on the stage; `hide` removes a placed clip.
referenceidentifieryes-Required on `play` and `show`: a video reference registered in the project's video assets; quoted form accepted. On `hide`, the clip's `as` name when its show gave it one, else the video reference. An unset hide target does nothing until selected in the Inspector.
asidentifierno-`show` only - names this clip on stage, which is the only way to place one video twice: two shows without a name are the same clip, so the second just repositions the first. `hide` then takes the name. The name is scene-local and never follows an asset rename.
atexpressionno-`show` only - static position, e.g. `at(50%, 40%)`. A clip's placement never animates; re-show the clip to reposition it in place.
sizeexpressionno-`show` only - static size, e.g. `size(30%)` or `size(200px, 100px)`. Omitted entirely, the clip fills the stage (contain fit, centered).
rotatenumberno-`show` only - static rotation in degrees around the anchor.
anchoridentifierno-`show` only - placement anchor preset; omitted = bottom-center like sprites.
fadeinnumberno-`play` and `show` only - dissolve from transparent over this many seconds, starting when the first video frame is ready. Omitted or zero appears instantly. Works over a background or an empty stage. Stage clips keep the story moving; re-showing a live clip does not restart its entrance. Paused stage previews show the settled result.
fadeoutnumberno-`play` and `hide` only - dissolve to transparent over this many seconds, then release the video. On `play`, holds the outgoing frame after completion or skip while the next event runs. On `hide`, the stage clip keeps playing during removal. Omitted or zero cuts immediately; fullscreen videos have no automatic exit dissolve. The Inspector uses independent None/Dissolve transition in and out dropdowns for `play`, and one shared transition dropdown for `show` or `hide`.
loopbooleannofalseTrailing `loop` flag. On `play`: the cutscene runs until a scene transition. On `show`: the clip repeats until hidden or the scene ends; without it the clip plays once and holds its final frame.

Canonical example

Folio
video play denjiwork fadein 0.5 fadeout 0.5
video show card_reveal at(50%, 40%) size(30%) fadein 0.5 loop
video show card_reveal as second_screen at(80%, 40%) size(15%) loop
video hide second_screen fadeout 0.5
video hide card_reveal
Ren'Py
$ renpy.movie_cutscene("video/denjiwork.webm", loops=0)
show card_reveal at truecenter
show card_reveal as second_screen at right
hide second_screen
hide card_reveal

One keyword, two lanes. video play runs a fullscreen cutscene in the player's video overlay: a one-shot advances to the next step when it finishes; with loop it runs until a scene transition ends it. video show places a clip ON the stage - positioned, sized, and living beside sprites while dialogue keeps playing - and video hide removes it instantly or with a fade.

Notes

Video Inspectors use the same transition dropdown as backgrounds, with None and Dissolve options. Show video has a Transition for its entrance; Hide video has a Transition for removal. Fullscreen video has independent Transition in and Transition out dropdowns. Each defaults to None. Choosing Dissolve starts at 0.5 seconds and reveals an editable duration.

In Folio, write video play denjiwork fadein 0.5 fadeout 0.5 to dissolve into and out of a fullscreen cutscene. Either duration can be omitted. For stage clips, write video show card_reveal fadein 0.5 and set removal on a later video hide event. Put fadein after any stage placement, followed by fullscreen fadeout when used, then loop or a trailing if condition. Omitting a duration clause, or setting it to zero, cuts instantly in that direction.

The dissolve starts when the first video frame is ready. A stage clip fades in over the current background, or over an empty stage if no background is set, while dialogue and later events continue. A fullscreen cutscene fades in together with its black backdrop over the stage; it still holds story progression until it finishes or is skipped. With Transition out set to Dissolve, the outgoing frame holds and fades away while the next event runs. A following fullscreen video uses its own transition settings. There is no automatic fullscreen exit fade. Paused timeline navigation skips the exit transition. These transitions change visibility, not audio volume.

A stage clip's placement is static: at/size/rotate/anchor set where it mounts, and none of them animate. Re-showing a mounted clip updates its placement and loop flag in place without restarting playback or its entrance dissolve - that is how a clip repositions. Motion clauses (from(), -> tracks, with <curve>, entrance(), z(), flip()) are parse errors on a video show line; there is no video move.

A stage clip is identified by its as name when it has one, and by its video asset when it does not. That single rule decides every case: two shows of one video with no name are one clip (the second repositions it), while as left and as right are two clips that place and hide independently. A named clip answers only to its name, so video hide with the plain reference cannot take it. Hiding something that is not on stage does nothing, which is fine - a show inside a when branch that did not run leaves its hide with nothing to do.

In the Hide video Inspector, select a target from the stage clips used in the scene. The dropdown includes clips from conditional branches, even if they are not currently visible. Adding Hide video to a scene with no stage clips leaves its target unset and keeps that dropdown available; it does not open the asset explorer. An unset video hide does nothing during playback.

The Hide video Transition dropdown controls removal. None removes the selected clip immediately. Dissolve starts at 0.5 seconds and exposes an editable duration, written as video hide second_screen fadeout 0.5. The clip keeps playing as its opacity fades to transparent, then it is released. Dialogue and later events continue during the fade, and other clips remain unchanged. Omitting fadeout, or setting it to zero, uses instant removal. A trailing if condition can guard either mode.

Without loop, a stage clip plays once and holds its final frame; with it, the clip repeats until hidden or the Folio scene ends (scene boundaries clear mounted clips, like sprites). Whenever playback re-derivation newly mounts a clip - a timeline click, scrub, save restore, or scene entry - it plays from the start. Stage clips are muted. Paused previews show the settled, fully visible video without replaying its entrance; a newly mounted video in running playback uses the authored dissolve.

The Ren'Py $ renpy.movie_cutscene("…") Python call lowers to video play during import (loops=0 one-shot, loops=-1 looping). A Ren'Py image X = Movie(...) definition imports as a video-backed image: scene X becomes a persistent bg, while show X / hide X become video show / video hide stage clips - never sprites, so webms don't appear in the Sprite manager. Movie size= maps to the show's placement size; a mask= alpha companion is an honestly flagged loss.

Visual access

Configure a video's story-wide access in Forge Money. The unlock follows the resolved video asset wherever it plays, appears as a stage clip, or serves as a video-backed background. A clip's as name identifies its placement, not a separate purchase. Access settings travel with the project authoring context; video play, video show, and video hide keep their existing jobs.

Older projects can carry a lock on an individual video play event. Money keeps those placements available for review and upgrade, with offer codes and existing buyers' access preserved when compatible. Different settings, conditions, or previously free appearances need review before applying one story-wide unlock. The video event inspector edits the selected media and playback settings; visual access editing belongs in Money.

See also

  • bg - for video-backed scene backgrounds (the Movie(...) displayable pattern); use bg when the video is a layered background, video show when it sits over the stage, video play when it's a fullscreen cutscene
  • sprite - the placement vocabulary a stage clip borrows (statically) from the sprite move grammar
  • sound - play/stop grammar for SFX