Jump to content
  • Advertisement
Sign in to follow this  
adicted

Is this a viable architecture for a mmog ?

This topic is 4616 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi all, I have been looking for information about programming a client/server architecture for a mmog, but i have only found bits of information and nothing really concrete. After all this reading i have figured out a possible solution but I'm not really experienced about network programming and possible issues this implementation could suffer. So I ask about your opinion and constructive crits about this implementation, and a little explanation about why it wouldn't work is welcomed, not just 'it wont work sorry!' Here it is: The world is partitioned into squares that will be called 'cells'( original, isn't it? ), they won't be very big so i will need thousands to fill the world. An array of cells will be called 'Zone'( :) ). Each zone is controlled by a server. Cells can be passed to another server if it's needed to balance the network. In the client side we check wich cells are visible and a request of the information available in the visible cells is sent ( players, npcs, etc. ). Information from various servers at the same time will be required if the player is viewing cells from various servers. The client side will have the cell 'topology' so it can check the cell visibility itself but it won't know wich server owns this cell so i think a master server with information about what server owns each cell will be needed. I would really like to skip this master server but i cant figure how the client will know which server owns a specific cell, because cells can be passed from server to server, with some restrictions. Well it's long enough, I hope it's not the dumbest post in the forum story, as I said before I have never tried such a thing. I'm awaiting your comments, Thanks!

Share this post


Link to post
Share on other sites
Advertisement
The client should not decide which cells are visible. The server should. This stops someone hacking your client and requesting info on the whole game world.

Other than that, you've got a pretty standard spatial partitioning zone model there.

I cover a lot of this in some of the threads I've posted on this forum. Your servers need to be aware of each other. Since they are usually colocated on a fast lan, intra server traffic is not too scary, providing not too much goes on at server boundaries. If you're not too experienced with the network programming, I'd advise working on a single zone principle at the moment, and use your framework for batching events. Later on, add the inter-server traffic.


Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Thanks winterdyne,

I'm going to read your posts after writing this one.
Don't you think that calculate cell visibility in the server will overload it ?
Of course i will not check the player frustum with every single cell in the world, it will be optimized, but i'm a bit afraid about overloading the server, i want to support as many players as possible.

Share this post


Link to post
Share on other sites
IMO, its all about the scalablity of your architecture. You want to make it such that adding more servers to the world cluster will improve the performance... I dont think you can have a "massive" mog on a single-server.

Share this post


Link to post
Share on other sites
You say that 'zones' are made up of several cells, then go on to say that cells can be passed to different servers. It would probably be best to pass the whole zone instead. I also second the scalability comment, you should design your back-end programming so that you can load your software on the computer, connect it to the network, and have it communicate with the other servers and not have to do anything more than that.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Quote:
Original post by Steadtler
IMO, its all about the scalablity of your architecture. You want to make it such that adding more servers to the world cluster will improve the performance... I dont think you can have a "massive" mog on a single-server.


I agree that you can't have a massive game on a single server, but if one single server can handle 500 players instead of 300 then the network needed is much smaller and a big improvement.

Quote:
Original post by I_Smell_Tuna
It would probably be best to pass the whole zone instead.


I think i didn't explained the concept well, each zone is controlled by a server, then passing a zone is like passing the whole server. What would be wise is pass an array of 10x10 cells, for example, instead of single cells.


While writing this post i think i have got a solution for the cell visibility calculation!
Client side will calculate wich cells are visible from the current point of view, then it sends a request to the server to get the data of these cells, the server will only check if this cells are really visible and send the data if it's true. Simple!

Share this post


Link to post
Share on other sites
Well if your server is going to check to see if the cell is visible anyway why not just have the client send a request for visible cells then have the server reply with a list of visible cells.

Here is a thread with MMO cluster architecture ideas. http://www.gamedev.net/community/forums/topic.asp?topic_id=348831

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
The client has to determine what cells are visible between the thousands that exist in the game world( as i said it's optimized, not checking each single cell against the frustum ), then send the ID of the visible cells to the server,
and the server only verifies the visibility of requested cells, no more. I think it's faster and doesn't allow cheating.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Procedure is like this:

Client gets the visible cells.
Client send the list of visible cells.
Server checks the cells received, no more.
If list is valid, information of the cells is sent.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!