afaik game instance is not replicated. there’s one for each client and server.
i would recommend have a manager class for those “global” variables.
replicated, always relevant, spawn ignoring collisions (should not have collisions) but owned by the server. if it’s in cpp use an AInfo.
have a variable. make that variable replicated.
each player can call an rpc on their own controller. than changes that variable on the server side.
then each player can read the value from that manager.
usually the game mode would be a nice place for that, but afaik, the game mode only exists on the server.
there’s also the player state, but the ps exists for each player controller, and i can’t remember if all players can see all other player controllers.
beware though that replication is not instant, and that network packets can be lost, and there are like 100 other caveats.
so when player a says “TellServerToPutThisValue”
and player b says “TellMeTheValue”
they might see really different things.
also beware of race conditions.
imagine both playerA and B changes a value. maybe PlayerA hit the event first, but the server receives the event for playerB first. The last value in the server is PlayerA. so playerB changes are lost.
dragons beware.
Character → owner player controller .SetSrvValue → player controller on server .SetSrvValueOnManager → Manager .Set the value
make sure you can only set the value on the server.