How to create a proper tutorial pop up screen system?

Hello, I am having some issues on implementing a system to display pop up messages for the player to read, this will be done to explain certain game mechanics are you progress though the game. I have created a message system that works however, I cannot seem to create a system that can be efficient and checks for multiple values to display the message without being very convoluted. Here’s is a test version I created to test if the message system worked. I am currently trying to use this similar concept but with checking once for the entire game session and not have it reset every time a player restarts the level. Any ideas can be helpful, thanks again:

How the system works:

The actor component checks its attached actor (the player) and gets a reference from it. Then it checks if said action is done and displays the message only once. from there the code should be useless until the player wants to create a new save file otherwise. Note that this only a test, though ideally I would like to create a similar system of such concept.

I would expect this to not scale well. You probably will benefit from looking into Unreals data options - like data tables for instance.

You can make a few generic widgets that take in text, image, have a button, and so on. How the text and image get populated into the widget would come from a data table.

Each row of the data table can be an index you could store in array to remember which ones the player has already seen.

You might have a few data tables for different message types, just for organizational purposes.

It’s too many steps to describe in a forum post and the specifics will depend on your project, but the general principle is that you have just a few types of widgets and their content gets dynamically updated at runtime, pulling the content from a data table.

1 Like

adding on top of the message above, instead of checking each tick waiting for something to happen look into event dispatchers and binding and unbiding to these events.

For example, when a certain action was done an event dispatcher is called. Then you can have inside the “tutorial” blueprint an custom event that is binded to this event dispatcher and then do some action.

If you have multiple types of blueprints that needs to call an event dispatcher you can have an common interface added to them. If you have only only one blueprint then you don’t need it.

You also just have one event dispatcher that pass a variable so you don’t need to create a different one for each action taken.

2 Likes