In-Game tutorials

Hello all,

As you can imagine trying to find information about creating an in-game tutorial is difficult as the search results come back as … tutorials, on other things.

I’m curious about creating an in-game tutorial for first time players to show them the ropes of the game. The crux of my question is essentially: is there already some sort of support for this in the engine or is it a “roll it yourself” kind of deal? I know the editor itself has tutorials and you can create a Tutorial BP, but I’m curious in both how to use them and if it’s worth building off of that for an in-game user tutorial or if that’s purely for creating tutorials of how to use the editor itself.

If you “create new blueprint class” and search for “tutorial” in the “all classes” list, you find Tutorial_BP_Class.
This, in turn, is just a simple gate that snapshots the gamemode.
There’s also TutorialCharacter, which does the same thing to a regular character.
Finally, there’s EditorTutorial, which is a C++ class with actual “tutorial” support, but it’s intended to run in the editor, and won’t work inside a game (it’s implemented inside the Editor/ part of the engine.) It’s also focused mainly on calling out “widgets” rather than control inputs or actors.

So, the answer to your actual question is: No, there isn’t a lot of support in the engine specifically for tutorials.
But you can use events in your character, special trigger volumes, and other gameplay actors, to pretty easily build the kind of tutorial content you want.
You’ll typically want to have some notification interface that gets called if it’s set, when there is control input for each control kind. Then the tutorial sets itself on your player controller as the “notified interface” and listens for the control in question actually happening.
(Or you can have an Event Dispatcher in the player controller, instead of an interface – same idea)
When no tutorial object has registered with the player controller, nothing will listen to the hook, and no special action is taken.
(You could also use this to disable certain features until the player passes some criteria)