[DGD] Kernel library

Felix A. Croes felix at dworkin.nl
Mon Sep 14 15:59:25 CEST 1998


Frank Schmidt <franks at colargol.tihlde.hist.no> wrote:

> On Mon, 14 Sep 1998, Par Winzell wrote:
>[...]
> > Of course it's perfectly OK if you do not like the DGD-supplied kernel
> > lib, but how exactly do you envision a dependable abstraction layer to
> > function if it does not require mudlib code to be built on top of it? If
> > it does not use auto/kernel object functionality? The entire point of
> > such a thing is to sit solidly between your torches and AI-monsters on
> > one hand and DGD on the other.
>
> The main idea is that it requires mudlib code ontop of it, I haven't said
> anything else. But the kernel lib is far from what I see 'fit' for MUD
> programmers world wide, when lacking lots of "general" functionality to
> handle arrays, strings, mappings, math, sorting algorithms, etc, etc,
> which in my opinion belongs in the auto object. (Previous mailinglists
> explains why) And that's just one of the issues, each time you need
> something special (which you know DGD can offer), a General kernel lib
> will probably not support it.

Your view of what a kernel library should be seems to agree perfectly
with the function of the objects in the /dgd directory tree in the
2.4.5 mudlib -- which is certainly not that of DGD's kernel library.
Beyond that, I think you also fail to understand what the kernel
library can do, as evinced by your earlier comment that it "occupies"
the auto object and driver object.  If there is one thing that the
kernel library is good at, it is modifying or completely overriding
the behaviour of those two objects.

I think that some of this blindness is caused by the extraordinary
success of LPmud 2.4.5.  To get beyond that, let's take a look at
a completely different mud, Ultima Online, comparing features with
those of traditional LPmuds:

 - UO is persistent.

   Persistence is DGD's most important single feature (I like the
   term "continuous mud" better, but "persistent mud" is the
   standard term these days).  A persistent mud needs a design
   radically different from that of a traditional LPmud:

    - There has to be a way to change the behaviour of existing
      objects.  The kernel library is designed in such a way that
      upgrading objects -- that is, recompiling them without first
      destructing them -- is possible for all objects, given the
      limitations imposed by LPC inheritance.
    - If you have guest-programmer wizards like traditional
      LPmuds, you need a way to limit the resources available to
      individual wizards, since rebooting the mud to get rid of
      undesirable objects is not an option.  The kernel library
      has a generic resource management system which manages
      such things as number of objects or number of callouts by
      default, and to which new mudlib-specific resources can be
      added at will.
    - Such functionality as string formatting should not be in the
      auto object.  Having to recompile the 3D space code because
      a change was made in string formatting is ridiculous.

 - UO has a custom client.

   The kernel library cannot make any assumptions about what sort
   of client is being used.  It cannot even assume that everyone
   uses the same client.  It merely attempts to be as little in
   the way as possible -- not only in the matter of communications.

 - UO has no traditional rooms, add_actions, etc.

   All such things have no place in the kernel library's auto object.
   Similarly, nothing that is not needed in <all> muds within its
   target range has a place in the kernel library.

 - UO supports up to 2500 players per server.

   The kernel library is prepared for DGD's multithreading future.
   Ideally, it should be possible to build a mud on top of the
   kernel library and upgrade the kernel library every time that DGD
   is changed, without letting this have an impact on your mud.

The kernel library would be a fairly good fit for implementing UO on
top of DGD.  It would not have to be changed in any way (I have
verified that this is the case).  It would have some superfluous
functionality, such as the wizard support.  On the other hand, adding
guest programmers to UO is an interesting possibility.

Of course, I do not know to what degree UO matches your chosen mud
type.  But the fact that I can use the kernel library to implement
UO indicates, to me, that it is good at what it does.

Dworkin



More information about the DGD mailing list