[MUD-Dev] Modular Design Issues RFC

J C Lawrence claw at kanga.nu
Thu Feb 15 22:27:45 CET 2001


On Thu, 15 Feb 2001 03:12:42 -0800 
Ryan Rhodes <ryanshaerhodes at hotmail.com> wrote:

> In addition, I've heard talk of distributing the connection
> servers across multiple systems, but my question here is this.
> Doesn't having connections across multiple servers mean in the end
> you are echoing the I/O to the game server anyway, causing the
> same overhead.  Does anyone out there have a system where the
> connection server runs on a different machine that the Game
> Server?

This depends on your distribution model.  A reasonable dfor instance
might be:

  Connection servers receive the user commands and do initial sanity
  checking and parsing of the commands.  Results which can be
  determined immediately are handled locally to the connection
  servers, or at least asynchronously in regard to the back-end
  server(s).  Results which require complicity of the back end
  server are parsed and sent to the back end server in a form that
  translates directly into the operations the back end server then
  needs to perform.  

  In this model the connection servers offload all the IO
  processing, parsing, most of the sanity and error checking,
  logins, authentication, inter-character chat, etc from the back
  end boxes.

> In terms of one looping thread for each player to process their
> input and generate game events, this would be a separate thread
> and a separate question.  For some reason I have in my head that
> the commercial graphic games work this way...

I know that in at least two cases, they don't.

> ... but I don't understand how the data and action could be
> synchronized if every player was runing around and acting on his
> own clock so to speak.  

You need to start out by determining what level of synchronisation
is required, and where those timing constraints need to placed in
your state change/transition model (which has the interesting side
effect of determining which/what actions need to be time sensitive
and which don't).  While you may not have thought of it in this way,
you have a model for the way object translations (state changes)
occur in your server, and they way that such translations need to be
paced against each other so as to provide some subjective sense of
logical action (eg Bubba runs his lungs out at 5 feet an hour and
Bernie manages 500 miles an hour simply due to the fact that Bubba
is on a 56K dialup and Bernis has a T3).  The exact definition of
what that logical model is, is going to define your timing
constraints, and is going to define how much you can play with the
timing aspect of the system (ie allow other undefined activities to
not be time constrained).

> So I'm asking if anyone out there has a system that works like
> this.  In particual if anyone knows if commercial games work like
> this.  My system, again, does not.

I use thread pools along with very minimal (almost non-existant) use
of a pacer clock (I limit the rate and time expense of only very
select activities).  Everything is is placed as a free-for-all as a
crude (and urealised) experiment to see what happens.

--
J C Lawrence                                       claw at kanga.nu
---------(*)                          http://www.kanga.nu/~claw/
--=| A man is as sane as he is dangerous to his environment |=--
_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
https://www.kanga.nu/lists/listinfo/mud-dev



More information about the mud-dev-archive mailing list