Most of these has “special” events and behaviour.
The difference in behaviour are
- Their replication
- How they are initialized after each other.
Gamemode only exists in server, so only have data and function that is only needed for the server. Also gamemode has an event you can capture when a player joins the server (event postlogin)
Gamestate is replicated to the clients as well, but the owner is the server. Also it has the list.of currently connected players (and their playerstate).
The same gameinstance always exists regardless of mapchanges (and it does not replicates) so you can use it store - for example - to data that needs to be present regardess the map (like settings?)
Go to the function of these bluprints and at “override” you can check what built-in functionlity each has.