Cutscene

From ZDoom Wiki
Jump to navigation Jump to search
Error.gif

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 MiniWikipediaLogoIcon.pngFull-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).
At the end of the cluster (outro).
Upon the player's death in the cluster (game over).

Episode Upon starting the episode.
GameInfo At the beginning of the game, before the titlescreen.
Map

Upon entering the map from another map (intro).
Upon leaving the map (outro).

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");
}

See also