On Wed, 23 Jun 1999, JoeR wrote:
> Thanks for that info! I checked it out and the code is written in Perl
> (could be ported to C I suppose fairly easily if I knew Perl). It's really
> an interesting idea though.. beyond the mobile special functions.. since
> this would be a program outside of Circle that actually logs in and
> interacts with the MUD as an "artificial" player.
TinyMUDs are rife with this sort of thing. It's probably an outcropping
of Eliza and IRC bots, and, in fact, TinyMUDs are probably the only of
the four families of MUDs [1] that have ever used bots to any effect.
Speaking of other sorts of MUDs, I recommend everyone take some time out
and either play a TinyMUD/MUSH/MUX or download one, put it up yourself,
and look at it. Admittedly, you're not going to find many in the vein of
GoP type games [2]. However, that's probably secondary. The idea is to
view the sort of programmability, flexibility, and whatnot employed in
these sort of games. Although TinyMUDs have an ugly built-in language
(it looks like FORTH to me, but I don't know the origins), I vastly prefer
them over LPs. (The design philosophy behind LP is laughable to me: LPC
is too much like C [e.g., too bloated and generic] to be of much use to
nonprogrammers, thus it may as well be written in C/C++ with reloadability
incorperated via dlopen() [3]).
> I was wondering if anyone has implemented 'bots on their system.
> There's got to be at least someone who has put in the famous Eliza
> code...
Eliza's code isn't famous, although the experiment in itself has been
talked about quite a lot. Eliza, BTW, was only impressive for a very
short amount of time (to me, anyway). As soon as I noticed the pattern to
the answers, its simplicity became blatantly obvious. All Eliza does is
observe your questions for certain keywords that indicate the topic of the
question. It's good at this, but it's not doing any real NLP [4] -- once
it figures out what part of the question is topical, Eliza simply responds
with another question incorperating the exact phrase you used. Eliza
always answers in questions to avoid contradicting herself (a, "If you
never make any statements,..." sort of thing).
This approach isn't the best, and would probably be mostly annoying to
your players. Barring investigating and implementing any sort of NLP,
primitive or not, there are two approaches that I would recommend. The
first is simply an Ultima sort of affair. The scenario would be,
A guard is standing here.
> talk guard
You walk up to the guard intent on talking to him. He looks at you
and before you can say anything asks in a clipped tone, "What'dya
want from me?"
1. I just want to talk...
2. What's the best place to go for a good drink in this city?
3. How do I report crimes?
4. What should I watch out for in the city?
5. Nothing, nevermind.
choice> 1
"Oh, do you now? What a sissy! I have a job to do, and it's got
nothing to do with talking. Now go on before I start thinking
you're trying to distract me or some such."
Each response would give a different path through a discussion script.
The other way, and least sophisticated method, is simply a keyword scan.
This is essentially what Toei Rei does, but it takes advantage of Perl's
regular expressions to make the matches much better than just a stupid,
strstr(buf, "heal me"); sort of thing.
-dak
[1] DIKU, LP, Tiny, and Aber. Aber is oft neglected, and it certainly
isn't as popular now as it once was. However, they are making
something of a comeback, and DIKU, if not LP as well, was meant to
be a better Aber. IMHO, it was successful in that regard, which
is why you haven't heard much from the Aber camp. OTOH, I've seen
a surpising number of new MUDs on TMC belonging to the Aber family
(derivatives include iDirt, cDirt, and Dyrt).
[2] GOP meaning Game Oriented Play. Also known as, hack-n-slash, ROLL
(as opposed to "role") playing, etc. Basically, DIKU and, despite
the claims of the LP camp about the flexibility and generality of
their drivers, LPs. (BTW, I've always found that somewhat pitiful.
Those in the LP camp that make a big deal about LP's flexibility
while casting down DIKU as hard-coded seem to be running the same
sort of MUD.)
[3] dlopen() is surprisingly easy to use and powerful, and it's quite
advantageous. I made every command a shared library in and of
itself (in my src/commands directory there is a .c file for every
command in the game which gets compiled to a shared library and
loaded into the game via dlopen()). I currently have the command
table in a file called commands.c that is also dynamically loaded.
However, I will probably redo the interface today, as this makes
reloading one command impossible (for reasons I won't go into). I
will probably have each command export a symbol that contains its
command table information, and that will be automatically inserted
into the command table by way of an insertion sort based upon
precedence.
[4] Natural Language Processing. I don't have any references for you.
USENET is mostly useless for research these days (a far cry from how
things used to be even a few years ago). And I fear that most of
academia concentrate on the mathematics and theory behind the idea
rather than the implementation nuances and the concrete. Both of
these facts are unfortunate, since NLP has great potential in both
description generation (BTW, someone asked me for an example of my
description generators output a long time ago, and I accidentally
deleted the message -- please request again in private), in improved
command parsing, and AI. I'm anxious to see a MUD that employs NLP
and personal knowledge bases (maybe neural networks for learning, as
well?). I doubt I'll be the first, since I'm notoriously bad at
picking up AI concepts (well, maybe not "notoriously", but bad
nonetheless).
[5] Damn that was a lot of footnoti. [6]
[6] I've decided to randomly pluralise things with the "i" ending for no
good reason. Thus, "beds" become "bedi" (pronounced like "Jedi",
which, BTW, becomes "Jedi-i"), "trees" become "tree-i", and "Jesuses"
becomes "Jesi" (because "Jesus-i" has too many syllables for me :).
[7] I have nothing more to say, thank-you-very-much.
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST