Blueprint seems to be completely ignoring "Add to Viewport" node.

When you call the open level node, it just opens the new level and -BOOM- that’s it. Nothing else runs, because you’re in a new level.

If you want to carry on running code after opening a level, there are two ways:

  1. Use level streaming. Instead of the ‘open level’ node, you use ‘load streaming level’, but you have to change you game structure to do this. You can find out about it here:
2) You have to somehow pass information to the new level, so it knows it has to run some code. In this case, sorting out the players and slapping a widget on the screen.

You could just tell all levels to do that on begin play, that’s the easiest way. A little more flexible would be something using the game instance, because that’s the only thing that doesn’t go in the bin when you call ‘open level’.