Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

How to seamlessly connect multiple different servers?

A topic by AceSilverFang created Jan 04, 2021 Views: 226 Replies: 6
Viewing posts 1 to 7

I'm an artist more focused on the level design aspect of games and had an idea for a game but it would require multiple servers.

I'M NOT MAKING THIS MMO RIGHT NOW.

Just clarifying that so I don't get a bunch of people telling me not to make mmo's because they are too complicated. This post is just a thought experiment.

How would someone go about connecting multiple servers for an mmo without having load screens each time you changed servers?

To give this some imagery, imagine a game has 2 cities each on a different server and the player can go to City B from City A without any loading screens at all. He just walks there in game.

I'm not asking for how this can't be done. I'm wondering, what would be necessary to make this possible.

Moderator(+1)

I’m not sure I understand the question.

Similar to how games have implemented loading behind the scenes, to give the illusion of an “Open World”, one can implement a similar mechanism to switch servers as the user walks on land.

I don’t have much familiarity with actually making an MMO, but this question sounds like an XY Problem. To quote the linked page:

The X-Y Problem, as it is sometimes called, occurs when a person tries to solve a problem on their own, pursues a method that seems like a promising approach, gets stuck, and then asks for help with their chosen method (instead of asking for help with the original problem).

Is it normal for an MMO to use different servers for different cities? The few I’ve played years ago would use one server for each continent (mainly to reduce ping). How would the game benefit by using more servers?

Allow me to give an honest answer. It so happens I actually do make an online rpg as my expertise happens to be in network client/server applications. So I am quite familiar with the subject. However, there isn't much for me left to say as Dark Dimension is spot on with his comment. If you aren't making an MMO, why would you even want to know this? :p

Because if you were and you can't even answer your own question, I highly advice against continuing. A video game is complex enough as it is, but multiplayer? That requires a deep understanding of HTTP, Sockets, Server/Clients, IP Addresses, TCP/UDP, Ping and basically just all basics in networking that exist. But to answer your question shortly: You can't.

Switching between servers means loading as you would have to close connection with the current server, which probably also have to save your state first before you can continue And with your state I mean your character data like position, stats and such. Once done you would need to setup a new connection to the other server. If that succeeds the new server would first have load the last saved state of your character and send you the state of that server. And with the server state I mean data like the players that are currently connected, items that are on the floor, locations of NPCs and god knows what. And that is usually quite some data. Once your client got all of that it would first need to parse that data and use it to generate game objects and the map and prepare everything. Only once that all is done, you'll have successfully switched servers. And that is actually a very brief explanation as I didn't cover the subject of authentication, connection validations etc.

Ok. Thanks for the quick responses btw, guys. Like I said. I'm a level design artist so I like to dream up wild scenarios in my spare time. This idea was one of those. I thought it up because I saw that servers are limited in how many people can exist on one server at one time, not counting all the assets, etc. So I've been running thought experiments by everyone I know and anyone who will listen so that I can understand the limitations better.

I'm not a programmer, so what little I understand of programming comes from what I learned online and from programmers I know. I've been trying to grow so that I can one day create an mmo when I am ready.

I read that some servers top out at 11,000 people. Is there any other way around this? Or is the only solution to build a better server?

Moderator(+2)

This idea was one of those. I thought it up because I saw that servers are limited in how many people can exist on one server at one time, not counting all the assets, etc.

Ah, so the idea to use different servers for each city is to support more people?

As TheBoneJarmer mentioned, each server is limited by their hardware. So theoretically by updating the server’s hardware, it will be able to support more people.

I say theoretically, with the more people that interact with each other, the resources needed increase rapidly. To use your example, if 11,000 people were very close to each other, and they were all visible on the screen, every time a person moved their character, the server would need to notify the other 10,999 people about this change.

This is usually optimised, so that you only see like 10-20 people at a time on the screen, and even though there are more people on the same server, they are not close enough to you to see them, so the server skips sending you their details.

This is quite the complex topic, but hope it gives you an idea of how it works. So it is possible to do what you are thinking, and support more people. Either by using extra servers or doing smart optimisations, the implementation isn’t that important.

(+2)

Neither, a server is only limited to its own hardware and the socket listener's backlog size.

There is one fact: it is possible, but obviously not easy, and like TheBoneJarmer said you need a deep understanding of networking and whatnot, however there are services that can help with that, like SpatialOS but my personal opinion in regards to using services is that you should definitely learn how to do it instead because I believe that being bound to a service like that leaves you with little control over your own project when it comes to such a core feature.

This topic has been auto-archived and can no longer be posted in because there haven't been any posts in a while.