Ok I think I know what you mean.
You dont have to set the index of a player controller. Let’s say you start the game as the host. So your player controller will have the index 0. The player that joins will then have 1, the player after that 2 and so on.
They were automatically created.
In you Gamemode you can create a veriable of type “Player Controller” (Array)
Then there is an Event called “on post login”. At this event, add the “New player” - Pin to your array. This way, you store the player controllers of joining players. You can then get the gamemode and access this array with an loop.
The second thing is: UI only draws on client. No matter what. So I like to create an client-event within the player controller whitch is in charge of creating the UI.
I don’t know if you did it already, but I recommend serveral Gamemodes and Player Controllers. E.g 1 for main menu, 1 for lobby and 1 for gameplay.