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