First of all, is it possible for a p2p Game network to work. I have been pondering a while on what exactly could be done in this area to lower the costs of running servers.
Obviously running a system this way is going to have massive security vulnerabilities (most of which it should be possible to make very difficult) and there will also be obvious problems with sync between p2p nodes.
The idea is basically about spreading server responsibilities for online games over many different nodes to reduce computation at server level to a minimum. Physics and player movement, deaths and spawns etc, this can all be handled by users in the network (well, multiple users in the p2p network to get a reasonable consistency with results).
Basically, what are your thoughts on such a system, and really would it be worth all the trouble to spread the network load in this way?
-Chris Bennett of Dwarfsoft - The future of RPGsGPA Thanks to all the goblins in the GDCorner niche
First, there was an article series on gamasutra.com a few years back by Crosbie Fitch, about "building peer-to-peer cyberspace". Read it, it has some good bits.
Second, "web of trust" will have to be managed, and you probably want to cop out when it comes to commerce-related things, and keep ''em on a centralized, trusted server.
Third, there are a few games from www.synthetic-reality.com which use P2P gaming, and seem to be doing well. They''ve been around forever, and have a loyal following. You might want to check that out, too.
It sounds good, but I am not sure. As you stated security will be a major concern, one bad seed will ruin the game for all players. Also distributing the server load may require an increase in client load as clients may have to duplicate certain data in order for two or more seperate component servers to properly act on the data they receive (for example a players position may have to be sent to more than one server). However most of this could be solved provided that the components that are hosted on each server are largely independant of each other for example: Have: 1 server that performs chat/voice messaging. 1 server that performs resource uploading for new maps/models etc. 1 server that performs the game core.
Unfortunately I can''t think of anyway to break up the game core without stability, synchronisation, security and client load becoming an issue. I remember one game in particular, a world war one version of bf1942 (this was a long time ago) that tried to delegate as much responsibilty to the clients as possible, and that game would go out of synch within 10 minutes and we would have on one computer 2 people next to each other and one of them is swimming through the air because on the other computer they were swimming in the middle of a lake half a mile away!.
Thanks for those gamasutra articles. They look great. Will have to keep reading into that.
As for security, we don''t really need to worry so much about security as I see it. Firstly we should never be doing commercial transactions over p2p because thats just suicide. What I am thinking is more a way of clustering.
You have a cluster of people from a similar IP range for example. If a player decides to move they send out their request to the cluster. All the nodes in the cluster then respond to each other with their results. This way you can just go for a Majority rules approach. Anything that appears suspicious to the rest of results gets flagged. Flagged too many times and it''s never trusted again.
Because we are only talking about computations that the server then doesn''t have to trust (the server will recieve a result from a couple of sources and can make its own mind up about what is real or if it should reject all of the data and redistribute the cluster elsewhere).
If a cluster seems to be having technical dificulties and it is not obvious which node or nodes are causing the problem (due to them being in a majority somehow) then the nodes can be redistributed throughout the p2p network to break the grouping up.