Why everyone develop MMORPG in client/server mode?

Started by
59 comments, last by Extrarius 18 years ago
I am new to this, and feel quite curious about it that why most MMORPG are developped in client/server mode, that is using a centralized server? why don't they just use something dicentralized game logic, that distribute the processing/store/... load on customers? what's the problems they meet? security? any help is appreciated. 824learner
Advertisement
Read Question 17

as far as I know, client/server is just easier to implement.
thanks a lot!!!

so technically, security (anti-cheating) and easy network structure detect/update are the two main challenges p2p mmorpg are facing?

I still have one question, for I suppose players won't need to change their network connections very frequently, then can't the algorithm used in bittorrent be used in p2p mmorpg? why are these two different on a technical level? (besides the security problem)

any help will be appreciated,
thanks,
824learner

I think the main problem with any sort of P2P architecture is that it would make it much easier to cheat. If the checking code is being run in the server, you can't affect it; if it's on your machine you can.

The other thing is that you could get large latencies if your peer was a long way away, or if they couldn't upload data fast. For downloading stuff this doesn't matter, but for games consistently low latency is fairly essential.
Imagine a MMORPG with just 1000 players on a server, each player will have to send its data to 999 other players, and it will have to recieve data from 999 other players. So imagine if we had to send 10 KB/sec in a client/server architecture, in a P2P architecture we would have to send ~10 MB/sec. Also imagine if the client could determine which data it would give itself, it could say it had the best sword in the game, and there would be no way to say that it was wrong.
And, correct me if I'm wrong, BitTorrent requires multiple computers to have the same file for a really fast download. This means that when you send, say, your characters position to all the other computers, only you would have that information initially, meaning that there would be no increase in speed. You might be able to get marginalaly better performance if once a computer recieved your position, it would also send it out to other computers that needed it. This would be a very marginal benefit and might not even work.

Edit: After reading CTar's post, heres another thought:

On a non-p2p MMO, the server would hold all the players positions. It would only need to send out the player's information to other players near-by. This would, obviously, be more efficient than sending it to everyone.

Now imagine a p2p MMO. Each client holds its own positions. In order to know whether or not it needs to retrieve/send data to another player, it would be necessary for it to already know the position of that player. This means that every position must be sent to every computer every frame. The standard MMO will thus have better performance than the p2p one.
Quote:Original post by Ezbez
And, correct me if I'm wrong, BitTorrent requires multiple computers to have the same file for a really fast download. This means that when you send, say, your characters position to all the other computers, only you would have that information initially, meaning that there would be no increase in speed. You might be able to get marginalaly better performance if once a computer recieved your position, it would also send it out to other computers that needed it. This would be a very marginal benefit and might not even work.


It could possibly have an increase in performance actually, especially with the "zones" in a server. I'll try to explain as best I can my view on how this would work.

You have an initial server hosting 5 areas of a world. Each of those areas in the world is, in reality, their own server. So you are running 5 servers distributing the player locations. Now if you have that single server distributing 5 locations to 10000 different players, lets assume there is 2000 players in each of the 5 world areas. Lets divide these areas up now, we will "disect" one area. The main server would send the location of a player to a single user. So now, this user now contains the information as to where player 2 is located. He then starts distributing his knowledge to all the other players and it continues like that in a web pattern. Once a player separates lets say 50 feet from another player and is out of range, he would stop sending that players information to other players because he is not his business anymore. Each client connected to the main server would now be considered their own server while distributing information equally no matter how many players are in that area.

It's a confusing little concept but it could possibly work. This is my idea of how it would work but if anyone has any others let me here them.

By the way, if what I said above does make any sense, this would mean that once you have about 5000 users on the server you would be able to play the game without even having a main server online, meaning players wouldn't be able to be shutdown (besides kick commands), unless you had a master server that watches all the "sub-servers" that begin the main hosting of the world server.
Hello?
Here's a list of reason why a p2p network for any sort of game really won't work. I'm going to be comparing to BitTorrent, since it's the P2P I know the most about, but this is mostly applicable to any P2P.

First off, to understand webbed P2P networks, you really need to know something about Graph Theory (http://en.wikipedia.org/wiki/Graph_theory).

The first really big obsticle in P2P gaming is that there's no real easy way to tell if your graph of clients is complete. I.E. that ever node int eh graph has atleast one route to every other note in the graph. I believe this problem is O(N!) But I'm not sure. What this boils down too is that your topology might change such that there are two distict graphs, and while they both appear healthy, nodes from one cannot communicate to nodes with another. Imagine a Star of David with Nodea at each point. You really have 2 graphs of 3 nodes here, not 1 graph of 6 nodes. This is not a trivial problem, but there are others.

In BitTorrent, when you download the .torrent file, it has a lot of information in it. It tell you Where to get peers, and also what files to expect, their checksums, and sizes. This means that when you start into a BitTorrent session, your client already knows what information it needs. It has X pieces it needs. This means that the vast majority of the traffic incoming into your computer is actually wanted traffic. In Gaming, your client doesn't know what specific information it needs. It needs 'Info about where I am' 'Info about NPCs' but it doesn't know that IRTank is right next to you, and you want to get IRTanks info. So, you can either trust the clients to tell you what's around you (And maybe they don't know); or you can send all traffic anywhere, which would be like you having to pass the traffic for EVERY PEER that wants it in BitTorrent.

BitTorrent doesn't care about lag, in the same sense that gamers do. If you get a bit of a piece 30 seconds later then you thought you would, it doesn't matter much to BT. But in Gaming, that could mean the difference between life and death.

Then we come to the trusted network model. In BT, as I already alluded too, Your client knows what it wants already. So, if it gets bad data (Happens more then you might think) It can disguard it. Your gaming client, on the other hand isn't really going to know bad data, especially if that data is well-formed.

Plus, you can't trust your players not to cheat. Here's a conceptional list of what happens in a game that might be tampered with:

Equipment -- Just look at the original diablo for the problem with this.
Random Rolls -- Does your spell hit? How much damage do you do? Who decides all this? You can't trust the client. You don't want to trust someone else's client.
Positional Information -- You can easily teleport, of the clients are going to trust you on where you are.

That's just what I can think of off the top of my head. Some of this is detectable (Positional... Did they go too fast?) But then, what do you do with that client? Drop them? It's hard to say. Plus then your client is doing the job of checking everyone for positional data.

Plus, It's easy enough to tamper with the network of fringe nodes fairly easily. Tell them bad info, drop them, create artificial lag.

You also don't have any structure for keeping track of what in the world. ANd how do NPCs act? Monster actions are randomized (Or way too easy to deal with). Who controls this?

Last point: Who's going to pay you a monthly fee if you don't run any servers?

Now, you might beable to save some bandwidth by keeping Server/Client for crucial game functionality, but shoving the non-crucial down to a P2P layer. Chat, guestures, skins, appearence, etc. could be handled by a P2P network failry easily, because if this info is wrong, it doesn't effect gameplay too much. But you really haven't saved yourself the server.


thanks you guys for so much replies, but I am more confused, I mean, why should a player send his information to all other players, I mean he only need to interact with a few players nearby? By the way, won't the "distributed" component arise from map storage rather than player ... I mean, the map can be stored distributedly, for example, a room store on this player's machine, a town on another player's more stronger machine, then all player inside this town will interact with this player's clinet (also as server)? also just as MSN, or Bittorrent, there will also be a globally master server, that perform some necessary coordinating work, such as p2p establishing, billing, login etc. so namely it just distribute what can be distributed, ? there could be many problems, but there are also pros, such as player can edit their "home map", (like in sims? never played.) I suppose maybe a lot of players might be interested in building a home in game, just as many guys interested in making a legendary character.

for the cheating problem, I really have no idea, (I know quite littel about it, but I am curious why don't they write it into some license agreement, such that who cheat would be considered illegal?)

thanks,
824learner
The reason you would have to have players send their data to everyone is for things like cross country interaction. Mail, /whois which displays character location etc, private messages, and more..
Hello?

This topic is closed to new replies.

Advertisement