Advertisement

Gameplay server vs game lobby / chat / global stats?

Started by January 22, 2017 04:22 AM
0 comments, last by hplus0603 7 years, 9 months ago
I have a dedicated server in standalone C++ with a UE4 client, and am taking an early look at the 'typical' implementations of RTS game lobbies, i.e.
tPfQ8It.png
vaRxAYy.png
Does the logic for these systems typically run within the dedicated server .exe, or is there a separate layer on top, such as some other executable (or even in the game client itself) that manages the chat and game setup, which is then forwarded to a dedicated server on game start? What about if there is the option to play both on cloud-hosted games with some official ranking and authentication, and on LAN-based player-hosted games?
For example, one could give the game server a 'pre-match' state, where it accepts connections and facilitates communication between clients on the lobby screen, gives the option of map selection, and so on. I'm just not sure if giving this responsibility to the game server is unnecessarily muddying its role, and I'm just missing some better solution. An alternative is to use some external system, or even via some light networking solution in the client, to facilitate game settings and map selection, and then inform game lobby players of the gameplay server's IP so they connect over to it and can start/join the game.
Either way, connections to these systems would be facilitated/forwarded by some master server listing of available global games, or via a local server browser for LAN games, thus it's important for the game lobby and chat to work without a master server (for LAN without internet connection).
Any resources on this side of things would be awesome.

EDIT:

Here's an example I cooked up of using a separate lobby server, with possibilities of: player-hosted LAN (lobby server would be locally hosted, then), player-hosted custom (online), cloud-hosted custom, cloud-hosted 'official'/ranked:

hzWnLGr.png

I'm wondering what people think. Is it worth using a separate layer for the game lobby, in-between matchmaking/master and game server?

A very common setup is to have a "game selector" server which lists all known game instances, and lets players choose an instance to connect to.

Then, the "game setup" for the particular instance is done on the client that is "hosting" the game (and thus also acting as "server" for the game instance.)

Typically, you'd set up # players, map selection, and such things initially on a client, then "list" or "publish" the game to the lobby server (which has a known DNS name / runs on a central server.) Then other clients connect to this game list server, find the game they want to connect to, and connect to that game. This also allows you to do NAT punch-through, by using the game list server as introducer.

Once players are connected to the specific game instance, that'll typically do chat, change-of-maps, selection-of-faction, and such things, as part of the game server/protocol itself.

enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement