[MUD-Dev] TECH: Distributed Muds

Emil Eifrém <emil.eifrem@windh.com> Emil Eifrém <emil.eifrem@windh.com>
Sun Apr 8 01:24:27 New Zealand Standard Time 2001

On Friday, April 06, 2001 11:24 PM, Jim Craig wrote:

> I've been working on a distributed java based mud.  

Why do you wish to distribute your mud? Do you anticipate such a high
(player- or other) load that one machine can't handle it? Do you need
the added reliability of a fail-over solution? Distributed
programming, at least in my experience, adds complexity overhead and
development time, particularly in debugging and testing. It usually
comes with a performance hit on the low-end -- sacrificing low-end
performance for high-end scalability.

So my advice is that if you can get away with not distributing your
server, do. But if you need the scalability or HA, carefully evaluate
existing solutions/frameworks and read up on CPD (Concurrent, Parallel
and Distributed) architecture before you get started.

> There are numerous issues to deal with regarding the persitance of
> player data not to mention a slew of other issues.  I'm sure I'm not
> the first person to run into these...

Rather than persistance of player data, I think the real challenge
should be to design and implement a framework for transparent
distribution of your server. Once you have that in place, you
shouldn't ever have to think about whether your objects are
distributed over several machines -- it will be handled transparently
by your server's backend distribution layer.

Of course, if you choose to use an existing framework you're
sidestepping that design challenge, but on the other hand you will
have to learn a new (potentially quite complex, since it solves a
complex problem) framework and how to program within it.

> Does anyone know of any resources where I might be able to read up
> on technical/architectural aspects, i.e. design patterns for
> distribute worlds?  White papers, Web sites, etc?

It depends on whether you've decided to go with J2EE or roll your own
distributed framework using e.g RMI or CORBA. (I don't know of any
other alternatives for a Java-based mud, but I haven't looked
extensively into third-party frameworks for distribution.)


   Your first source of information should be the documentation of the
   EJB Container of your choice. Then you have a wealth of
   vendor-neutral information on Sun's J2EE web site
   [http://java.sun.com/j2ee] -- pay particular attention to the
   excellent "Blueprints" (for a sound architectural understanding of
   the complex J2EE environment) and the "J2EE tutorial" (for an
   implementation head start). Additionally, be sure to check out The
   Server Side for some J2EE patterns
   [http://www.theserverside.com/patterns] as well as the latest on
   the EJB/JTS/JTA/JMX/JMA/ChooseYourJBuzzwordHere front.

Roll your own:

   I suggest you pick up a good book on the topic. POSA2 is a good
   choice, at least if you're comfortable reading C/C++ examples.
   Check it out at [http://www.cs.wustl.edu/~schmidt/POSA]. Dough
   Schmidt has (IMHO) the best repository for CPD patterns at
   [http://www.cs.wustl.edu/~schmidt/patterns-ace.html]. Also, I'm
   fairly certain that PLoP (Pattern Languages of Program Design)
   volume II covers some distributed patterns but since I don't have
   it here at work I can't verify that.

Good luck!

-EE [emil at eifrem.com]
MUD-Dev mailing list
MUD-Dev at kanga.nu

More information about the MUD-Dev mailing list