Greetings. :)

Furball K.L.Lo-94 at student.lut.ac.uk
Tue Apr 8 11:16:12 New Zealand Standard Time 1997


Hiya!

I suppose I ought to introduce myself properly...  My full name is Kam
Ling Lo but I ask to be called Ling simply to cause chaos and confusion
with administration.  In case you're wondering, I'm male although my name
is usually associated with the opposite sex (I've had a blessed life).
That name you see attached to this mail is there coz I was playing around
with my mailer one day and I found out I could change my name, being the
easily amused sort, it stuck, I'll change it to something normal later.
My alias on muds is Ceilidh if possible, otherwise it's Envy.

My background is LP, I've known about muds since the original Essex
mainframe affair but I never got to poke around one until I got to
University two and a half years ago.  I started doodling on a MUSH for a
few months then moved to MUSE, had a brief affair with a MUX before
settling down to play an LP called Zebedee.  I was an addict for quite a
while coz it was quite fun running around pking players almost twice my
level and there was always crop to harvest (why mud if you don't
interact?).  About a year ago, I had the urge to make my own and ended up
coding an LP mudlib from scratch because the present mudlibs available
weren't desirable in any form (esp Nightmare).  That kept me busy for 4
months before I got bored of it.  Last October, a few friends got a site
for the LP mud and asked for my help.  I resurrected the project and gave
the mudlib an overhaul.  At the moment, the mudlib is missing combat and a
death sequence but I feel it is pretty much finished because if it does
get passed on, I don't want other muds to have the same combat system. 

I've given the admin duties of that mud to someone else now, I never liked
fantasy muds, my heart has always been in space opera so I'm starting
afresh.  I tried using an LP driver for some experimental 3D room concepts
but the language was both too slow and limiting for this sort of thing.
So I thought I'd be brave and try coding a mud from scratch in C++.
Having seen another LP mud try making their rooms psuedo 3D, I'm pretty
glad I didn't stick with it because it sure looks tacky.  If the list
desires it, I am more than happy to give the lib to anyone wanting a peek.

So far so good, I've got a multithreaded server able to handle several
connections at once, that's after one month of playing around.  Hopefully,
after I sort this bit out, it's all downhill (well, downhill meaning I can
work on something more relevant than those damn file descriptors!).

If you have any queries concerning LP muds, just ask, if it doesn't
involve the innards of the driver, I am more than likely to have an answer
for it, I know far too much about LP muds for my own sanity (did you know 
a new LP driver is being worked on?).


On Sun, 6 Apr 1997, Chris Gray wrote:

> I believe that as much as possible of Chris L's MUD code will execute
> interpreted. I don't know the details. My system is similar, but I might
> have more native-code help underneath. Think in terms of LPMud efuncs
> and simul-efuncs (did I get those right?) At some point, everything really

Yes, you did, efuns and simul_efuns.

> gets done by native code (efuncs), but is driven at the upper level by
> interpreted funcs. The question then becomes one of what level the
> changeover happens. i.e. what level of support functions are done at the
> native level? For example, I have a fairly complex 'Parse' native code
> function that handles input commands and calls out to interpreted code
> for specific commands. A difference is that I call it from interpreted
> code that is triggered for input lines, whereas I believe LP calls it
> automatically, with no possibility of intervention at that level.

Could you expand on this a little please?  I don't want to turn this into
a server war but here's what I think you mean (I'll do it in LPC):


void setup_player_object() {
 add_action("command_hook", "", 1);	// this line catches *everything*
}					// a player types and puts it to
					// command_hook, the 1 means match
					// anything beginning with ""
					// which is everything.

status command_hook(string str) {	// status = bool, str = argument
  string verb, cmd_path;

  verb = query_verb();			// verb = command typed in
  if (cmd_path = CMD_D->query_command(verb)) {	// ask command daemon
						// the bin path for this
						// verb

    return (status)cmd_path->main(str);		// execute bin
  }
  // Other command daemons here
  return 0;					// fail
}
// The command daemon is a seperate object which stores all the commands
// and their appropriate location in a hash table (well, mapping but that
// uses a hash search thing.)


// This function is called after the player has hit return but before
// any add_action settings catch it so commands may be modified in 
// any way.  I use this for implementing history, aliases, command
// building and variable substitution.
mixed modify_command(string str) {
  // return 0 for fail, 1 for no change
  // or a string for the new altered command line
}


About the stuff I deleted:  I meant I deleted a few lines of text but I
couldn't bring them back using undelete because I'm using pico, not vim. 
Thanx for your concern.  Oh, and I'm telneting into a Sun station and
running pine (everything I do is via telnet :). 

AREXX...  I love that thing!  It makes soooo much sense and it means I
don't have to retain lots of programs with almost identical features. 
Having said that, I haven't written a single line in it!  Somewhere back
in this mailing list someone mentioned Pike, I wouldn't mind knowing a
little about this language to add to my general knowledge.  I heard it was
also known as [micro]LPC which is also called LPC4 and it is actually a
scripting language because there's a webpage which uses Pike to generate
it's pages. 

Maybe I'm on the wrong track.

  |				"With my naked eyes I saw the falling"
_O_O_  Ling - Freshwater fish	 rain coming down on."




More information about the MUD-Dev mailing list