Can anyone point me to proper ways to work with game mode and game state?

You can’t add items to a list on a client and expect it to be added server-side as well, if that was what you’re trying. If you add entries to a replicated array client-side, that will result in the client-side array becoming out of sync with the server. To change data on the server while being a client, you have to use an RPC that is executed on the server (a client-to-server request).

What are you trying to do with the list of all players? Is it for client-side display or for server-side gameplay logic? The server has access to all PlayerControllers (the client only his own), so you don’t need to construct a list manually, just get all player controllers by index or by a GetAllActorsOf node. For client-side display, try making use of PlayerStates (all clients have these for all players), as in prepare all necessary data by setting replicated values server-side, then they are available client-side. Hope that clears things up a bit.