Tutorials Manager Documentation

Introduction

Showcase

Demonstration Video

Quick Setup Tutorial

Tutorial Types

Message/Tip

Modal

Setup

After you purchased the plugin make sure you enable it in your project and then do the following steps to get the plugin working

“Show Engine Content” should also be enabled. Now you have access to the plugin content folder.

Feel free to explore the different directories, read the C++ source code if you like (not necessarily) it is filled with comments.

Step 1

First of all, we need to place the BP_TutorialsManager actor in our level.

BP_TutorialsManager: This actor is responsible for managing and triggering the tutorials one by one.

All you need to do is selecting it and drag it to your level:

Step 2

Select the Tutorials Manager actor in your level and then select your pawn as the “Player Pawn” under “Setup” category.

What if you didn't have access to the Pawn in the Beginning? FAQ

In that case you should get a reference of the Tutorials Manager that is placed in your level, you can do it by exposing the manager to the Game Mode or the Game Instance, and then call the SetPlayerPawn function whenever you had access to your pawn.

Tutorial Video is Also Available Here! 

NOTE

Make sure it’s possessed by a player controller otherwise the plugin won’t work.

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

Play the game now!

Now I will start explaining the other settings.

General Settings

Input System (UE5.1+): You can choose whether you'd like to use Enhanced Input System or Legacy Input System.
EIS is the engine's standard input system after UE5.1 version so it's recommended to use this system for your project.

Tick Types: You can set how frequently your Tutorials Manager tick.

Max Movement Speed: This should be set to the max possible speed of the player pawn if you’ve chose the “Movement Speed Based” Tick Type.

Tick Time Interval: The Ticking interval of your tutorials manager. If it be a big number then the manager might miss a tutorial point triggering. It’s not recommended to use this tick type.

Enhanced Input Settings (UE5.1+)

If you're not using EIS as the Input System just skip this section.

Input Mapping: You don't need to worry about this one, the plugin uses this input mapping context to handle different inputs in tutorials.

Input Actions: Number of input actions determines how many keys you can map per tutorial if the tutorial completion type is set to "On All Buttons Pressed" or you're using Combinational Keys. You probably won't have more than 6 keys in a single tutorial but if you ever crossed it, make sure you duplicate some IA_TutorialsManager assets and add them to this array.
By the way, you will get a error in output log if you ran out of Input Actions so don't worry about it.

Data Table

Tutorials Data Table: This one is the most important one. All of the tutorials data are set in this table. 

This is the Example Project’s tutorials data table, now I will start demonstrating everything for you.
This is a really great example data table; it almost covers all of the plugin’s features.

Tutorial Types

Type: We have 2 types of tutorials.

Modal tutorials will pause the game and are able to show a media to the player, this media can be a movie, texture or a material!

Message tutorials will pop up and display for a certain amount of time without pausing the game.

Title: For the message tutorials title won’t display because of the UI design. You can change the UI design and make use of the Title, but for the modal tutorials Title show up on top of the window as you can see in the image above which the “Jumping” is the Title.

Media (Only Available for Modals): If you’re going to use videos for this, make sure you put all the videos in “Content/Movies” directory of your project otherwise they won’t get packaged with your game!

For the best compatibility and performance, it is recommended to use H.264 encoded MP4 (.mp4) container files.

Content: This is the body of your tutorial and of course the most important part. There are some for this variable which are all written in its tooltip, whenever you forgot the rules just hover over it.

Here’s the rules for Enhanced Input System Users:

Here’s the rules for Legacy Input System Users:

Here’s the common rules:


Just be careful about the braces, don't add any extra spaces there and make sure that the open braces match the close ones. There is also a “Check Data Table” button that will analyze the data table and tell you the errors.

If you don’t have the output log, you can bring from Window -> Output Log at the main tab of the engine.

If you have no errors then you should see the following data when you hit "Check Data Table" button.

If you wanted to add static keys to your content make sure you enter the valid key name because sometimes their actual name is not the same as their display name! There is one way to find out, and that is by pressing “Print all the Keys” button.

The text before “:” are the display name of the key/button and the text after that is the actual name (FName) of the key/button.

What we need is the actual name. Example content: Press {W} to move forward.

You can also check out the names by the decorator’s tables, if you head over to "Tutorials Manager Content/UI/KeyMappings" you can find the decorator table of each platform in its directory.

And here’s the table itself:

The last thing you should know about are combinational keys, you can ask player to press 2 or more buttons/keys at the same time and that is done like this: {ActionName1+ActionName2}

There shouldn’t be any space before and after the + sign.

Now let's move on to the next property:

Trigger Types

In Range: The tutorial will show up if the player be within the range of set trigger location

On Crossed: This type works based on the dot product and the location will not matter. Keep in mind that the target point's forward vector is so important.

On Prev Tutorial End: When the previous tutorial ended this tutorial will show up automatically

Manual: You have to call "PopTutorial" function yourself. Get the TutorialsManager's reference and call the function. You can store the reference in GameMode or GameInstance or even in the player character's blueprint!

Please try out the example project or the demo to get a good understanding of all these.

I will explain manual a bit more. If you choose manual the plugin will not trigger the tutorial and you are responsible to trigger it. 

Triggering it is fairly simple you have to get a reference of the Tutorials Manager actor of your level and call the PopTutorial function yourself!

Make sure your check out these blueprint functions in the BP_TutorialsManager:

The events will become super handy as well.

Anyway, if you select In Range, these are the settings you’ll get:

You can whether use a Target Point for your tutorial’s location or you can check the Use Manual Vector and input a vector for the trigger location.

Radius: if the player gets closer than the radius to the target location, the tutorial will show up.

Target Points

About the Target Points we have a blueprint actor for them to make them more readable and organized.

The actor’s name will show up on top of them and there will be an icon for you to easily recognize the tutorial points.

Let’s explain the next trigger type now which is On Crossed:

You will only get Target Point for this, there will be no manual vector setup for this one because the rotation of the Target Point matters to determine and calculate the dot product.

Later on, I will explain how you can preview tutorials points trigger area.

“On Prev Tutorial End” and “Manual” Trigger Types won’t come with any additional settings.

Expire Time is the maximum lifetime of the tutorial. (Modal tutorials don’t have this one)

End Types

Let’s talk about the End Type now:

We have 4 different end types.

Auto Expire: The tutorial will be visible till its Expire Time elapses

On Any Button Pressed: The tutorial will hide if the player presses any keys in the tutorial's context

On All Buttons Pressed: The tutorial will hide if the player presses all of the keys in the tutorial's context

Manual: You have to call "LearnedTutorial" function yourself. Get the TutorialsManager's reference and call the function. You can store the reference in GameMode or GameInstance or even in the player character's blueprint!

Manual mode works as same as the Trigger Type.

And the last property, Abandon

If the player goes more far than the abandon radius then the tutorial will be abandoned and abandon action will function.

Abandon radius behaves differently based on the trigger type:

1. On Crossed/In Range: The radius will be calculated from the tutorial's trigger location

2. Manual: The radius will be calculated based on the player's location when this tutorial popped

Of course, negative values mean that the tutorial will never get abandoned.

That was it for the tutorials setup.

Now let’s go back to the tutorials manager’s settings.

Platforms Settings 

Now I would like to explain how the cross-platform feature works.

Well, you can add up to 9 custom platforms. We support 6 platforms out of the box.

Target Platform: This is the initial platform that the manager will use! You can change it at runtime or you can just set it by the editor.

Platforms Data: This one is a bit tricky. If you don’t want to add custom platforms just skip this part.

Each platform needs a decorator table for its keys textures that we use for the Rich Text in the UI.

So, if you want to add a new custom platform the first thing you’re going to need is the decorator table.

Then you should set up the Search Expression, your platform keys will be detected by this. You have to find one or more unique phrases that all of your custom platform keys have!

Or you just have to input direct key names, 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.

Blue Console: PlayStation
Green Console: Xbox
V Idx: Valve Index
H Vive: HTC Vive
Ocs Quest: Oculus Quest

UI Settings 

You can design your own UI and use it by changing the Tutorial Master Widget Blueprint.

The only thing you should do is to set the widget’s parent to Tutorial Widget

You can change the parent class with the following steps:

Next Tutorial Popping Delay: This delay will execute after a tutorial ended.

Modal Approval Hold Time: The amount of time that the user has to hold down “Enter” or “OKAY” button to get rid of the modal tutorial.

Sounds

These are fairly straight forward.


Optimizations

Destroy on All Tutorials Learned: will destroy the tutorials manager to save some memory after it had nothing else to do! (When there are no other tips/tutorials the manager will stay idle)

If you check this then event will get unbined after they fired.

For example, if you bind 10 events to OnInitialized event, when it fires all of those 10 events will get unbinded and no longer get called when OnInitialized fires.

Debugging & Previewing

Start Row Number: This property has effect if the build isn’t for shipping and what it does is that it will start the tutorials from a custom row, it’s included for the purpose of debugging.

So if you want to display a tutorial all you need to do is find the row number of that tutorial in the data table and set it as Start Row Number and then if you play the game that would be the first tutorial that shows up.

Preview Row Number works exactly the same.

If you can’t see the preview button, it’s because you have to select the tutorials manager actor in the level.

This is a preview of On Crossed trigger type without an abandon radius.

And this is the preview of In Range with abandon radius, the blue sphere is the abandon area:

Congratulations! You've mastered the plugin.

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 plugin, I hope you enjoy it

Hints

Updates Log

1.4.3 (UE5.2+)

Changes

1.4.2 (UE5.1+)

Changes

1.4 (UE5.1+)

Added

Users Who Owned the Asset Before the Update

You have to set the Input System to Legacy otherwise the plugin will stop working on your project.

Please try converting your project to Enhanced Input System since the Action/Axis mapping system is deprecated. However the plugin will support both systems as long as they're usable inside the engine.

1.3.7

Added

Improved

Fixed

1.3.4

Fixed

1.3.3

Added

1.3.2

Changed

Fixed

1.3.1

Changed

1.3

Added

1.2

Added

Changed

3D Widgets Showcase

How to Use the 3D Widget System

Step 1

Set the UI Mode to 3D under UI Settings.

Step 2

Expose your widget component to the Tutorials Manager.

Call the "Set 3D Widget Component" function and everything should work as expected.

Check out the Example Project if you needed more help!

 

1.1.2

Added

Changed

Fixed

1.1.1

Changed

Fixed

1.1

Added

Changed

Fixed