
Story Framework has a feature called Subtitles, with which we can bring up text whenever we feel the need. This works great for informing players about things around them, as well as interior dialogues the player may have with themselves. They’re really easy to create thanks to the Play Sound with Subtitles node. Here’s an example:

This is called from the SF Sequence Manager object, and all we really need is the first node. A sound queue is optional, could be a sort of typing noise or an overvoice of the text. If you want to display a line of text above the subtitles (for example the player’s name), the And Name to Subtitles node can be used. We can trigger this from code at any time, or use a box collision trigger and play the subtitles when the player walks in (in which case, destroy the actor after the trigger so it doesn’t play multiple times).
The subtitles themselves are structured similar to an NPC dialogue, but with a simpler structure. All we need is an array entry per line and a duration for each line.

Story Framework 4.1 adds the option to span long dialogue lines automatically into multiple lines, so it’s one less thing to worry about for us.
We can create a new blueprint for every interior dialogue we want to present this way, or use the same one and make the Subtitles variable editable. That way we can use the details panel in the viewport to write text as we create the level.