1998Q4/
<!-- MHonArc v2.4.4 -->
<!--X-Subject: [MUD&#45;Dev] DevMUD module configuration -->
<!--X-From-R13: Xba Zrbaneq <wyrbaneqNqvipbz.fyvzl.pbz> -->
<!--X-Date: Mon, 26 Oct 1998 17:07:41 &#45;0800 -->
<!--X-Message-Id: 19981026170208.B23823#divcom,slimy.com -->
<!--X-Content-Type: text/plain -->
<!--X-Head-End-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MUD-Dev message, [MUD-Dev] DevMUD module configuration</title>
<!-- meta name="robots" content="noindex,nofollow" -->
<link rev="made" href="mailto:jleonard#divcom,slimy.com">
</head>
<body background="/backgrounds/paperback.gif" bgcolor="#ffffff"
      text="#000000" link="#0000FF" alink="#FF0000" vlink="#006000">

  <font size="+4" color="#804040">
    <strong><em>MUD-Dev<br>mailing list archive</em></strong>
  </font>
      
<br>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
<br clear=all><hr>
<!--X-Body-Begin-->
<!--X-User-Header-->
<!--X-User-Header-End-->
<!--X-TopPNI-->

Date:&nbsp;
[&nbsp;<a href="msg00526.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00528.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Thread:&nbsp;
[&nbsp;<a href="msg00532.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00531.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Index:&nbsp;
[&nbsp;<A HREF="author.html#00527">Author</A>
&nbsp;|&nbsp;<A HREF="#00527">Date</A>
&nbsp;|&nbsp;<A HREF="thread.html#00527">Thread</A>
&nbsp;]

<!--X-TopPNI-End-->
<!--X-MsgBody-->
<!--X-Subject-Header-Begin-->
<H1>[MUD-Dev] DevMUD module configuration</H1>
<HR>
<!--X-Subject-Header-End-->
<!--X-Head-of-Message-->
<UL>
<LI><em>To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI>
<LI><em>Subject</em>: [MUD-Dev] DevMUD module configuration</LI>
<LI><em>From</em>: Jon Leonard &lt;<A HREF="mailto:jleonard#divcom,slimy.com">jleonard#divcom,slimy.com</A>&gt;</LI>
<LI><em>Date</em>: Mon, 26 Oct 1998 17:02:08 -0800</LI>
<LI><em>Cc</em>: Jon Leonard &lt;<A HREF="mailto:jleonard#divcom,slimy.com">jleonard#divcom,slimy.com</A>&gt;</LI>
<LI><em>Reply-To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI>
</UL>
<!--X-Head-of-Message-End-->
<!--X-Head-Body-Sep-Begin-->
<HR>
<!--X-Head-Body-Sep-End-->
<!--X-Body-of-Message-->
<PRE>
As I was putting together a prototype this weekend, I realized that we
don't yet have a sufficiently flexible scheme for configuring modules
when we assemble them into a server.

The most sophisticated system I've seen described involves having each
module have a list of dependencies and other requirements, along with
a list of features that it provides.  The loader would then be
responsible for picking out modules to load when some feature is required,
pointing out conflicts, and so on.

The problem with this is that there are quite a few collections of modules
(that I'd like to see, anyway) which are ambiguous or otherwise fail to
correctly initialize in such a scheme.


For example, suppose I have three modules:

1) Socket, which provides network communication privliges

2) Telnet, which sits on top of Socket to provide Telnet protocol
    features and RFC compliance.  It has the same interface (or
    a superset), for mix-and-match capability.

3) World, which provides all of the non-transport functionality of a MUD.

When loading World, how does the driver know whether to load telnet or not?
Similarly, if Socket, Telnet and World are loaded, how does the loader
know to connect World to Telnet instead of to Socket?


A more complicated example, involving multiple games in the same server.
The modules are:

1) Socket, as above
2) Telnet, as above
3) ParserA, a command parser
4) ParserB, an alternate command parser
5) World1, a gameworld
6) World2, an alternate gameworld 

I want players to be able to use either gameworld, and for one run I
want ParserA to go with World1, and ParserB with World2.  The problem
is, the next time I set up the server, I may want ParserA/World2 and
ParserB/World1.  There's no way that the loader can figure this out.


As a result, I have a new proposal.

In addition to the special Bootstrap module (the only module known to always
be part of the server), there is a special Config module.  The Config module
is like any other module, except:

1) There can only be one Config module in a server.

2) The Bootstrap module automatically loads Config on startup, and passes
   control to it.

3) The config module is responsible for requesting modules to be loaded and
   telling loaded modules which other modules to use in which ways.  It may
   delegate this responsibility. 

I expect most Config modules will immediately load a game language module
and delegate responsibility to a program in that language.  This allows
great flexibility including command-driven reconfiguration during run time,
while allowing minimal Config modules for simpler MUDs.


More details about the prototype mentioned above:

In order to get a different perspective on how modules might fit together
to make a MUD, I threw together a prototype.  (There's nothing quite like
a segmentation fault to tell you that there's something wrong with a
design.)

It's missing some important abstractions, and I don't expect any of the
code to survive into a distributable DevMUD.  Much like my IPC example,
it only has two commands, "say" and "quit".  It does, however, use
dynamic linking and separately compiled modules to build a runnable mud.

It's running at mud.slimy.com on port 2121, and the source can be found
from <A  HREF="http://mud.slimy.com/devmud/">http://mud.slimy.com/devmud/</A> by following the proto_1 link.
(The name mud.slimy.com isn't very special: Mud.slimy.com = frost.slimy.com
= devmud.slimy.com, etc.)

Jon Leonard


</PRE>

<!--X-Body-of-Message-End-->
<!--X-MsgBody-End-->
<!--X-Follow-Ups-->
<HR>
<ul compact><li><strong>Follow-Ups</strong>:
<ul>
<li><strong><A NAME="00612" HREF="msg00612.html">[MUD-Dev] Re: DevMUD module configuration</A></strong>
<ul compact><li><em>From:</em> Vadim Tkachenko &lt;vt#freehold,crocodile.org&gt;</li></ul>
<li><strong><A NAME="00541" HREF="msg00541.html">[MUD-Dev] Re: DevMUD module configuration</A></strong>
<ul compact><li><em>From:</em> Niklas Elmqvist &lt;d97elm#dtek,chalmers.se&gt;</li></ul>
<li><strong><A NAME="00531" HREF="msg00531.html">[MUD-Dev] Re: DevMUD module configuration</A></strong>
<ul compact><li><em>From:</em> James Wilson &lt;jwilson#rochester,rr.com&gt;</li></ul>
</UL></LI></UL>
<!--X-Follow-Ups-End-->
<!--X-References-->
<!--X-References-End-->
<!--X-BotPNI-->
<UL>
<LI>Prev by Date:
<STRONG><A HREF="msg00526.html">[MUD-Dev] Re: openmud or pdmud or devmud</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg00528.html">[MUD-Dev] Re: openmud or pdmud or devmud</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg00532.html">[MUD-Dev] Re: Inheritance model (was Re: PDMud thread summary)</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg00531.html">[MUD-Dev] Re: DevMUD module configuration</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="index.html#00527"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="thread.html#00527"><STRONG>Thread</STRONG></A></LI>
</UL>
</LI>
</UL>

<!--X-BotPNI-End-->
<!--X-User-Footer-->
<!--X-User-Footer-End-->
<ul><li>Thread context:
<BLOCKQUOTE><UL>
<LI><STRONG>[MUD-Dev] Re: DevMUD module configuration</STRONG>, <EM>(continued)</EM>
<ul compact>
<LI><strong><A NAME="00538" HREF="msg00538.html">[MUD-Dev] Re: DevMUD module configuration</A></strong>, 
J C Lawrence <a href="mailto:claw#kanga,nu">claw#kanga,nu</a>, Tue 27 Oct 1998, 05:31 GMT
</LI>
<LI><strong><A NAME="00542" HREF="msg00542.html">[MUD-Dev] Re: DevMUD module configuration</A></strong>, 
Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Tue 27 Oct 1998, 06:47 GMT
</LI>
</ul>
</LI>
<LI><strong><A NAME="00529" HREF="msg00529.html">[MUD-Dev] Re: Inheritance model (was Re: PDMud thread summary)</A></strong>, 
Bruce Mitchener, Jr. <a href="mailto:bruce#puremagic,com">bruce#puremagic,com</a>, Tue 27 Oct 1998, 01:56 GMT
<UL>
<li>&lt;Possible follow-up(s)&gt;<br>
<LI><strong><A NAME="00532" HREF="msg00532.html">[MUD-Dev] Re: Inheritance model (was Re: PDMud thread summary)</A></strong>, 
Cynbe ru Taren <a href="mailto:cynbe#muq,org">cynbe#muq,org</a>, Tue 27 Oct 1998, 03:08 GMT
</LI>
</UL>
</LI>
<LI><strong><A NAME="00527" HREF="msg00527.html">[MUD-Dev] DevMUD module configuration</A></strong>, 
Jon Leonard <a href="mailto:jleonard#divcom,slimy.com">jleonard#divcom,slimy.com</a>, Tue 27 Oct 1998, 01:07 GMT
<UL>
<LI><strong><A NAME="00531" HREF="msg00531.html">[MUD-Dev] Re: DevMUD module configuration</A></strong>, 
James Wilson <a href="mailto:jwilson#rochester,rr.com">jwilson#rochester,rr.com</a>, Tue 27 Oct 1998, 02:32 GMT
</LI>
<LI><strong><A NAME="00541" HREF="msg00541.html">[MUD-Dev] Re: DevMUD module configuration</A></strong>, 
Niklas Elmqvist <a href="mailto:d97elm#dtek,chalmers.se">d97elm#dtek,chalmers.se</a>, Tue 27 Oct 1998, 06:44 GMT
</LI>
<LI><strong><A NAME="00612" HREF="msg00612.html">[MUD-Dev] Re: DevMUD module configuration</A></strong>, 
Vadim Tkachenko <a href="mailto:vt#freehold,crocodile.org">vt#freehold,crocodile.org</a>, Sat 31 Oct 1998, 03:09 GMT
</LI>
</UL>
</LI>
<LI><strong><A NAME="00523" HREF="msg00523.html">[MUD-Dev] Re: Missing the point:  OpenMUD, Gamora, Casbah, etc.</A></strong>, 
Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Mon 26 Oct 1998, 21:27 GMT
</LI>
</UL></BLOCKQUOTE>

</ul>
<hr>
<center>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
</center>
<hr>
</body>
</html>