Cutscene

This article is a stub. Please help the ZDoom Wiki by adding to it.
Cutscenes are a feature backported from Raze. They allow for mappers and modders to play Full-motion videos using MAPINFO map, episode, cluster, and gameinfo definitions, or by using the screen job ZScript API. By default, cutscenes can be skipped by pressing any key besides the menu button while they are playing.
Note: video assignment in MAPINFO requires the use of directory-structured archives, as looking up the video requires its full name (path, name and extension). WAD archives are not supported. |
Types
There are four types of cutscenes: intro, outro, game over, and intermission(New from 4.14.2). The following table lists which MAPINFO sections support which types, as well as when the cutscenes play:
Section | Intro | Outro | Game over | When to play |
---|---|---|---|---|
Cluster | ☑ | ☑ | ☑ |
At the beginning of the cluster (intro). |
Episode | ☑ | ☒ | ☒ | Upon starting the episode. |
GameInfo | ☑ | ☒ | ☒ | At the beginning of the game, before the titlescreen. |
Map | ☑ | ☑ | ☒ |
Upon entering the map from another map (intro). |
An intermission cutscene can be played at any time mid-game from a script.
Mid-game cutscenes
(New from 4.14.2)
Cutscenes can be played in the middle of a level using Level.StartIntermission() to play an Intermission block that only has a cutscene subblock, like this:
Level.StartIntermission ("EpicCutscene", FSTATE_INLEVEL);
Where the specified intermission to play mid-game looks like this:
Intermission EpicCutscene { Cutscene { Video = "Graphics/Videos/EpicVideo.ivf" } }
To play a cutscene through an ACS script with ScriptCall, you will need to first make a ZScript class that calls StartIntermission in a static method, like this:
Class CoolCutscenePlayer { //Play whatever intermission from ACS. Static Void PlayAnIntermission (String Intermission) { Level.StartIntermission (Intermission,FSTATE_INLEVEL); } }
Then you can call it from an ACS script like this:
Script "PlayCutscene" (Void) { ScriptCall ("CoolCutscenePlayer","PlayAnIntermission","EpicCutscene"); }