[MUD-Dev] MOBPROG and other scripting languages

J C Lawrence claw at kanga.nu
Wed Feb 13 01:46:23 CET 2002


On Tue, 5 Feb 2002 07:58:41 -0600 
Eli Stevens <listsub at wickedgrey.com> wrote:

> From: "J C Lawrence" <claw at kanga.nu>

>> Quite.  Language choice is almost uninteresting in comparison to
>> how you expose the function to the language and to its users.
>> Witness the fact that I'm still getting asked about exactly how
>> spoofs worked -- despite the fact that they are a singularly and
>> obviously Bad Idea from the get go.

> Well, crap.

Ooops.

> What exactly do you mean by "singularly and obviously Bad Idea"?

Essentially spoofs are an abstraction model.  They allow an objects
interfaces to be layered by putting an abstraction over the top of
it which adapts/changes the base objects behaviour in some manner.

  More simply:  They increase the call tree depth.

This is not a problem when its done once.  It is a problem when its
done twenty times or more on a significant percentage of your items.

Spoofs did what I wanted them to.  They allowed free user
programming such that a user could create/write a feature without
requiring write access to any other objects to do so.  The problem
is that spoofs are attractive and easily used for a much wider
variety of problems and the tendency, especially with user
programmers, or merely lazy scripters is to use them everywhere.

  And then not to (sufficiently) aggressively clean them up or norm
  them into the base object code afterward.

Short story:  Massive performance drain.  

If you can establish and maintain the discipline needed to use
spoofs judiciously and to aggressively clean up after them and if
possible norm their code into the base objects, then I don't see an
intrinsic problem with the model.  They're a hack, but a very useful
hack as long as its well contained.

I couldn't contain them in my model.

> It seems that by using a mechanism that accomplished the same
> effect you can make a quite flexible and interesting system.  

Absolutely.

> My current senior capstone project is based around all in-game
> objects being inert except as enabled by Behaviors that get added
> to the object, changing how it reacts to events (taking the place
> of spoofs).  

The problem is not in the concept of self or external object
behavour mutation, but in its implementation via abstraction
models.  Bad.

It may have been better to allow write access into an object's
method call tree, but I didn't want to do that for reasons of bad
transparency and difficulty in logically consistent rollbacks in
case of trouble.  Looking at it now, if I'd allowed write access to
the call tree and put an in-object transactional logging system
which internally implemented rollbacks without adding expense to
method lookups...that may have both worked and not been such a Bad
Idea.  Thinking about it now, that could have worked.

  Well, except that it breaks the validated-object
  semantics I added later (by default user objects and their spawned
  spoofs were unvalidated and could only affect unvalidated objects,
  thus preventing arbitrary users creating ad-hoc
  VorpalSwordsOfDoom to kill Smaug and thus render GoP games void)

> If the whole idea is bunk...

Nahh, just the implementation and the fact that at heart it is a
cheat around writing the object tree the way you wanted it the first
time.  Its really the hackish qualities that made it so bad.

> As it stands, I expect (which has just been thrown into doubt)
> that we will be able to implement all of JCLs scenarios with what
> we have.

The base spoof scenarios are the Elven Forest and the Magic Sack Of
Hiding (or something like that for the last one) IIRC.

> To illustrate, the professor keeps telling us to include a section
> in our paper on the similarities between online FPSs and text
> mudding.  

There's a fair bit of group mechanics which the two share, from the
four suits to clans and behaviour manipulation strategies.

--
J C Lawrence                
---------(*)                Satan, oscillate my metallic sonatas. 
claw at kanga.nu               He lived as a devil, eh?		  
http://www.kanga.nu/~claw/  Evil is a name of a foeman, as I live.
_______________________________________________
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