List software
claw at null.net
claw at null.net
Wed Mar 19 08:40:37 CET 1997
Note: CC'ed to the list for general indigestion.
On 19/03/97 at 12:12 PM, Wout Mertens <Wout.Mertens at rug.ac.be> said:
>On Tue, 18 Mar 1997 claw at null.net wrote:
>> 'Course if I do that, I may also try and revive something like
>> MUD-RolePlay-L or Marcus' Wizard list. I suspect from the groups that
>> there's still a huge unfilled need for concentrated, guaranteed high
>> signal MUD discussion.
>
>Sounds nice... (I won't be on them mind you, I haven't got any time
>left to wizard. I'm happy enough that I still have time to remember
>that I have to write a mud...)
Heck, at the rate things are moving right now, I'm not sure I'll have
any time to even look at moving the list base to Steward. <sigh>
Still, the idea's there.
>Which reminds me: How did you write your mud? from scratch? based on
>some routines you had lying around and them fused together?
Oooh boy. Long story. Short answer: From scratch, with lots of
retries, restarts, and abandoned dead ends. I was contracting pretty
much the whole time, so also borrowed lots of ideas from various
workplaces and folded them in (more or less successfully) as I went
along.
Back in, oh, roughly late '84 timeframe I was playing Shades and SX
MUD (MUD1/MUD2) a lot, and started talking to Pippin Caudry (cf IOWA
and Bartle's MUD survey for placement/reference) about writing a MUD
server for him to run on a BBC micro on direct dial-in lines. About
the time that I actually started work on designing the beast (an
absolute hack I now would shuddered if it had seen the light of day),
Pip instead decided to run with a local PL/1 chap who said he could do
the neatest thing since sliced bread (never happened -- Mirrorworld,
which was already in development, took its place).
However, I was hooked on the idea of a really *NEAT* MUD server.
I had hold of a PC, a PDP-10, and was infatuated with the parallel
processing concepts of the the then new Inmos Transputer and Occam.
I'd also just bought a copy of Zorland C (nee Datalight, later
Zortech, now Symantec) and was teaching myself C. I generously
figured that by the time I had the damn thing designed and partly
written that I'd have a Transputer based machine with at least three
or four T400's to do the rest on, and Occam would probably have
succumbed to C (pray pray). <kof>
<<Still got all those early notes and design drafts too>>
By about 1Q87 what with the rest of real life and trashing everything
I'd done a couple times, I had a DB layer all done along with area
import/export, along with offline room, object, and mobile coding.
<<Can you say three byte longs? I thought you could. I used them
*everywhere* in the DB to conserve space (lotsa arrays). <unghh>>>
Never did touch the actual run-time aspect then -- was still waiting
for decent MP hardware to do the event stuff on (it was event driven
from the start -- I never even thought of a polling loop).
Nearly went to work for CIX with an aim to doing a MUD server on the
side for them. Came back to the States instead.
About the same time I started get on the 'net seriously, and
discovered LP, the Tiny-* clan etc. Trashed everything I'd done
again, dropped the three byte longs, and decided to go with a simpler
DB, and event architecture running atop MINIX. Fell in love with Aber
(as a player) and spent an awful long time playing Northern Lights.
Later decided to move the OS base to XINU.
MOO (the original, pre-Lambda) happened about this time. Thought it
was a wonderful idea, but buggier than crap. Thought the design
concept was neater than sliced bread (everything in the DB, totally
dumb server, objects/methods etc in the DB too, objects animated
themselves). Also thought the everything-in-memory model was stupid,
and didn't like the polling architecture.
Started working a lot with OS/2 back when 2.0 came out. Decided that
this multi-threading thing was a pretty damned neat replacement for
full parallel processing and Transputers, even if not quite as slick.
Started recoding, moving everything to OS/2 and MT. Went to a
disk-based DB model with a central MOO-style DB running everything.
Back in Oh, '94-ish decided to do C++ the thing. Started again.
Cleaned up the event model a LOT.
Everything is homegrown. Major inspirations (mostly in time order):
Shades, MUD2, Transputers, Marcus Ranum, Uber, Unter, LP, Aber, Tiny*,
Northern Lights, MOO, Stephen White, LambdaMOO, a large bunch of IBM's
OS/2 developers, Cool, Interlude (neat!), Dave Engberg, C++, Cold,
Mike Cowlishaw, Legend, ColdX, Greg Hudson, MUQ, BeOS, Inferno, Limbo.
>And in what order did you develop everything? Like for example the
>DB. Pretty convoluted stuff to just spew out and hope it works... No?
I believe in test drivers built into the code so a conditional compile
will make an executable that will excercise the entire class,
encluding (if possible) ALL flow paths. It makes unit testing a LOT
easier. Then run a basic level/key sensitive trace/report class that
lets you watch at any level of detail you want and you've got Gawds
own homegrown sniffing system.
I tend to do large, reasonably self-contained blobs on each attack.
Thus the DB end (which I'm re-doing now for transaction support and
rollbacks) will be done as a self contained unit. Next after that
will probably be the cacheing class which will be a two layer beast (a
general cache and a tailored representation of the DB). Similarly the
network IO, Collector, Dispatchor, etc are all pretty black box, and
developed stand-alone.
What lump gets down in what order? Truth to tell: whatever the heck I
feel like. Usually its whatever seems "neat" and doesn't have too
many dependancies on code I haven't written yet.
--
J C Lawrence Internet: claw at null.net
----------(*) Internet: coder at ibm.net
...Honourary Member of Clan McFud -- Teamer's Avenging Monolith...
More information about the mud-dev-archive
mailing list