Archived

This topic is now archived and is closed to further replies.

kressilac

Multiplayer Server Architecture Questions

Recommended Posts

Hi folks. I have a question concerning massively multiplayer games. In an effort to create one, my developers and I are uncertain about the approach we should take to the server design. We have 90% of it complete and are left with a couple of questions.

Our architecture consits of three components. A connection manager/command parser, a player character manager, and a world content manager. The player character manager handles keeping track of PCs and all things related to them. The connection manager/command parser, here forth called the game server keeps track of all skills and commands, and coordinates the resources of the game so they can be displayed properly in the client. Combat will also take place in the game server. The world manager takes care of handling all of the objects and NPCs in the game. It is where the zones are defined, resets occur, and where new zones are installed.

A client connects into the game server(through some YTBD firewall scheme) and the game server is responsible for matching a PC with that socket descriptor. From here all communication within the world goes through the game server. The benefit of this is that additional game servers can be brought up to serve more players as needed. These games servers can access the world server and the PC server in paralell and we have scalability taken care of. Since each of the three servers communicate through a protocol(custom designed), we should be scalable and reliable.(assuming built in redundancy coding)

The question: I would like to have the best performance possible while maintaining 5000+ players on at one time. Mind you the game is 2 years away. Given the above architecture are there any blatant things you can see that might be missing or considerations that look to be miseed? I know this is a broad question, but I am only really looking for a validation of sort that would indicate we are not headed in a blatantly wrong direction. My gut tells me no but I thought I would throw it on the board here and see what the rest of you have to say.

Thanks
Kressilac

ps The alternative to this is to create on massive executable to forgo the protocol between servers. Another alternative is the use of threading or COM in conjunction with the servers as a way to encapuslate interoperabilitiy and inter-server-communication. Your thoughts?

------------------
Derek Licciardi

[This message has been edited by kressilac (edited November 29, 1999).]

Share this post


Link to post
Share on other sites
Just as a clarification, the possibilities we came up with are:

1 Three modules Game Server, PC Server, World Server all communicating through some interprocess communication protocol custom designed.

2 One large executable.

3 Using NT threads, or COM to code the servers above.

Kressilac

ps A 4th possibility would be to combine the PC server and Game Server into one server and leave the world server seperate. This will bring the PC list closer to the descriptor list but restrict us in scalability. Performance could be greater this way though.

------------------
Derek Licciardi

Share this post


Link to post
Share on other sites