Why everyone develop MMORPG in client/server mode?

Started by
59 comments, last by Extrarius 18 years ago
Quote:One of the other advantages of such a 'peer' system might also be the communications bandwidth costs can be distributed (versus the usual large pipe into a central server) to go along with the lower cost of fewer company run servers.


In a peer-to-peer system, I need to send my data to N other people, and I need to receive data from N other people, and I need to send data about more than just me, for redundancy, error resiliency, and security auditing.

In a client-server system, I send data to one place, and receive data from one place.

Clearly, the client-server system uses significantly less bandwidth. If the price of bandwidth is a marginal cost (which, in aggregate, it is for society at large), then client/server solutions are actually more economically efficient, and deliver better experiences for cheaper aggregate cost than peer-to-peer.

To view it another way: You would need, say, a 4 megabit peer-to-peer connection to get similar network fidelity as you'd get from a 1 megabit client-server connection. If the client/server costs less than the price difference between those two connection types, it's actually a win, even for the user.

Quote:Combine that with having the task program's code mutate (new differently compiled resent every day -- or even more frequently) to make it nearly impossible to reverse engineer fast enough


In my opinion, no organization could QA code that mutates several times a day. There are only a finite number of scrambling techniques, after all. The best you can do is change parameters of a known algorithm, such as keys. There are simple attacks that run deltas on diffs (because you need to distribute these changes to all players, right?) and determine what the change is. If you think the user machine can be trusted at all, you probably shouldn't spend your time on trying to frustrate the untrustworthy users; your time is better spent on designing game mechanics that don't benefit from client cheating.
enum Bool { True, False, FileNotFound };
Advertisement
Take a look at my thesis I have several examples of P2P MMORPG models as well as anti-cheating measures. The thesis deals with RTS games but the model can easily be used for MMORPGs


www.p2pgamenetwork.com


Middy
Quote:Original post by hplus0603
Quote:One of the other advantages of such a 'peer' system might also be the communications bandwidth costs can be distributed (versus the usual large pipe into a central server) to go along with the lower cost of fewer company run servers.


In a peer-to-peer system, I need to send my data to N other people, and I need to receive data from N other people, and I need to send data about more than just me, for redundancy, error resiliency, and security auditing.

In a client-server system, I send data to one place, and receive data from one place.

Clearly, the client-server system uses significantly less bandwidth. If the price of bandwidth is a marginal cost (which, in aggregate, it is for society at large), then client/server solutions are actually more economically efficient, and deliver better experiences for cheaper aggregate cost than peer-to-peer.

To view it another way: You would need, say, a 4 megabit peer-to-peer connection to get similar network fidelity as you'd get from a 1 megabit client-server connection. If the client/server costs less than the price difference between those two connection types, it's actually a win, even for the user.




Consider MMORPG that have a server farm (seperate sets of Database, Game mechanics, AI, Webserver machines). The arrangement is not really 'all to one place' machinewise and the worlds are broken up into zones/areas/rooms that execute with subsets of all the players in the game (N is a fraction of total players).
The worlds are sometimes broken up into hundreds of zones/areas/rooms thus making the N much smaller (not ignoring that there still can be areas like the 'Banks' and temporary 'event' locations where much higher numbers congregate).

Even with your 4 to 1 ratio, if there are a 100 usable clients to 1 server you still have a whole lot of potential bandwidth that could be put to use (for free). Scale that up to a large MMORPG with more than 10000 active users (1000 trusted peers??) ----- might that not add up to $$$$ saved???

As to "price of bandwidth is a marginal cost", the players may now have cheaper/larger bandwidth, but the games will try to make increased use of that bandwidth and the servers will still require some N multiple of that bandwidth amount -- which means it remains a big $$$$ expense. (already there are games that dynamicly load assets (map segments, textures, music, sound effects) on the fly and if anything, that trend will increase).


Actually I dont see it practical to run the 'trusted peers' as full blown areas/zones/rooms servers, its likely not reliable enough. BUT, secondary uses
as chat servers, voice servers, Asset servers (on future dynamic map/content games), Patch downloaders, NPC AI, Scenario generators, etc... could make use of the communication bandwidth as well as the CPU capabilities of the distributed 'peer' servers.

A trusted peer methodology is really no different to the cluster architecture. Practical differences do apply (a far more unreliable infrastructure), as well as security considerations - actually letting players have a trusted peer is probably a bad idea, without some definite method of ensuring the peer is behaving correctly (which places load on your private 'seed' servers).

Really, it's a business risk - assuming your game is free, and no-one stands to gain anything in particular from hacking your peers, the risk to yourselves and your players is greatly reduced. A robust messaging system at the client end (the client knows what to expect) would allow compromised peers to be reported and removed from the heirarchy of servers.

If you were thinking of actually taking subscriptions, then your need for security is that much greater - if someone is paying you for a service then you have to do your best to ensure that service is provided.

A centralised private cluster is far less susceptible to attack than a distributed one on a basically insecure network. Another method of promoting trust might be that the 'server-enabled' versions of the game are tracked - by unique ID per installation - so you can permanently disable them from cooperating in the game if they are compromised. This would be through your standard copy-protection key code, same way as Gamespy and many other cenral-server lobbies do it.
Winterdyne Solutions Ltd is recruiting - this thread for details!
To create a true p2p mmorpg the player locality principle can be used to run the simulation of a zone on all computers that have their players in that zone. This way each zone has as many redundant copies as many players are there. To keep players from cheating when they are alone (and noone else is checking their actions), each zone must be run on a number of backup computers, possibly running another zone actively. In the resulting system, the only way to cheat is to rig all computers in a zone and all backups. If the backups are distributed randomly, cheating is only possible if more than 50 percent of the computers are cheating. Network splits and joins are a possible event, much like what happens with bigger mulitserver irc networks. In irc, channel joins sometimes create user collisions. The same thing can happen in a game where two shards are joied with players standing at the same place in their own shard. Player commands must be sent out in lockstep mode to avoid race conditions, but this can create lag, because the reaction speed within a zone will be equal to the ping time between its two slowest and farthest computers.

Viktor

ps: P2P mmorpgs are a possibility, but they will have higher lag and become less secure than games based on centralized servers.
Quote:Even with your 4 to 1 ratio, if there are a 100 usable clients to 1 server you still have a whole lot of potential bandwidth that could be put to use (for free).


I'm sorry; I don't think I understand your math.

For any given scene (X players see each other; say they're in the same dungeon or market), the peer-to-peer solution will use more of the client's bandwidth than the client-server model. The header overhead actually scales N-squared with the number of involved players; the sent data (but not the received data) also scales N-squared. With client/server, it scales linearly.

If you're sending world data to more than one peer (and getting it from more than one peer), as you would in a "multiple instances and voting" anti-cheat scenario, then the downstream will be multiplied by the number of peer-run servers, at least.

I see no way that the peer-to-peer solution can use less bandwidth than client/server; in fact, as long as you're not alone, peer-to-peer will use more, and for dense zones/dungeons/areas, it will use a lot more. Thus, for a specific level of quality, a peer-to-peer architecture will require higher bandwidth -- or, for a fixed bandwidth (a modem, or specific DSL connection), you can get a better experience in client/server than in peer-to-peer.

The closest that the market has come to a peer-to-peer MMO is Guild Wars; I believe the players of a group will instance a dungeon as a peer group when going outside the common areas. That's for a very small group, though.
enum Bool { True, False, FileNotFound };
Quote:Original post by hplus0603
Quote:Even with your 4 to 1 ratio, if there are a 100 usable clients to 1 server you still have a whole lot of potential bandwidth that could be put to use (for free).


I'm sorry; I don't think I understand your math.

For any given scene (X players see each other; say they're in the same dungeon or market), the peer-to-peer solution will use more of the client's bandwidth than the client-server model. The header overhead actually scales N-squared with the number of involved players; the sent data (but not the received data) also scales N-squared. With client/server, it scales linearly.

If you're sending world data to more than one peer (and getting it from more than one peer), as you would in a "multiple instances and voting" anti-cheat scenario, then the downstream will be multiplied by the number of peer-run servers, at least.

I see no way that the peer-to-peer solution can use less bandwidth than client/server; in fact, as long as you're not alone, peer-to-peer will use more, and for dense zones/dungeons/areas, it will use a lot more. Thus, for a specific level of quality, a peer-to-peer architecture will require higher bandwidth -- or, for a fixed bandwidth (a modem, or specific DSL connection), you can get a better experience in client/server than in peer-to-peer.

The closest that the market has come to a peer-to-peer MMO is Guild Wars; I believe the players of a group will instance a dungeon as a peer group when going outside the common areas. That's for a very small group, though.




The math is that even if its takes more bandwidth used due to increased distributed processing, there is an even greater amount of bandwidth made available in the mass of machines.

The scheme I have been talking about is not a full Peer to Peer network, it is N clients connecting to M servers (some of which sit on client machines) with M being a small subset of the N clients and each of the N clients connections to only a few of the M servers at once(as each client can only be in one zone at a time or need take data from only 1 of several redundant data distribution servers). The servers still serve as the center of a star network (client-server) and do the centralized server processing/ data marshaling.

Some of the suggested use for the have the secondary servers not even connecting to the clients -- rather act as a processing farm for certain tasks that work efficiently in that situation.





In that case you're actually describing a distributed [micro]cluster architecture, or 'trusted peer' methodology.

This has some drawbacks in 'seamless' worlds in that places the required (authoritive) inter-server traffic on an untrusted, unreliable network.

There's also some fun issues that will crop up with NAT, should such peers be behind routers - traffic from local networks may not be forwarded to the appropriate port, meaning that a customer that's hosting a trusted peer may not be able to connect to it. If you want to levy the responsibility of setting up the NAT table on your customers that want to host a peer, then this is fine, but I don't see a way of getting this to work without distributing the IP of any new peer via a central server.

If you follow this idea along, you'll notice that because the network is unreliable, and your trusted peers may or may not exist (what happens if your customer has a power failure?) the fallback mechanism becomes quite complex, with at any stage clients needing to be aware of a fallback chain all the way to the central server.

The trusted peer mechanism is fine, providing you can be assured of a certain amount of uptime across your user base - but authoritive state updates have to be centralised in order to implement a fallback mechanism that preserves gamestate.

For non-complex-gamestate applications (large scale clan v clan FPS battles) this sort of system works well - you know that n people will be on for the duration of the game, and you can more-or-less know who those people will be. Less information needs to be authoritive between the trusted peers and so the requirements on the fallback mechanism are much less.


Winterdyne Solutions Ltd is recruiting - this thread for details!
Quote:The math is that even if its takes more bandwidth used due to increased distributed processing, there is an even greater amount of bandwidth made available in the mass of machines.


That doesn't make sense to me. My DSL connection doesn't suddenly get faster just because I'm using a peer-to-peer piece of software.

The only way your statement could make sense is if the dedicated server was as limited as the peers in connection. However, if you're charging for access to a central server, making sure that you have enough provisioning to serve your customers is easy (and cheap, relatively speaking).
enum Bool { True, False, FileNotFound };
It seems obvious to me that the user-level difference between centralised and distributed MMORPGs is one of money, not one of how clients happen to communicate.

There's no obvious need for each node in a distributed MMORPG to send its data to every other node in the network. Each node can simply send and receive data from a single node: the elected "zone master server" for a particular zone, whatever a zone is defined to be.

Another approach would be a genuinely distributed MMORPG, where every client acts as a server for its own zone.

The important distinction is that if server functions are provided by a node selected from amongst the peer nodes rather than by some centralised authority, said authority has no reasonable basis for charging a subscription fee.

This topic is closed to new replies.

Advertisement