Multiserver communication problem
by Leo Van Koppen · in Torque Game Engine Advanced · 03/07/2008 (3:11 am) · 3 replies
Hi,
I'm part of a team of students working on a college project with the TGEA (indie licence). We are working on making a basic MMO game. I say basic, because right now we are not anticipating hundreds or even thousands of players on the _same_ server. Our plan is to allow for many different world simulation servers (realms) which all have a more limited population.
For players to enter our realms, they have to go through our login server(s), also built on TGEA. Because we like to avoid a single point of failure, AND allow for greater throughput of login requests, we want to have multiple login servers behind a load balancer. We will also use the login servers as 'master servers', in the sense that they will keep track of which realms are currently online.
Our problem is the following: we need each login server to be able to communicate to all realm servers that connect to it, and we need each realm server to be able to communicate to all login servers that are online. Just having our realm servers sign in to the login server results in each realm server only being able to talk to the most recently connected to login server, instead of choosing which of the login servers to send a command to (serverCommands).
Using clientCommands would solve this, however, that would require the login server to connect to the realm server (instead of the realm server connecting to the login server). If we do this, we get the exact same problem, in that the login server then cannot send commands to any except the most recently connected to realm server.
To solve this, we wanted to have the realm servers connect to the login servers, and the login servers would then connect to the realm servers (so both initiate a connection). We thought this would allow us to use clientCommands on both programs. However, when we set this up, we get a "CHR_PROTOCOL" message when the Login server tries to connect to the realm server (this is after the realm server has connected to the game server). Did we simply code our scripts incorrectly, or can the TGEA not handle 2 programs being both server AND client for eachother?
Essentially, we need to all login servers to be able to talk to any of the realm servers, and all realm servers to be able to talk to any login server. Is this possible in TGEA? If so, can we do it using Torque Script and how, or do we need to change the engine networking code (and how)?
Note: the servers are all on seperate computers (though we'd like the option to run them on the same machine as well).
to illustrate our network:

I'm part of a team of students working on a college project with the TGEA (indie licence). We are working on making a basic MMO game. I say basic, because right now we are not anticipating hundreds or even thousands of players on the _same_ server. Our plan is to allow for many different world simulation servers (realms) which all have a more limited population.
For players to enter our realms, they have to go through our login server(s), also built on TGEA. Because we like to avoid a single point of failure, AND allow for greater throughput of login requests, we want to have multiple login servers behind a load balancer. We will also use the login servers as 'master servers', in the sense that they will keep track of which realms are currently online.
Our problem is the following: we need each login server to be able to communicate to all realm servers that connect to it, and we need each realm server to be able to communicate to all login servers that are online. Just having our realm servers sign in to the login server results in each realm server only being able to talk to the most recently connected to login server, instead of choosing which of the login servers to send a command to (serverCommands).
Using clientCommands would solve this, however, that would require the login server to connect to the realm server (instead of the realm server connecting to the login server). If we do this, we get the exact same problem, in that the login server then cannot send commands to any except the most recently connected to realm server.
To solve this, we wanted to have the realm servers connect to the login servers, and the login servers would then connect to the realm servers (so both initiate a connection). We thought this would allow us to use clientCommands on both programs. However, when we set this up, we get a "CHR_PROTOCOL" message when the Login server tries to connect to the realm server (this is after the realm server has connected to the game server). Did we simply code our scripts incorrectly, or can the TGEA not handle 2 programs being both server AND client for eachother?
Essentially, we need to all login servers to be able to talk to any of the realm servers, and all realm servers to be able to talk to any login server. Is this possible in TGEA? If so, can we do it using Torque Script and how, or do we need to change the engine networking code (and how)?
Note: the servers are all on seperate computers (though we'd like the option to run them on the same machine as well).
to illustrate our network:

About the author
#2
03/17/2008 (7:16 am)
Search for Josh Ritter. He wrote up some stuff about his architecture for Minions of Mirth. While it might not be specific to this question, he's the one pushing the envelope on the MMO front.
#3
www.mmoworkshop.com/trac/mom/phpbb
03/17/2008 (5:45 pm)
The tech they used for MoM is freely available, maybe it helps?www.mmoworkshop.com/trac/mom/phpbb
Torque Owner Leo Van Koppen