P2P multiplayer on a massive scale.

Started by
16 comments, last by intrest86 18 years, 10 months ago
Would it ever be possible to have a P2P multiplayer game on a massive scale? I think that eventually it is just natural to move away from central servers. But if one computer on the network went down, how could the game cope? I have a few ideas about how this could be achieved, and I'm thinking of writing a small library for P2P networking (specifically for about 20 clients at first, I'll make it more massive later, or maybe even see if it is scalable. The way I see it, soem computers on the network would have roles depending on bandwidth and processing power. Computers with high bandwidth would act as hubs, where several other clients would send their data to be redistributed. Computers with high processing power would be like a traditional server, taking a small chunk of the CPU and devoting it to say, AI or phyisics. I just don't see how this could be done effeciently though. I need a programming project that would be useful and kinda new, and I think this could be it, but I wanted to discuss it first to get some ideas, critism, calculations etc etc etc.
I love me and you love you.
Advertisement
Nothing new about trying to design P2P for something other than file sharing network control...but no one has implemented a good library that I know of. I would like to see one.
As far as ideas for P2P there are tons in the network literature. Not too sure about yours though. Bandwidth and processing power are not always the limiting factors. Usually most people optimize the delay or hop count because these are more important for realtime traffic. If you want good ideas look up overlay networks..that is really what you are forming when you do P2P...unless your network is real small then you could have a mesh.

This topic was real hot in the literature, but not much has come of it.
The main problem with P2P game setups (at least in my mind) is the issue of making sure that none of the clients are cheating. Usually in a server client setup this is done by having the server really do everything, always making sure that the client is passing good data and that the client only recieves the data it needs.

Once you have the data distributed across the network on clients, it becomes a lot more difficult (if not impossible) to do this. How do you make sure that the player isn;t magically teleporting across the part of land they are responsible for? Or that they didn;t just turn a rat pelt into a precious gem?

Of course, that doesn't mean this can;t work with a smaller scale, where everyone knows each other and trusts each other. But go beyond that and you need to secure your data somehow.
Turring Machines are better than C++ any day ^_~
Isn't that kind of what GameSpy Arcade (Or Quakeworld) did?
Couldn't peers check each other periodically?
I love me and you love you.
Synchronization would be your most difficult part. If you have several different "pseudo-servers", how do you keep the data between them even. It's difficult enough to do it when the servers are on the same rack. Doing it while they're 100 milliseconds apart would be bruital. Expecially if you hit high traffic and you get a netsplit of some sort.

Doom was actually a p2p mesh, but it didn't scale so well, which is why id uses the client server model now. That's the largest p2p game I know of.
Quote:Original post by Grizwald
Couldn't peers check each other periodically?

That is simple to say, but how? Are two clients computing the same part of the world to provide redundancy? If they don't agree, which one is corupt? Should you use 3 clients for each piece of data? What if two of the clients are cheating?

If I am a company who makes money by levelling and selling characters, what is keeping me from having all of my workers keep logging on and off until they have matching parts of the data? Then they could cheat in sync, and roll in the dough.

There are definately a lot of issues, and also a lot of possible solutions. All of the solutions I can think of though have quirks. For example, you could split the data up a lot, really fragment it, so that any single client doesn;t really have enough to cheat with. But then you have to create some way to access all that data from all of those clients, just so a client can sell a loaf of bread.
Turring Machines are better than C++ any day ^_~
Hmm.. the main reason for introducing a p2p MMO system would be saving costs on a server. But what if a server would be used not for everything in the game, but just to in some way ensure that no-one is cheating (that'd be useful if it didn't take as much bandwidth as normal game server would). This way the server would be analogous to BitTorrent tracker - bittorrent is highly scalable without much tracker traffic.
(Not sure how the checking would work, though. Any ideas?)
How about some kind of random auditing to catch cheating. Each peer could at any time query the state of another peer and all of the transactions (ie. trading items with other peer and such) made by that peer. This would be done in a random fashion and cross checked against data from other peer for consistency. This would be best done by a server, but the load would be small. Potential cheaters would then get flagged and could be examined more closely.

If for example peer A is queried and claims to have gotten a Sword +10 from peer B, but B doesn't say that he gave a Sword +10 to A, then A is likely to be a cheater. This wouldn't really work for cheats that just enhance abilities, like speeding up movement.
Yeah... The internet, in its current state, is just not fast enough. And with P2P, there are too many considerations. You can't trust the hosts not to cheat, you can't trust them to be always fast, and you can't even trust them to stay online.

Honestly, I feel its just "not gonna happen". And when the internet is fast enough for this to be possible (everyone has a 100Mbps connection), then everyone will also have the bandwidth to run a central server.

Looking for a serious game project?
www.xgameproject.com

This topic is closed to new replies.

Advertisement