Hello all, I’m new to making multiplayer games and am still trying to understand how to update the UI from replicated variables. I watched a decent amount of tutorials and have been struggling to figure out how to update UI in multiplayer. Can anyone help explain what I am doing wrong?
Here is my current setup:
- Player Controller Event Begin Play → Is Local Player Controller Branch Check → if “True”, Delay for 1 second → Get Player Controller → Create Widget Blueprint, Promote Output to WBP variable → Add to Viewport.
- UI Main Menu class has a “Play” button. On click, Get Player Controller 0 → Cast to Player Controller → calls a Custom Event called “Request Start Game” → Calls another Run On Server Event within the Player Controller (RPC Event) → Casts to Game Mode to Start Level
- Start Level event pulls level info → Plug in level information and send to the Game State → Rep Notify Round Timer event in Game State
- On Rep Notify → Countdown Round Timer by 1 then Update the UI text.
From my understanding, I want to have a round timer value stored in the server, then this value gets sent to all clients (hence the RPC call). When doing Print Strings, the value for my round timer is correct all the way to the point where I update the UI Text Variable, however, the output value after the UI Text Update is 0 (so Round Timer before = 30 seconds → Set Round Timer UI text → Output Value of Set Round Timer UI Text is 0 seconds). I feel like my understanding of how the server and client communicates is off somewhere. If anybody could provide any sort of guidance or feedback, any help would be appreciated. Here are screenshots for some of my work if its any help.
Player Controller Event Begin Play:
Player Controller RPC:
Main Menu On Click Event:
Game Mode’s Start Level Event:
On Rep Notify Round Timer Variable:
Timer Countdown:
Update Round Timer UI:






