Which is a good MMORPG model?

Options
zeppelinisgod
edited February 2013 in Photon Server
Hi, I am designing a low-scale mmorpg. I have designed multiplayer games before but now I decided to create a low-scale mmo as an R&D project. I have couple of models that I have in mind, if there is any experts please let me know which is good.

Model 1: I have a MasterServer which all clients connect to then various sub-subservers(login, character, chat, and zones). all sub-servers connect to the master and all clients connect to the master. clients cannot communicate with the sub-servers directly and the same with subservers. all messages from and to the client are forwarded from the master. the master assigns the current client server based on client state(login, char select, zoned)

Advantages: Easy to design, manage, only need one connection, easy to keep the state, seamless zone-ins possible
Disadvantages: messages travel slow(4 stops rather than 2), harder to calculate lag-times for movement simulation in server-side

Model 2: I have a MasterServer which is also a LoadBalancer. Clients connect to master first, same with all sub-servers(login, chat, and zones). Clients connect to master and request a sub-server to connect to(Login first) then the master sends connection info. Clients connect to login(still keeping the master connection) then validate login->disconnect from login and ask master to get the zone connection info->master sends the zone->client disconnect from master->connects to zone->connects to chat.

Advantages: Messages travel faster, easy to calculate lag times for movement simulation server-side
Disadvantages: Hard to keep state, need to keep 2 connections(chat and zone), and hard to manage

Let me know what model seems best or if there is a better one let me know, thanks in advance :)

Comments

  • chvetsov
    Options
    i would prefer first case. Just because it is easer and more reliable from connection managment point of view.
    if you have only one connection from client to your cluster, in case when connection lost, all cluster will know about this. if you have many connections one may be broken another one still valid and so on.

    Usually connections between servers in cluster are very fast. So it will not add very big lag to you messages.

    As one of many ways to implement first case you could take a look at SwitchBoardCluster sample. it implements very similar idea
  • I was tending towards the first model too, thnx :)