Ive been pondering this question for some time.. not your exact question but one very similar..
my current plan is a mix between Cacatoes two "experimental" ideas.. a "peer to peer FPSMMO" but there are many complications..
lets start with why you cant compare a server to a torrent
Peer to peer works with file sharing because torrents are a simple push pull system.. file sharing is just a different system to a game
I considered a this difference for a while, and for a long while I considered grid computing (grid networking) as the programmatic alternative to peer to peer file sharing. This technology allows sharing of CPU and memory usage throughout a distributed network. This is available in multiple languages in multiple varieties.. I may still use some features of Sun Grid Engine (dont worry, its built with Ant but its a c project
).
Grid technology is great - closest thing there is to peer to peer programs, however it wont work for a FPS or any decent game for two main reasons. One was mentioned earlier, there would still need to be a "true state" as andrewj put it. I believe he meant that there needs to be one definition of the world in which calculations should be made. Calculations made client side improve ping, but at the loss of accuracy - there needs to be one real definition of the universe in which most calculations can be made.
The other reason is ping, if a client talks to a grid server, calculations would have to pass through multiple servers - in most grid architecture an entry server and a cloud of servers - this takes longer to respond than one machine.
Again I considered this.. I will not go into the MMO side of things quite yet (though am happy to discuss it mainly involves networking these servers) as Im still working on the important side, creating a server with a larger capacity for players working across multiple computers (the closest to P2P i could come up with).
My current theory involves splitting tasks into seperate servers to reduce load on the 'primary' server with the 'true state' of the characters and involves pvp and firing weapon calculations. You would then have an AI server, a PVE (PVNPC?) server, possibly a team speak server, maybe an npc or an item server allowing unique items.. you get the idea and im hoping someone that already knows the code might have more ideas
.
The client would talk to two servers - one with location and any weapon dmg and another which would distribute tasks. Perhaps these less important servers could run as grids hooking up 100 computers as the AI server and 1million bots could join a game
Anyway, the idea is that with reduced load on the server - each part of the server could run on a part of a client machine allowing more players to join than using any just one. Peer to Peer server
After going through a small amount of this code though (and being rusty in c), I have a lot of work ahead of me..
btw this is my first post to the forum so..
Hi - Ive been reading the code for a short while (Attempting to understand the vectors and matrices has been making my head spin) and figured I should drop by the forums.
oh, ps as Cacatoes said - increasing protocol efficiency helps too. I have not had a look this part of the code yet, but itd be interesting to see if a faster protocol that can reroute to an alternate server based on delay length could improve ping speed (itll be necessary with my MMO design anyway)