Download

Multiplayer Game Framework (Steam or Otherwise)

I haven’t found a comprehensive answer for something like this so far, either on UE4 or for any platform really. Please let me know if this should be in a different category.
I’m having trouble understanding the actual logistics of an authoritatively networked multiplayer game using a third-party service, such as PSN, XBox Live, or Steam.
Just to clarify, this is about a **master server reliant **game, not a p2p game. I’ll jump right in.

Let’s use **Steam **as a standard example. The game will be a lobby and match type game (MOBA, shooters, etc.).

This is how I imagine/believe such a game, using UE4, must be set up:

Database A

  • this database contains player-specific data, such as
    a persistent item stash (think collectibles, equipment)
  • only the Dedicated Master server can interface with this database,
    and it sends all relevant details (when necessary) to the
    appropriate Match instances (i.e. PlayerX only has ItemY)

Physical Server A

One Dedicated Master server instance of “the game”

  • any player with a client of “the game” must/will connect to
    this server
  • this server will handle matchmaking, creating of groups, parties,
    teams, etc.
  • this server will send connected clients to the appropriate match server instance
    when a match has been found, and clients will return to this server when the match is over/they quit the match

Multiple Dedicated Match server instances of “the game”

  • each individual server is only responsible for one match,
    and for the players that are supposed to be in that match
  • there may be as many match servers running as the physical server
    and relevant bandwidth can handle

Client A

  • this client starts on a splash page, which (in the background)
    immediately tries to connect to the Dedicated Master server
    (I’m assuming there is no offline functionality available)
  • some data will be loaded on the client from local save files,
    like control schemes, settings preferences, and other non-gameplay
    things

So here are my questions, assuming Steam service:

  1. Is this a plausible/typical setup?

  2. Who owns Physical Server A? Steam? Or do I have to rent space on another private server?

  • a) If Steam owns Physical Server A, how do they decide how much space/processing/bandwidth I get on it?
  1. Is Database A also located on Physical Server A? Is there a built-in Steam service which allows a game to store
    and query player-specific data, or does the database have to be created/hosted independently?
  • a) As a third possibility, should such player-specific data be persistently stored in the Dedicated Master server instance?
  1. Are the Dedicated Master server instance and the Dedicated Match server instance both the same UProject/BuildVersion?
  • a) Does that mean they’re just set to open to different maps on start? (I have some idea how to do that)
  • b) How does the Dedicated Master server instance “create” Dedicated Match server instances when necessary?
    Is it a separate system that has to be implemented natively, or does one game instance already have the ability to create another one?
    Alternatively, is this functionality that the Steamworks API provides?

I hope my current understanding and my questions are clear.
Looking forward to hearing from the community, as this is something that I’ve struggled to wrap my head around for some time.