I've been mulling over how one would go about creating a P2P system (like BitTorrent is for files) for playing multiplayer games. The idea is to remove the traditional server from the multiplayer architecture. I understand that some sort of server may be necessary for initiating the communications and sending world updates etc, but I'm interested into how you would reduce the load and bandwidth pressures on the server.
By the way, this goes for any size game, from a two player checkers game right up to a FPS with 30+ players.
Am I crazy?
The big problem is not bandiwdth or latency or distributing changes to the game state. The big problem is trust.
If I tell you I killed a monster, how do you verify that I actually did it? How do you verify that I'm actually level 45? How do you verify I'm not teleporting around the world? Remember you can't check the server for every little detail: that's what we're trying to avoid!
You need players watching players and even then they might work together to cheat. I really doubt anyone will engineer a trustworthy p2p MMO anytime soon.
I've been thinking about the same thing. I've got a long-time prejudice that distributed systems ought to be distributed, with no need for a central controller. The issue with an MMO or similar game is that every player should be able to see the same "world". You end up with an issue similar to Einstein-ian Relativity and "simultaneity" -- the farther apart you are, the more your view of the world differs.
In general, the solution is that you have to be able to propagate information to other clients in your immediate neighborhood -- in the in-gamer space, not necessarily physical space -- fast enough that updates appear simultaneous to all the local players.
I suspect the answer is to have a "server" or world-model per player, rather than representing the players as vectors in a world server.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With