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
Extremely Easy to Use
100% Blueprint
Cross-platform
Enhanced Input System Support (UE5.1+)
Built-in Sequencer Support
3 Different Key Prompt Modes (Press, Hold and Spam)
Optimized
Supports both UE4 and UE5
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 Spam. How 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:
Direct Input: Enter the key/button directly
Input Action Mapping: You can retrieve the key from an existing mapping context and an input action using the "Get Key From Input Action" function.
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:
Design the target platform's keys and buttons
Create a Data Table based on their display name, replace spaces with "_" and use FInputRow_IC as the data table's rows structure.
Add the new platform to EICPlatforms enum
Add the new platform to Platform Settings of the interactive cutscene component
Set a good Search Expression for it (I'll explain it down below)
Done
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:
You have to set the input system to "Legacy" in Interactive Cutscene Component inside your character's blueprint.
You have to use the below functions instead of Show Quick Time events:
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
Whenever a feature didn’t work, check out the output log first. You’ll probably find something useful there.
I tried to set a tooltip for every variable and function in the plugin, so always check the tooltips first.
If you had any question after reading this documentation, feel free to send me an email. thekooroshtorabi@gmail.com I will try to answer ASAP
Updates Log
1.2
Added
Enhanced Input System is now supported on UE5.1+
Notes
You can select the input system from Interactive Cutscene Component in your character blueprint.
Input system is set to Enhanced Input by default so if you're using Legacy input system make sure you set it to Legacy.
Read the deprecated section if you want to continue using the legacy system.
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
Set Input System to "Enhanced Input" in your character blueprint's Interactive Cutscene Component
Replace all of the "Show Key Prompt" functions with "Show Quick Time Event"
Replace "Get Key from Mappings" with "Get Key from Input Action"
Remove all of the "Key 2 Map" functions because they're no longer required, you can set the key directly while making the map.
Done
1.1
Added
Wrong key press detection added
You can now prevent the player from pressing the wrong key