Have you considered spreading the server to the clients themselves......i see constant complaints about the problems between static servers and dynamic clients, why not use the players killer systems to overcome their biggest short fall. minimize the static content servere side to what''s necesary t prevent cheating and exploits and enough of the world to keep it running full time but with each client added spread the processing of things to those clients and better serve the whole community
just a thought...it would require rethinking how your system works but the gain could be worth it
some guy on his couch
3D MMOG server side collision..
March 02, 2004 08:01 AM
You can do collision detection client side, to relieve the server of this calculations.
Than make a function on you server which has some heuristics about what is realistic behavior of a player. When a player is behaving strange, for instance he is in a zone marked as impasseble then kick him out of the game.
Than make a function on you server which has some heuristics about what is realistic behavior of a player. When a player is behaving strange, for instance he is in a zone marked as impasseble then kick him out of the game.
AC uses Client side collison FOR TERRAIN ONLY, all other objects (houses, doors, monsters, etc.) are server-side collisions, and it works, thats the black-and-white of it. If you doubt that, ask Turbine yourselves.
The only speed-hack I know of that was capable of defeating the server side collision was packet-spoofing so even server-side collision isn''t secure unless you know how to bit-shift and encrypt your packets.
The only speed-hack I know of that was capable of defeating the server side collision was packet-spoofing so even server-side collision isn''t secure unless you know how to bit-shift and encrypt your packets.
"I hope you brought your wits along with you for sanity is in short supply here." - Hratli of Kurast (Diablo 2)
How do you handle the world though?
If you''ve got a 1000 patches by 1000 patches, and you happen to have a player loaded into every patch, the entire server has to have the world in memory. Thats a LOT of data, I''m sure. How do you handle that much information with collision detection routines?
If you''ve got a 1000 patches by 1000 patches, and you happen to have a player loaded into every patch, the entire server has to have the world in memory. Thats a LOT of data, I''m sure. How do you handle that much information with collision detection routines?
quote:
Original post by GroZZleR
How do you handle the world though?
If you've got a 1000 patches by 1000 patches, and you happen to have a player loaded into every patch, the entire server has to have the world in memory. Thats a LOT of data, I'm sure. How do you handle that much information with collision detection routines?
Because the clients don't see the whole map data all at once, the client only loads the cells that the server gives them. Also when a cell changes (like adding a tree to a cell the player doesn't see.) the player has to re-fetch the changed cell thats why after "patch day" you sometimes come across a cell you were in before but you get the "loading data" bar at the bottom of the screen cause the data in that cell changed the last time you visited it.
There is one thing I forgot to mention AC's world server is not hosted on just one server its hosted on a server-cluster so diffrent parts of the map are on diffrent servers and even if you don't see it or notice it you cross servers multiple times. as I understand it the map is divided up into 4 quadrants and each cluster handles 1 or 2 of the quadrants (depending how Turbine set it up.)
[edited by - Lord FireFox on March 4, 2004 1:43:13 AM]
"I hope you brought your wits along with you for sanity is in short supply here." - Hratli of Kurast (Diablo 2)
If you have 1,000 x 1,000 patches, that means 1,000,000 patches. One player in each square means 1,000,000 players active at the same time. No current game is able to do that, although some designs claim to be able to go there (all of them un-proven).
Anyway, depending on physics demands, a current single machine can run between 100 and 1,000 players before running out of steam, where "steam" means kernel ability to service connections, and memory bandwidth ability to serve player physics. If you put 200 patches per server, that means 5,000 server machines to cover your area, which is certainly reasonable for a cluster intended to serve a million simultaneous players.
Anyway, depending on physics demands, a current single machine can run between 100 and 1,000 players before running out of steam, where "steam" means kernel ability to service connections, and memory bandwidth ability to serve player physics. If you put 200 patches per server, that means 5,000 server machines to cover your area, which is certainly reasonable for a cluster intended to serve a million simultaneous players.
enum Bool { True, False, FileNotFound };
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement