Peer-peer or Distributed network- Scalable online worlds
by Edward Gardner · in General Discussion · 04/26/2001 (8:04 am) · 61 replies
So I got to thinking about how to scale a massively multiplayer world. Something that Phil said in the RPG thread about "if you are willing to live without total control."
You have a massive world. Let's take a shooter for example. Thousands of servers exist for games like Quake 3, let's start there. Imagine, firing up your game, and instead of picking a server to play on from the list, you pick a launch point and explore the world, you "see" fighting in the distance, and not wanting to miss the fun, you head towards it. Suddenly your in the thick of the fight. Ok this is great, you pick up some powerups, but you get bored, and go look for a different fight, head down a corridor, hear fighting, head towards it, and voila.
Now, what is my point? In my minds eye, what it happening above, is the character is moving from server to server in a large distributed network. The first server may be his home machine, the fighting in the distance would be a local server on his ISP (perhaps even geographically close) and yet a third server hosting the last fight.
So, how do you effect communication between the distributed nodes? And how do you track a player as they move from server to server in this world? If it's an RPG, you want to have some control over the player stat tracking so you don't turn into Diablo.
Maybe do it with a master server list, geographically close servers are "close" to the character, you have snapshots of the game on the close servers, maybe brodcast in a peer-peer model, not reporting to a central server, and a centrally managed database for character information?
Now I am thinking outloud, but there is something here. HOW do you have snapshots of the game available to "nearby" servers and players without dragging the server itself or the network to a grinding halt? How to transition the player form one server to the next and make it "seemless." Servers that are "far" wouldn't need to track information on your local node, nor would you need information on them, but the "closer" the server, the more information, until you reached some kind of threshold, then you are ON that server. How do you best define "close" and "far" in this context and track it?
What kind of world would you launch in an environment like this? A shooter, an RPG, some kind of RTS, some kind of hybrid?
The real beauty of this, is it's scalability. Use all those clients out there to power the network and you don't need a huge server farm to run the world at the application level, as clients come on and drop off, new areas come into existence and dissapear. You WOULD need some kind of master tracking server (or would you), and an industrial strength database.
You have a massive world. Let's take a shooter for example. Thousands of servers exist for games like Quake 3, let's start there. Imagine, firing up your game, and instead of picking a server to play on from the list, you pick a launch point and explore the world, you "see" fighting in the distance, and not wanting to miss the fun, you head towards it. Suddenly your in the thick of the fight. Ok this is great, you pick up some powerups, but you get bored, and go look for a different fight, head down a corridor, hear fighting, head towards it, and voila.
Now, what is my point? In my minds eye, what it happening above, is the character is moving from server to server in a large distributed network. The first server may be his home machine, the fighting in the distance would be a local server on his ISP (perhaps even geographically close) and yet a third server hosting the last fight.
So, how do you effect communication between the distributed nodes? And how do you track a player as they move from server to server in this world? If it's an RPG, you want to have some control over the player stat tracking so you don't turn into Diablo.
Maybe do it with a master server list, geographically close servers are "close" to the character, you have snapshots of the game on the close servers, maybe brodcast in a peer-peer model, not reporting to a central server, and a centrally managed database for character information?
Now I am thinking outloud, but there is something here. HOW do you have snapshots of the game available to "nearby" servers and players without dragging the server itself or the network to a grinding halt? How to transition the player form one server to the next and make it "seemless." Servers that are "far" wouldn't need to track information on your local node, nor would you need information on them, but the "closer" the server, the more information, until you reached some kind of threshold, then you are ON that server. How do you best define "close" and "far" in this context and track it?
What kind of world would you launch in an environment like this? A shooter, an RPG, some kind of RTS, some kind of hybrid?
The real beauty of this, is it's scalability. Use all those clients out there to power the network and you don't need a huge server farm to run the world at the application level, as clients come on and drop off, new areas come into existence and dissapear. You WOULD need some kind of master tracking server (or would you), and an industrial strength database.
Torque Owner Edward Gardner
http://search.garagegames.com/search?restrict=resources&ie=&q=map+triggers&site=GarageGames&output=xml_no_dtd&client=GarageGames&access=p&lr=&ip=24.61.70.161&proxystylesheet=GarageGames&oe=&filter=p
This could do what you want it to:
http://www.garagegames.com/index.php?sec=mg&mod=resource&page=view&qid=2421