Imagine you want to make a multiplayer game. When your player starts up the game, they should be able to see a list of all other games running at the moment, choose one, and connect to it. But how should we get this list of current games? The internet is a huge place, with billions of devices connected to it, using trillions of possible addresses - we can't just query every one of them to see if they're running a copy of our game!
What we do instead is provide a single device, a master server, at a known IP address or domain name, which every running copy of your game can connect to since they know its location. They'll tell it when they're hosting a game, and ask it for a list of currently running games when they want to join one.
The sequence of events looks something like this:
How does the master server know if a game client is still running? It might be possible to have game servers send a message to the master server saying 'goodbye!', but that wouldn't account for crashes or badly-behaving game servers.
Instead, the most common approach is called a heartbeat. Each game server must send a message to the master server regularly (say, every minute). If a master server sees that a game server hasn't sent the heartbeat for longer than that amount of time, then it assumes the server is no longer available, and drops it from the list.
Master server implementations
Here are some current master servers designed to work with Torque games.
If you're currently using a master server for your Torque game, or know of a server that works with Torque, please add it to this list!
If you use any of these or have more information on their status, please edit this page!
Master server tutorials
Want to write your own master server? Awesome!