[MUD-Dev] TECH: Concurrent Process Based Mud (Somewhat Long)

Eric Merritt cyberlync at yahoo.com
Tue Apr 23 14:09:39 New Zealand Standard Time 2002

Hello All,

I am currently beginning the design phase of a little mud, mostly
for hobby purpose. I have decided to go in a direction that seems to
be somewhat different then others have gone, at least from the
design and implementation perspective. I have decided to implement
the entire system in Erlang with processes being the main
representation for things that have behavior, i.e. Monsters, NPCs,
PCs etc. It seems to me that this would allow these things that have
behavior to display some pretty interesting actions, releationships
etc. This would also seem to be very conceptually simple, at least
to me.

The other major departure is that I plan to use a two dimensional
coordinate space instead of the more conventional rooms based
space. I realize that this is a topic that has been discussed allot
on this list, so I have and will glean some helpful hints from the
archive. Having a very fast RDBMS should help with some of the big
problems with coord systems. Most of the other problems seem to
resolve to two dimensional area searches that shouldn't be to
difficult to handle.

Now, granted, realistically I could only support about 8,000-10,000
seriously working concurrent processes on any single node, but this
really shouldn't cause a major problem, if I need more processes I
may always add nodes.

I seem to remember Erlang being discussed a few months ago, but I
can't seem to find it in the archives. What I am mainly looking for
here is opinions from those who have done muds before, as to
feasibility, possible problems, etc. (I haven't actually done a mud
before, though I have done quite a bit of Erlang coding). There is
still allot of design issues I have not mension here but these two
will probably have the most significant impact on the game.

-- Background Information -- 
  -Official FAQ Info- 

Erlang is a general-purpose programming language and runtime
environment. Erlang has built-in support for concurrency,
distribution and fault tolerance. Erlang is used in several large
telecommunication systems from Ericsson. The most popular
implementation of Erlang is available as open source from the open
source Erlang site.

OTP is a large collection of libraries for Erlang to do everything
from compiling ASN.1 to providing a WWW server. Most projects using
"Erlang" are actually using "Erlang/OTP", i.e. the language and the
libraries. OTP is also open source.
  -End Official FAQ Info-

  -My Description-

>From a developers point of view, Erlang is extremely easy to code
in. Its support for concurrency has to be seen to be believe. You
may, quite literally, have tens of thousands of individual process
running concurrently at any point and time. These processes also
cost *very* little overhead to kick off and use. One thing to keep
in mind is that in Erlang a process is an abstraction mechanism more
then an optimization mechanism.
Erlang is also distributed in nature, different parts of the
application can run on separate nodes (On the same box, or separate
boxes) transparently to the actual application.This ability requires
very little if any custom code on the developers part.

The OTP portion of Erlang also has quite a few really great
tools. The most important one for this project is Mnesia,the
RAM/Disk based distributed RDBMS. Its lighting fast and easy to
use. This is mainly do to the fact that the query language is Erlang
itself. It will also distribute and replicate itself across any
nodes you make available to it.
   -End My Description-

If you would like more information visit www.erlang.org
-- End Background Information --
MUD-Dev mailing list
MUD-Dev at kanga.nu

More information about the MUD-Dev mailing list