Local Multiplayer - All Players = 0?

Trying to sort out local multiplayer with gamepads but having some issue going between levels.
I wanted to set up a character select screen so I made a bool in GameMode called InGame, checked at begin play.
If InGame is false then its character select.

I do a player ID check on both levels, on the first I get what i want (0,1,2,3)
All players can change their own color.

However when i go into the main level i get (0,0,0,0) and the player controller cast fails
All players become controlled by ID 0

Both levels have the same game mode, and the code for InGame and not InGame is the same so i dont know why this is happening.

?

Also dont worry about it not spawning pawns, thats not the issue, the print is

If your transferring levels you need to set the player color info in a game instance class. Game instance is the only blueprint that persist across level changing.

This fixed it