MMORPG Client/Server Architecture ? Such as Movement

Started by
23 comments, last by valleyman86 16 years, 2 months ago
Quote:So I can safely assume all the clients will generate the same path based on the information provided by the server?


If the server and client have exactly the same information, and the numerical environment is exactly the same, then they will generate the same path. However, making sure that both of those are true is actually pretty hard (and impossible for the general case, because of latency and interest management).

If you run path finding on the server, then you might as well send the result of that to the clients. A few dozen bytes to describe the path (or the next 5 seconds of the path, sent every 3 seconds or whatever) is well worth it to make sure everything stays consistent.
enum Bool { True, False, FileNotFound };
Advertisement
This was my idea... I figured if the server was already doing pathfinding then it should send the path to the client... But if the server is just checking to see if they can be at the new destination then maybe not but this would allow users to modify the client and create wall hacks as long as they never stopped inside a wall loi.
-------------------------------------------
http://www.MurderDev.com - Developing Killer Software
http://www.MobileCellOut.com - Cell Phone Contract Exchange
There's plenty of MMO's (as in truly massive) where the client is authoritative when it comes to player position. Yes this enables certain types of hacks but it allows players to have a much smoother game experience with no rubber banding and reduces load on the server. The earlier MMO's tried to let the server be completely authoritative with a confirmation like suggested and it didn't work out very well.
Quote:Original post by asp_
There's plenty of MMO's (as in truly massive) where the client is authoritative when it comes to player position. Yes this enables certain types of hacks but it allows players to have a much smoother game experience with no rubber banding and reduces load on the server. The earlier MMO's tried to let the server be completely authoritative with a confirmation like suggested and it didn't work out very well.


Can you name an example?
Quote:Original post by hplus0603
Quote:So I can safely assume all the clients will generate the same path based on the information provided by the server?


If the server and client have exactly the same information, and the numerical environment is exactly the same, then they will generate the same path. However, making sure that both of those are true is actually pretty hard (and impossible for the general case, because of latency and interest management).

If you run path finding on the server, then you might as well send the result of that to the clients. A few dozen bytes to describe the path (or the next 5 seconds of the path, sent every 3 seconds or whatever) is well worth it to make sure everything stays consistent.

Sending the start position of the pathfinding when sending the destination will create the same path. Sending the path is completely useless unless the path is generated by AI
Antheus, World of Warcraft and Vanguard: Saga of Heroes are two off the top of my head.
Quote:Sending the path is completely useless


You either didn't read, or didn't understand, my post.

I explained several cases where the "client will arrive at the same result" assumption could be wrong, and couldn't possibly be right. I also explained why sending the path, or at least the next few parts of the path, would be desirable.

Perhaps I didn't go into enough detail?

[Edited by - hplus0603 on January 30, 2008 9:43:02 PM]
enum Bool { True, False, FileNotFound };
Im not sure but I would guess games like WoW do not have authoritative clients. I would imagine that they have predictive techniques such as the client will go ahead and do what it needs to such as path finding before the server says anything but if the server disagrees the client will fix itself (hence rubber banding). This would allow smooth movements of normal gameplay and rubber banding would only happen when the server disagrees... This seems smart because the client isn't held up by the server connection/speed and im gonna guess that 90% of the time the client would be right... I can only see this being wrong if something was changed or if the data was different for both client and server... This was just an idea I had im not sure if WoW uses this but I imagine they don't let the client make ANY decisions... This is defiantly an interesting topic though...
-------------------------------------------
http://www.MurderDev.com - Developing Killer Software
http://www.MobileCellOut.com - Cell Phone Contract Exchange
I'm not guessing at all. Unless things have radically changed lately but I doubt that. Validating movement is extremely expensive.. and with so many movements going on all the time it would be hard to it well enough. You're basically a space ship with 6 degrees of freedom as far as the server is concerned. There's also no collision detection server side. There's ray casts for visibility testing though.

You have to compromise to design a system on the scale of these games in my experience. How far you want to go depends one what these compromises enable. In my experience having the client authoritative over position isn't something that opens up for huge issues if you design with this property in mind. The client also doesn't have to be completely authoritative, it can be within reason.
Quote:Original post by hplus0603
Quote:Sending the path is completely useless


You either didn't read, or didn't understand, my post.



For interest management are you thinking of cases other than simple moving to static location coordinates? Like moving to attack a player, or moving while a moving collideable object intersects their path or something? If so, then yeah I agree those situations can be problematic. That's one of the reasons I mentioned "If the player is displaced too much then snap the player or interpolate it to the position fast then make it go to the new position." Some things are just gonna need to be fixed with snapping if the system isn't deterministic enough.

Quote:Original post by hplus0603Perhaps I didn't go into enough detail?
I wouldn't mind hearing of some situations you might know of. I haven't put much deep thought into the concepts. Might help the OP (or me :) )

Quote:Original post by asp_
I'm not guessing at all. Unless things have radically changed lately but I doubt that. Validating movement is extremely expensive.. and with so many movements going on all the time it would be hard to it well enough. You're basically a space ship with 6 degrees of freedom as far as the server is concerned. There's also no collision detection server side. There's ray casts for visibility testing though.

You have to compromise to design a system on the scale of these games in my experience. How far you want to go depends one what these compromises enable. In my experience having the client authoritative over position isn't something that opens up for huge issues if you design with this property in mind. The client also doesn't have to be completely authoritative, it can be within reason.
I'm gonna have to see sources. I've played WOW a few times (like 3 times) and once during a highly congested gathering (300 something people) and their congestion kicked in. (updated players once every 30 seconds about, very noticeable), but kept my character moving constant. I'm thinking that they just did it to save bandwidth for players and that their servers ran the simulation fine with no hiccups. Yeah I'm pretty sure the servers are performing collision and everything for clients. It's not as expensive as you might think.

[Edited by - Sirisian on January 30, 2008 10:50:15 PM]

This topic is closed to new replies.

Advertisement