Download

Best use practices/advantages for GameState/PlayerState/GameMode/GameInstance?

I’ve completed a small project with UE4, and now I’m starting a larger online multiplayer project (just connecting with friends/etc so heavy security isn’t really a priority as cheating is an unlikely issue), and have been looking into a way to organize everything better for longterm development/scaling of the game, and looking into the usage of all these varying governing blueprints has confused me greatly.
Is there any significant advantage to using any of these besides the GameInstance? Does a game instance replicate from the server or is it unique for each client and therefor unable to share data?
The largest reason for questioning all of this is the problem with persistence of data through levels.
I want to setup game rules and player appearance in the ‘lobby’ area, however the only way to have this information follow through to the next level is to store the data in the GameInstance, so why would I put any player data in the PlayerState or game data in the GameMode/GameState if it will be lost immediately. Am I expected to setup all of these variables in GameState/PlayerState/GameMode and GameInstance, just to be using them for a benefit I haven’t found?
And if I store information in the PlayerState, that means on disconnection all of that data will be lost won’t it, where as if I stored it on the GameInstance I could have the player join back into the game with their data intact, or if a GameInstance isn’t replicated from the server and is in fact individual to each client, would I have to try and send that information to the GameState during the level and then when a player connects get all of that data to the players GameInstance so it can persist through any new level?
(Note: level streaming isn’t an option to keep any of this persistent).

Has anyone had experience using all of these or is anyone aware of the best methodology for using all these Blueprint types? I’d greatly appreciate advice for this as it still seems very unclear to me after multiple searches for information and I don’t want to end up with a convoluted/inefficient/broken mess.