Interactive Cutscene Documentation

Introduction

It's a cross-platform tool that you can make the cutscenes interactive and ask the player to press certain keys during the cutscene. You can also use it on non-cutscene situations as well, there is no limitation!

I’ve tried to put tooltips and comments everywhere so make sure you check out each property’s tooltip first!

Features

Showcase

Setup

Step 1

Open up your character blueprint.

P.S: It has to be derived from Character class.

Step 2

Add "Interactive Cutscene" component to your character blueprint.

Step 3 (For UE5.3+ and EIS Users)

Go to Project Settings -> Engine -> Enhanced Input

Then tick "Enable World Subsystem" and "Enable User Settings" boxes.

Step 4

Enjoy using it!

How to Use

Make sure you check out the "Examples" folder.

Whenever you call any of these functions below a key will pop up on the screen and player will have to press, hold or spam it.

Different Show Key Prompt Function Types

Default: The typical type, you can use it if your use case doesn't fit in the provided functions, this is the most flexible version.
Eventless: Basically it's the typical type but it has no events since events are not optional, you will probably use this function the least.
Sequencer: This type is compatible with level sequencers and can control the sequencer based on the settings you set while calling the function. You will probably use this the most especially in sequencer blueprints.

Now let's go ahead and explain all of the function parameters.

Show Quick Time event (Default & Eventless)

Keys: I'll explain this at the end.

Type: There are 3 types of key prompt types.

1. Press: Succeeds when the player presses the shown key/button on the screen before the timeout.
2. Hold: Succeeds when the player holds down the shown key/button on the screen before the timeout.
3. Spam: Succeeds when the player spams the shown key/button on the screen enough times before the timeout.

Hold Time: Only relevant when the Type's set to Hold.  Obviously it determines how long should the player hold down the popped key in order to end the key prompt.

Spam Times: Only relevant when the Type's set to SpamHow many times should the player hit the button to succeed?

Slomo: Slow motion on key show up, range[-1,1]  Controls the game's time dialation; 0 pauses the game and negative values won't touch the time dialation.

Position: [-1,1] Determins the location of the key prompt. X is for the horizental axis, 1: Right | 0: Center | -1:Left and Y is for the vertical axis, 1: Top | 0: Center |  -1: Bottom. You can pretty much pop the key up anywhere you wish on the screen.

Timeout: You can set a limit for the player to succeed if they couldn't it will timeout and they will fail and the key will hide.

On Key Down: Executes every time the player presses the prompted key.

On Key Up: Executes every time the player releases the prompted key.

On Success: Fires when the player succeeds. Pressed, Holds or Spam the key correctly.

On Timeout: Fires when the player misses the key prompt.

Keys: The that will show up on screen. The reason why it's a map is because of the cross-platform feature. You have to determine a key for each platform (if you wish to use that platform otherwise just ignore it)

Take a look at the image, that's how you can build up a key map.

There are 2 ways of retrieving a key:

Typically there should be a pin for each platform in the map.

Get Key From Input Action

This function is not global and whenever you'd like to use it you have to get Interactive Cutscene component ref and call it. The reason why it's not global is because there are some platform settings for each Interactive Cutscene component.

Mapping Context:  The mapping context file that you wish to get the key from.
Input Action:  The input action which the key is related to.
Index: If there are multiple keys for the same mapping you can select one of them with Index.
In Platform: Which platform should we get the key for?

This function is not performance friendly so try caching or other optimizing techniques if you can.

Get Keys From Input Action

You can also use this function to get all of the keys mapped to a certain input action in a mapping context with respect to the selected platform.

Show Quick Time Event (Sequencer)

I'm not gonna go through the parameters that were explained previously, if you haven't read 'em yet just scroll up and read.

Sequencer: The sequencer you wish to pop a key prompt in.

Idle Behavior: Determines what happens when player's doing nothing.

Nothing: Takes no action
Pause: Pauses the sequencer where the playback is.
Rewind: Plays the sequencer backwards till the initial point.

Play Amount: Only relevant if the type's set to Hold or Spam. It determines how much should the the sequencer play forward at the end of the key prompt. for example for Hold, when the player finishes up holding the key the playback position will be at (Initial Position + Play Amount).

Rewind Start Delay (In Seconds): Only relevant if Type's set to Spam and Idle Behavior is set to Rewind. It determines how long after the last key release should it start rewinding 

Rewind Decrement Rate (In Seconds): This only works if the Type's set to Spam and Rewind is selected. It will play the sequencer backwards this much in every second.
For instance if you set it to 2 it means every second the playback will play backwards for 2 seconds!

Settings

This is the first part of settings.

You can set the Theme to Light or Dark, you can set the default platform that the blueprint starts with via Platform variable.

Input System: Based on your project you can use between 2 input systems:
1. Legacy: The old unreal input system.
2. Enhanced Input: New and standard input system.

If you use Legacy then you should use "Pop Key Prompt" instead of "Show Quick Time Event".

Master Action Mapping Name doesn't really matter, it just shouldn't have conflict with your existing action/axis mappings. It's set to "ICKey" on default.

BP_InteractiveCutsceneComponent

Platform Settings

There are 3 platforms supported by default: PC, Xbox and Playstation
Platforms Settings: This one is a bit tricky. If you don’t want to add custom platforms just skip this part entirely.

If you wish to add other platforms you'll have to go through the below steps:

Search Expression: your platform keys will be detected by this in each action/axis mapping.
If there is only one platform key mapping for your axis/action mapping then you don't need to worry about the search expression and just leave it empty otherwise you have to find one or more unique phrases that all of your custom platform keys have! Or you just have to input direct keys, in this case you don’t need the search expression.

As you can see for the Play Station platform we’re using “Gamepad|PS4” search expression, this mean that if any key had “Gamepad” or “PS4” in its actual name (FName) that key belongs to Play Station platform.

Is Gamepad: This will boost the searching speed and skip the unrelated keys. If your custom platform uses a controller then you should check this.

P.S: Due to some copyright issues we had to use alternative names for the platforms.

Changing Theme and Platform in Realtime

Use these 2 functions for changing platform and theme in realtime. DO NOT set the Platform and Theme variables directly.

Audio Settings

For changing the audio settings you should open up WBP_InteractiveCutscene and head over to variables and set your desired sound effect for each event. Of course you can leave them empty if you don't like them.

Hold Key Sound Effect

If you don't like the holding key sound you should change it from the animation. This is the only sound that plays from the animation directly.

Congratulations! You've mastered the Interactive Cutscene.

UE5.1+ Deprecated Content (Legacy Input System)

The legacy input system is supported by default on UE4.27 and UE5 however it is not advised to use this system for UE5.1+

The system works pretty much the same in both input systems. But if you're using legacy input system:

And use the below functions to get the keys from mappings:

Please rate the product, it won’t take more than 1 minute, but it means a lot for me. Just click the rate button:

Thank you for purchasing the asset, I hope you enjoy it

Hints

Updates Log

1.2

Added

Notes

Users Who Owned the Asset Before the Update

You have to set the input system to Legacy otherwise the asset will not work on your project.

Converting Legacy to Enhanced Input Guide

1.1

Added