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
| Parameter | Kind | Required | Default | Notes |
|---|---|---|---|---|
| action | identifier | yes | - | `play` starts a fullscreen cutscene; `show` places a clip on the stage; `hide` removes a placed clip. |
| reference | identifier | yes | - | 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. |
| as | identifier | no | - | `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. |
| at | expression | no | - | `show` only - static position, e.g. `at(50%, 40%)`. A clip's placement never animates; re-show the clip to reposition it in place. |
| size | expression | no | - | `show` only - static size, e.g. `size(30%)` or `size(200px, 100px)`. Omitted entirely, the clip fills the stage (contain fit, centered). |
| rotate | number | no | - | `show` only - static rotation in degrees around the anchor. |
| anchor | identifier | no | - | `show` only - placement anchor preset; omitted = bottom-center like sprites. |
| fadein | number | no | - | `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. |
| fadeout | number | no | - | `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`. |
| loop | boolean | no | false | Trailing `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
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$ 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_revealOne 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 (theMovie(...)displayable pattern); usebgwhen the video is a layered background,video showwhen it sits over the stage,video playwhen it's a fullscreen cutscenesprite- the placement vocabulary a stage clip borrows (statically) from the sprite move grammarsound- play/stop grammar for SFX