====================================================================== The Weyrmount - FAQ Version 0.7 Underworld Dragon November 4, 1995 ====================================================================== **Section 0 - INTRODUCTION *0.1 - TABLE OF CONTENTS 0 Introduction 0.1 Table of Contents 0.2 How can I submit suggestions/changes for the FAQ? 0.3 How can I get more copies of this FAQ? 0.4 Revision History 1 MOO questions 1.1 What is a MUD/MOO/MUSH/MUCK? 1.2 What's the difference between MUDs and MOOs? 1.3 Where can I learn more about MOOs? 1.4 Where can I learn about other MOOs? 1.5 What programs can I use to access a MOO? 1.6 What is a 'progbit'? What is 'quota'? 1.7 What does mean? 2 The Weyrmount 2.1 What is the Weyrmount? 2.1.1 What's the difference between Chiba, Sprawl, Sensemedia, Weyrmount? 2.2 What kinds of stuff are available at the Weyrmount? 2.3 Who can participate in the Weyrmount? 2.4 How do I log in to the Weyrmount? 2.4.1 Does the Weyrmount require Telnet, or can I access via the Web? 2.4.2 Hey! What's up? My backspace key doesn't work! 2.5 How can I get a permanent character on the Weyrmount? 2.6 Who is "in charge" of the Weyrmount? 2.7 How do I get more quota? 3 Getting started 3.1 This is confusing! How can I get help? 3.2 Are there people I can talk to for help? 3.3 What are some of the basic commands, to get me started? 3.4 Is there a place for new folks to gather? 3.5 How do I use those nifty features? 3.6 How can I use the multi-channel thingy? 3.7 How do I send mail on the MOO? 3.8 Stop the MOO, I want to get off! 3.9 How can I use the 'virtual MOO' features of the Weyrmount? 3.10 How can I create my own rooms and stuff? 3.10.1 Where can I find out about the kinds of objects that exist? 3.11 What is the MOO editor? How do I use the editor? 3.12 How can I create NPCs? 4 Programming 4.1 How is the MOO organized? 4.2 What is an object, anyway? 4.2.1 What is a property? 4.2.2 What is a verb? 4.2.3 What is "object oriented" programming? 4.3 How do I start programming? 4.4 Argh! How do I program verbs? 4.5 What does the MOO language look like? 4.6 I just want to see some code. Where are some examples? 4.7 Where are some tutorials I can download or read? 4.8 It's hopeless! I just can't do this! 5 Ultima Dragons 5.1 Who are the Ultima Dragons? 5.2 Where can I learn more about the Dragons? 5.3 How do I become a Dragon, so I can get on the Weyrmount? 9 Credits *0.2 - How can I submit suggestions/changes for the FAQ? Try emailing them to the author, Underworld Dragon (rgregg@cs.cmu.edu). Or try posting them to the Ultima Dragons' newsgroup, alt.games.ultima.dragons. Or best of all, drop by The Weyrmount and share them in person. :) *0.3 - How can I get more copies of this FAQ? The Weyrmount FAQ is available on the World Wide Web at: http://www.cs.cmu.edu/afs/cs/user/rgregg/www/weyrmount.faq If you are on the Weyrmount, you can access the FAQ with this command: read $faq The FAQ will also be posted from time to time on alt.games.ultima.dragons. *0.4 - Revision History v0.7 11/04/95 Added MUSH definition. Changed 1.7, 2.4.1, 2.6. v0.6 09/13/95 Added 3.12. Changed 3.7 to explain @mail on. v0.5 09/03/95 Corrected table of contents errors, added 1.7. v0.4 09/02/95 Faq was corified; added more info on features. Added 3.10.1, 3.11. Changed 3.3. v0.3 08/23/95 Fixed some typos, filled in some holes, added 2.1.1. v0.2 08/22/95 Made revisions to Weyrmount addresses and @rgo/@quit commands, after talking with WizTraveller. v0.1 08/21/95 First version. ====================================================================== **Section 1 - MOO QUESTIONS *1.1 - What is a MUD/MOO/MUSH/MUCK? Those are funny acronyms for different types of what has traditionally been known as a MUD: a Multi-User Domain (or Dungeon, depending on who you ask). It's an environment where many users can gather on the internet and chat, exchange ideas, even program a bit, and generally have fun interacting. MOO stands for MUD, Object-Oriented, and is very much like the general MUD, except that it has a different (some say more efficient :) programming system. Generally MUDs have tended to be more combat-oriented, like RPGs, while MOOs were started by the Xerox Palo-Alto Research Center, and tend to be more social environments. But there's no hard and fast rule. MUSH apparently stands for Multi-User Shared Hallucination. MUCK is apparently just a gooey name that somebody made up for another variation on MUDs. I've never participated much in either, but they tend to be more theme-oriented or open-ended versions of MUDs and MOOs. *1.2 - What's the difference between MUDs and MOOs? There tend to be two differences, one technical, and one social. The technical difference is the object programming system of MOOs, which was developed at Xerox PARC to help simplify the development of multi-user interaction environments. The social difference, as stated above, is that MOOs tend to be less combat or RPG oriented, and aimed more at socialization. But there are certainly social MUDs, and MOOs where there are combat systems, so it's a pretty fine line. *1.3 - Where can I learn more about MOOs? Well, the first MOO was Xerox's own LambdaMOO. They maintain a list of papers about MOOs and multi-user virtual environments in general on their ftp site: ftp://ftp.parc.xerox.com/pub/MOO The "Lost MOO Library" has LOTS of useful information about MOOs: http://lucien.sims.berkeley.edu/moo.html That site has the "official" MOO FAQ, several good tutorials, a quick reference guide, and yduJ's wonderful "Lore Pamphlet", explaining such esoteric MOO items as permissions, security, the scheduler, and what causes lag. There's also a page at Yahoo listing TONS of resources for MOOs, MUDs, etc: http://www.yahoo.com/Entertainment/Games/MUDs__MUSHes__MUSEs__MOOs__etc_/ *1.4 - Where can I learn about other MOOs? Try the MOO-Cows List of MOOs, which is maintained at: http://www.ccs.new.edu/home/fox/moo/moo-list.html Particular MOOs of interest that I know of: LambdaMOO lambda.parc.xerox.com 8888 BayMOO baymoo.sfsu.edu 8888 RiverMOO river.honors.indiana.edu 8888 MOOtiny spsyc.nott.ac.uk 8888 *1.5 - What programs can I use to access a MOO? Some people recommend a program called TinyFugue. There are many versions of this available on the Internet. Look at: ftp://ftp.tcp.com/pub/mud/Clients/tinyfugue/ Another commonly recommended program is MudWin, for use with both Windows and Win95, if you are using WinSock. You can find it at: ftp://ftp.microserve.com/pub/msdos/windows/winsock/mudwin.zip Others use standard telnet clients. I've used several different flavors of telnet, and all seem to work at least reasonably well. *1.6 - What is a 'progbit'? What is 'quota'? On MOOs, not everyone can program their own stuff. Almost everyone can create new objects or rooms, but only certain people can create new verbs and new KINDS of objects. Those people are called programmers, and when someone becomes a programmer, their character is 'marked' as special by the wizards by setting a certain flag (bit) in their profile. Hence the name 'progbit' - a person with a progbit is a person who can program. Almost all permanent characters on the Weyrmount have progbits by default, so you probably won't have to worry about this unless you decide to get a character at some other MOO. Although characters can create objects, they are limited in how MUCH they can create. After all, if everyone had infinite ability to create, the computer that held the MOO would soon run out of space. The amount you can create is referred to as your 'quota'. Most new characters at the Weyrmount start out with 50K of quota - about 50000 bytes of storage. Each byte of description, rooms, details, objects, verb code, etc. adds to the amount of quota you've used. You can 'recycle' or destroy your objects and create new ones, but you can never have more object stuff at one time than your quota dictates. *1.7 - What does mean? Here's a brief glossary of some of the more arcane terms you'll hear used about the MOO. class - Often used in object-oriented lingo, in MOO terms a class is just an object. Any object can automatically have children unless it's expressly prohibited, and so is a class. corify - Many of the basic objects on a MOO come from the original set of objects on LambdaMOO - the 'core' objects. These are denoted by putting a '$' in front of the object name (like $room, $player, etc). Other objects can be made part of the core too, although only by wizards. Hence: 'corifying' an object is making it part of the core, so it can be referred to by its core name. On the Weyrmount, this FAQ is corified ('read $faq'). feature - a special object that adds extra commands for a player to use. Often these are fun (or spammy) verbs with extended social stuff. More often they are just annoying. But many features have useful commands, like mapping the MOO, listing verbs, etc. generic - When someone creates an object that they want others to make copies of (like a piece of furniture which everyone can create a copy of, and customize), it's often referred to as a generic object. The MOO Museum (#90) is full of generics. Generics themselves are usually not used; they just exist for others to make children of. instance - any particular child of a generic. morph - to change a player's description of themselves. The Weyrmount has built-in verbs for morphing between Dragon and human form. newt - Something a wizard does to annoying players which prevents them from being able to log in for a specified amount of time. spam - Useless or otherwise annoying and space-consuming text or chatter. toad - When someone breaks basic rules of the MOO, or so angers a wizard as to get kicked permanently off the MOO, the wizard turns their character into a 'toad' - basically, deletes them from the system. wizard - the all-powerful in-charge guys on the MOO. Don't make 'em mad. ====================================================================== ** Section 2 - THE WEYRMOUNT *2.1 - What is the Weyrmount? "ChibaMOO - The Weyrmount" is a MOO that originated in July 1995 for use by the "Ultima Dragons" Internet club, also known as "the Dragons". The Weyrmount was a "descendant" MOO from the main Sensemedia MOO, known as The Sprawl. Originally, the Weyrmount was founded by Monomolecular Dragon on The Sprawl in April 1995, as a place where the Dragons could socialize. It quickly grew out of proportion for Sprawl, and as Sensemedia was having resource problems there, the Dragons were asked if they would like their own private MOO. The populace was agreeable, and the Weyrmount was born. The name Weyrmount, by the way, comes from the story "Core of Darkness" by Monomolecular Dragon, which tells the story of a group of Britannian Dragons who live in an extinct volcano, where they have built their weyrs (nests). Hence.. "Weyrmount". If you're interested in reading the story, it can be read online with the command 'read #3086', or on the 'net at: ftp://ftp.udic.org/pub/ud/udic/coredark.txt *2.1.1 - What's the difference between Chiba, Sprawl, Sensemedia, Weyrmount? Okay, I'll admit, it's pretty confusing at first. :) But it's actually quite simple. Sensemedia is a company that offers commercial services on the World Wide Web. One of their experiments was to set up a series of MOOs that could be connected to the Web. They named their project ChibaMOO. The first (and apparently predominant) portion of ChibaMOO is named "the Sprawl", and it resembles the rambling town of Chiba from William Gibson's "Neuromancer". There were other parts to ChibaMOO, but the Dragons got involved on the Sprawl. After a while, Sprawl got too big, so Sensemedia created a new part of ChibaMOO, called the Weyrmount, and that's where the Dragons reside. ChibaMOO isn't one MOO, it's a set of MOOs networked together and connected to the Web, and we're on one of those. *2.2 - What kinds of stuff are available at the Weyrmount? The Weyrmount is like a miniature version of Britannia, the land from the Ultima computer games. Different Dragons have built several cities and castles from the game, including Britain (and Castle British) all the way to a quite-detailed Buccaneer's Den. One feature of the Weyrmount that is NOT in any Ultima, quite naturally, is the Weyrmount itself. Other familiar landmarks are the Dragon Valley, the Drag'on Inn (proprieted by Tempest), and the various blue, red and black Moongates that dot the landscape. There is a lot to explore, so feel free to wander about. Some other special features include an RPG system which is under development by Invictus (at least one quest has already been run), a money system for use with the RPG and various merchants around the 'Mount, under development by BlueChip, and a special class of NPCs (non-player characters) called Bots. Bots are like puppets, if you're familiar with those, in that they can walk around and say things. But a player can actually program his Bot using a simple scripting language to perform very complex sets of tasks, respond to spoken commands, have flexible schedules of activities, and have a real "personality" about it. Bots are almost like players in the level of complexity they can respond to. They help bring the Weyrmount to life, so to speak. Why am I going on about Bots? Why, because I wrote them, of course. :) *2.3 - Who can participate in the Weyrmount? The powers-that-be at Sensemedia have decreed that the Weyrmount is to be used by the Ultima Dragons. Folks that aren't Dragons would need to get characters on the main Sprawl, or on any other Sensemedia MOO, and visit the Dragons using the 'virtual room' technology the wizards of Chiba have built. That way, almost anyone can 'participate' (ie. chat, visit, explore), although not everyone can actually build there. Only those with actual characters on the Weyrmount can build there. *2.4 - How do I log in to the Weyrmount? Using any telnet-capable client, telnet to any of the following. Note that only the first one is 'official', the others are subject to change: dragon.lei.net 9020 ginger.lei.net 9020 chiba.picosof.com 9020 sensemedia.net 9020 sprawl.sensemedia.net 9020 Note that since Sensemedia expects the Weyrmount to only be populated by Ultima Dragons (cf 2.3), this address shouldn't be widely publicized, as it will only cause frustration and torque off our wizards. If you're actually interested in going to the Sprawl instead, try the same addresses, but substituting the port number '7777' for the '9020' above. Once you're connected, a screen will appear asking you to log on. The first time you log in, you'll be a guest, not a permanent character. To connect, type: connect guest After you gain a permanent character at the 'Mount, you can log on by typing: connect *2.4.1 - Does the Weyrmount require telnet, or can I access via the Web? You can access certain aspects of the Weyrmount via the World Wide Web, using a Web browser such as Netscape. You can look at objects, characters and locations, but you can't interact directly. There IS a method for logging on and authenticating via the Web, but I'm not terribly familiar with it, and it won't necessarily work with the 'standard' NetScape/Mosaic browsers. You can also view much of the Weyrmount from the Web, without interacting. The home page for the Weyrmount is: http://sensemedia.net/weyrmount/ *2.4.2 - Hey! What's up? My backspace key doesn't work! Yes, it's true. Due to some obscure incompatibility between MOO programs and standard telnet terminal emulation (or some such technobabble), your backspace key is non-functional on the MOO. If you type the wrong character, it's just wrong. It's terribly annoying, and hard to get around. Some folks have found that if they use special clients like TinyMUD, they can get around this. Personally, I've found that if I telnet out from my UNIX workstation, backspace works fine. I'm not sure if this is a property of the telnet program or of the terminal emulation my SPARCstation supports, but other folks with UNIX workstations seem to get by equally fine. If neither of these is an option for you, you'll just have to struggle through. It's annoying, but not debilitating. *2.5 - How can I get a permanent character on the Weyrmount? Once you're logged on as a guest, type this command: @request for Of course, I don't mean LITERALLY that command, but that you should put the name of the character you want between the '@request' and the 'for', and your email address after the 'for'. If you don't have access to email, you're out of luck - the MOO sends out an email a few minutes after you do this command, containing the character name and the password for your permanent character. It should arrive within a few moments. If you have no email access, you can't get the message, so you'd never know the password for your character. There's no exceptions to this rule - it's a Sensemedia security thing. Once you get the password, you can log back in using your new character and password, and voila! You're on the Weyrmount. Welcome aboard! Note that if you already have a character on the Sprawl, or Snow, or some other Sensemedia MOO, and try to request a character at the Weyrmount, the wizzen will get very angry. You wouldn't like them when they're angry. So don't do it. Thank you. *2.6 - Who is "in charge" of the Weyrmount? Like with most MOOs and MUDs, there are certain individuals that are all-powerful, that do maintenance and generally 'run' the environment. They are called wizards, or wizzen, or wizzes, etc. The resident wizard on the Weyrmount is WizTraveller. He's generally around at least a little every day, and is a pretty cool guy. Policies at the 'Mount tend to be laid back, since we're a private MOO. Generally, if everything is cool, he tends to let us have the run of the place. There are other wizards, such as SunWiz, who handles most of the inter-MOO functions, and Irradiate. If you have problems, just post a note to *Wiz, and it'll generally get handled in a day or so. *2.7 - How do I get more quota? For the most part, you won't - that's why there are quota limits, to limit the size of the MOO. The Weyrmount has an absolute database size cap that can never be exceeded, so we have to be careful how player quota is allocated. Most characters currently start with 50K of quota. That's a pretty standard limit for most MOOs. Some of the original Dragons that migrated from Sprawl have 100K, and a few have up to 150K, if they were working on particularly large projects. If you have an item/room/whatever that is 'cool' or of public interest, talk to the wizards, and they may decide to take ownership of your object once it's done - effectively returning that quota to you to use again. But if you're just building a lot of rooms without much description or interesting detail, the odds are you'll just use up your quota and be stuck. Remember to build interesting, useful things - use your quota wisely. ====================================================================== **Section 3 - GETTING STARTED *3.1 - This is confusing! How can I get help? So you've just logged on with your permanent character for the first time. Or perhaps you're just a confused guest, trying to figure out how to talk and stuff. Yes, it's confusing - but you're not the first one to be confused, and there IS help. When you log on, you'll be in the "Dragon Valley", the starting point for all new characters. Off to the north (just read the description, you'll see it :) is a dark cavern. Don't be afraid, type 'north' to go north into the cave. These are the "Caves of Learning" (trite, but accurate). They are inhabited by some friendly spirits who will give you a guided tour of some of the basic commands of the MOO, teaching you how to talk, walk about, and do some of those fun things you want to do. There is also a help system BUILT INTO the MOO itself. You can access it by saying.. okay, prepare yourself, this is pretty confusing.. 'help'. In fact, use the commands 'help' and 'help help' to get started. *3.2 - Are there people I can talk to for help? Absolutely! There are certain Dragons that volunteer to monitor the 'help' system, and you can page them by doing the following command: page help with "Hello, I have a problem.." One of the friendly helpers should hear your request, and will try to assist you as best they can. But please, try to use the caves and the built-in help system first, as they answer lots of questions - that's why they're there, after all. If nobody from page help responds, you can use the command '@who' to see who is logged on currently, and just try to page someone at random. Your mileage may vary, see dealer for details. *3.3 - What are some of the basic commands, to get me started? Well, you can get most of these from the Caves of Learning, but here goes: To talk: | say or " | "Hello | Guest says "Hello" To move: | north,n,etc. | west | Guest goes west. To emote: | : | :gets up. | Guest gets up. To page: | ' | 'uw hi | (Guest pages Underworld.) To join: | @join | @join uw | (Guest joins Underworld.) To see who's on: | @who | @who | (lists who's on) To see your inventory: | i | i | (lists what Guest is holding) To get/drop:| get/drop | get ball | Guest gets the football. | | drop ball | Guest drops the football. To look: | look | look | (Guest looks about the room.) | | look ball | (Guest looks at the football.) To exit: | @quit | @quit | (Guest disconnects.) Also, check out the LambdaMOO Beginner's Quick Reference Card: http://lucien.berkeley.edu/MOO/quick-reference.txt Other things you'll want to do as soon as you start: the first two things a new player should do are give themselves a description and set their gender. You do the former by using the command '@describe me as "You see a dragon..". You do the latter by using the command '@gender me is male/female/neuter'. If you don't do these things, people that look at you will get really confused and badger you about it in a friendly way until you do. :) *3.4 - Is there a place for new folks to gather? Quite often, guests tend to congregate at the Dragon Valley, which is where new users appear the first time they log on. If there is not anybody there, you can walk to the west along the Drakkhein Road for a while, and you'll come to the Drag'on Inn off to the south. Folks often gather at the Inn for chatting and socializing, as it's run by a friendly Dragon named Tempest who just loves to help folks. If you're really lonely, do the '@who' command to see who's logged on, and then use the '@join' command to join them. Be sure to page them first, as you never know who might be having a private conversation, and many folks like to keep their doors locked. *3.5 - How do I use those nifty features? Pretty soon after logging on, you'll notice that some folks have these standard responses/actions/funny things that they can do - like turning into Tigger and bouncing on someone, sending cans of spam to tromp around their screen, and also actual useful commands for seeing what's what around the MOO. Often, those actions are gathered on special objects called 'feature objects'. Each player can add these features to him/herself, and then use those verbs. You add a feature by doing the following command: @addfeature #featurenum where '#featurenum' is the object number of the feature you want to add. For example, there are lots of special, basic social actions on Stetson's Social Verb Feature, which is #127. You can add this by typing: @addfeature #127 You can also see what features another person has with this command: @features for [ex. '@features for Fred' lists Fred's features] This can be useful for finding out about features that you see in use by others. List their features, figure out which one they were using, and add it. Many (if not most) features have help on them, if you know their number: help #featurenum For more information on features, type 'help features'. *3.6 - How can I use the multi-channel thingy? There's a certain feature provided on the MOO that provides a 'broadcast' facility that's a lot like IRC. The feature is #131. You add it as shown above. You can talk on any of the available channels, and the other folks 'joined' to that channel will hear you. You can join any number of channels you want. Let's assume we have a channel named 'UDIC' (which, we do :). The commands to use it are: /udic - joins the channel /udic - leaves the channel (it's a toggle :) /udic this is a message - talks on the channel cwho udic - lists those listening to channel UDIC @channels - lists the available channels For more information, type 'help #131'. *3.7 - How do I send mail on the MOO? You can send mail using the @send command. You'll be prompted for the name of the person you want to send MOOmail to, and the subject of your message. They you can start typing away. You'll be using the standard MOO editor, so if it seems a bit confusing, type 'look' to see a list of the commands. When you're done, you type 'send' to send your message. Note that MOOmail is only on the MOO - you can't send from a 'real' email account to the MOO, or vice-versa. There are also many maillists maintained on the MOO. To see a list of the available maillists, use the '@unsubscribed' command. To subscribe to a maillist, use the command '@subscribe with notify'. You'll be notified anytime new mail is sent to that list, and you can use the @nn or @read or @peek commands to read it. Some particularly interesting lists for newcomers are *general, *qooc (Quoted-Out-Of-Context - an interesting list, to say the least :), and *new-stuff, which shows some of the new things being built. Others include *programming and *topology, which discusses the layout of the Weyrmount. One helpful command is: @mail on . This will show you an index of the messages that are available on that list. That can be useful when there are threads of messages you don't want to read, as you can just scan the message headers for things you want to see, and ignore the rest. For more help using MOOmail and maillists, type 'help mail'. For help using the MOO editor, see section 3.11. *3.8 - Stop the MOO, I want to get off! The command to leave the MOO is '@quit'. *3.9 - How can I use the 'virtual MOO' features of the Weyrmount? You use the '@rgo' command to teleport to another MOO. The most popular destination currently is the entry point for the Sprawl. To get there: @rgo #11@sprawl You'll be teleported to the other MOO. For the duration, you'll be what they call an 'Avatar', which is basically an empty, temporary guest character that can do a few extra things like add features. You can't build or program from the virtual rooms. When you get tired and want to return to the 'Mount, use the command '@quit' to return. *3.10 - How can I create my own rooms and stuff? To create your own room, you'll use the '@dig' command (help @dig). Note that if you want to connect your room to an existing room, you'll probably have to get that room's owner's permission, and get them to actually physically connect exits from your room to theirs. To create objects, use the '@create' command (help @create). *3.10.1 - Where can I find out about the kinds of objects that exist? There are several basic types of objects on a MOO. The most basic are things, players, rooms, exits, notes, and containers. Each one of these represents a basic type of object that does something unique. You can find out some information about these by using the following commands: things @disp $thing or @disp #5 players @disp $player or @disp #6 rooms @disp $room or @disp #3 exits @disp $exit or @disp #7 notes @disp $note or @disp #9 containers @disp $container or @disp #8 People use these basic objects to build new objects that do what the original did, plus new things that they add. Other people can then build on THOSE objects, and so forth. That's the idea behind a MOO - that instead of just copying code around, you add onto the objects others made to create your own classes of stuff. Many times, people will create an object specifically so that others will create instances of it. This is usually known as a 'generic' object. It's often easier to look and see if somebody has already made a generic that looks like what you want to do, instead of just trying to create a new object from scratch. There's an area on the MOO where you can find out about what sorts of things, rooms, etc. already exist - it's called the Museum, and you can get there by using the command '@go #90'. You'll be teleported to a central area, where several halls lead to rooms full of different kinds of generic objects that have been created by others on the MOO. *3.11 - What is the MOO editor? How do I use the editor? There is a text editor built into the MOO. It's quite basic, just a simple line editor, but you'll be using it for sending mail, editing descriptions, writing verb code, etc. so you'll need to learn a little bit about how it works. Basically, you invoke the editor using the '@edit' command to edit verbs, properties, descriptions, messages and the like, and using the command '@send' to send a message. In both cases, the editor works very much alike. The editor is actually a room that you get temporarily teleported to, until you decide to save and quit (in the case of descriptions) or compile (in the case of verbs), or send (for MOOmail), and then you're returned to whereever you started from. In that room, "talking" (using the say or " commands) actually enters text into whatever it is you're editing or creating. You can 'look' to see a list of the commands in the editor. Also, 'help editors' has a little bit of help available on the kinds of commands that work in the editor. It's a bit awkward - it's no emacs or Word, to be sure - and it takes some getting used to. Some of the useful commands are: List available commands | look | look | (lists commands) List what you're editing | list | list | (lists a few lines) | | list 5-10 | (lists lines 5 to 10) | | list 1-$ | (lists everything) Move the insertion point | ins | ins 1 | (move to the top) | | ins 4 | (move above line 4) | | ins $ | (move to the bottom) Append text to a line | : | :Add this | (appends "Add this") Save text | save | save | [only for descrips] Send a message | send | send | [only for MOOmail] Compile a verb | comp | comp | [only for verbs] Quit the editor | quit | quit | (leaves the editor) Notice that the '$' character is used to refer to 'the last line', whatever that currently happens to be. Inserting at $ means you're at the end of the document; listing through $ means you're listing the end of your document, etc. There are a lot of other commands, it just takes time to get used to them. One common question is, how do I modify the text of an existing line - do I have to delete the line and readd it? There is a command called 'subst' (or 's') which allows text subsitution on an existing line, so you can substitute correct text for a typo. I've found this to be a pretty tedious way of fixing mistakes; sometimes it's just easier to go ahead and retype the line. This can get really annoying if your backspace key isn't working properly [cf. 2.4.2]. *3.12 - How can I create NPCs? There's a special kind of object on the MOO called a Bot. Bots are used at Weyrmount to create the NPCs you see wandering around. If you want to make your own: @create #1929 named Programming a Bot to do what you want is pretty easy - certainly easier than general MOO programming. There's also quite a bit of help material built into bots. You can access it by saying: explain index on ====================================================================== **4 - PROGRAMMING (Note: Much of the material in this chapter is stolen directly from the tutorial "The Cow Ate My Brain, or A Novice's Guide To MOO Programming", by Loyd Blankenship. Thanks to Loyd for an excellent tutorial. Whenever I use the acronym 'TCAMB', you'll know where that section came from. :) *4.1 - How is the MOO organized? (from TCAMB:) Object Numbers *Everything* on the MOO is an object. Players are objects, rooms are objects, exits and entrances are objects, editors are objects, and objects are, well, objects. Each object has an "object number". For instance, the generic thing might be #5. When you're in the MOO, you can substitute an object number for an object's name at any point. If I'm object #433, for instance, you could type "give ball to Mentor" or you could type "give ball to #433". If the ball is #731, you could type "give #731 to #433". The MOO doesn't care. Object numbers are different from MOO to MOO -- just because I'm object #433 on Metaverse doesn't mean I'm object #433 on Opal, or on Lambda. There are only a few basic object types defined in the MOO core. Everything else starts out as a copy -- a "child" -- of these basic objects. For example, there is a basic class called "$thing" (a generic thing). If I wanted to create a Generic Ball, I might make it a child of $thing (by typing `@create $thing named "Generic Ball"' -- more on this later). Then I could create children of the Generic Ball, such as a basketball (by typing `@create "Generic Ball" named "basketball"), or a baseball, or a football, or even a Frisbee! (Think about it -- you do many of the same things with a Frisbee you do with a ball: throw, catch, drop, get, etc.). *4.2 - What is an object, anyway? Pretty much everything you see on the MOO - players, rooms, exits, things, notes, containers - they're all objects. Even the maillists you read, and the features and utilities you use are objects. An object is just a 'thing' of some sort, out in the world. Objects have different characteristics, called 'properties'. For example, if you had a ball, you could give it a property named 'color', and assign the value 'red' to that property. Objects also have actions they can take in response to the world around them, or that can be invoked by players. Those actions are called 'verbs'. Programmers create the properties and verbs on an object, and that controls what the object can do. *4.2.1 - What is a property? (from TCAMB) What is a Property? A property is a value that is stored on an object. There are certain properties that are built into everything -- the description, for example. Every time you type `look ', the server runs the verb `look_self' on the object in question, and shows you the description of the object you looked at. We might also have a property on our Generic Ball called color, that you could set when you create children of the Generic Ball. If we created a football (@create Generic Ball named "football"), we could then set the color using the `@property' command (@property football.color is "brown"). Notice that when you're talking about properties, you use the form .property (as opposed to :verb). It's easy to forget which one wants a period and which one wants a colon. Use `@show object' to get a list of all the properties on an object. A property does not have to be a text string. They can also be lists or numbers. For example, a clubhouse might have a property called "members" as follows: clubhouse.members = ("Bob", "Carol", "Ted", "Alice") Or maybe it's just a number -- clubhouse.num_members = 4. *4.2.2 - What is a verb? (from TCAMB) What is a Verb? A verb is, simply, a program that is attached to an object. For example, $thing (our generic thing mentioned above) starts out with a few predefined verbs -- put, take, get, and drop. So you could type "get $thing" and you'd have the generic thing (type `inventory' (abbreviatable to 'i') to see a list of things you're carrying). When you're programming verbs, you'll almost always refer to them in the form :. So in the case of $thing (object #5), the `put' verb would be `#5:put'. If we had a ball that we could throw, the verb would be called `ball:throw'. There are two ways to look at the MOO program that is attached to a verb. The first is using the @dump command, described above. The second is using the `@list :verb' command. The command @list starts by checking the object for the verb; if it isn't there, it checks the object's parent. If it isn't there, it checks the parent object's parent. And so on, until it reaches the top. So if you type "@dump ball", you aren't going to see the program for the `put' verb -- it's defined on the generic thing, not the ball. But if you type `@list ball:put', the server will tell you something like "There is no `put' defined on ball, but it's defined on one of ball's ancestors." Then it will show you the `put' program. This is our first example of how *inheritance* works. More later . . . *4.2.3 - What is "object oriented" programming? (from TCAMB) What is Object Oriented Programming (OOP)? Before you can truly understand MOO programming, you have to be clear on the concept of OOP, especially the idea of objects and inheritance.... Inheritance We'll come back to creating new verbs and new properties later. Now we're to the most important part of OOP -- inheritance. Simply put, any verb or property on the parent is automatically available on all its children. Any child may have its own version of the verb instead, but if a verb is not specifically defined on a child, the child uses the verb as it is defined on the parent. Let's look at some examples. Our generic $thing has some basic thing-like verbs on it: put, take, get, drop, etc. When we create our Generic Ball, we'll be adding some new verbs: throw, catch and bounce. But we don't have to worry about writing our own put, take, get and drop for the Generic Ball -- it *inherited* them from $thing. When we make a child of the Generic Ball (say, a basketball), we might add the verbs dribble and shoot. When we did a `@dump basketball', it would only show these two verbs. But we could still catch it and throw it, because it inherited the catch and throw verbs from the Generic Ball. And we could still get and drop the basketball, because it inherited those verbs from the Generic Ball, who in turn inherited them from $thing. It works the same way with properties. If we made the description of Generic Ball say "This is an ugly green ball", then when we typed `look football', we'd see "This is an ugly green ball." You would have to change the description of the football to something more appropriate, thereby writing over the initial value of the inherited property. *4.3 - How do I start programming? *4.4 - Argh! How do I start programming verbs? Use the command @verb to add a verb. Try 'help verbs' and 'help @verb' to start. In reality, this is a pretty lame answer. But the question itself is kind of like asking, "How do I speak Chinese?" There's no quick, easy answer, because programming is a complex thing. The best help would be either to list some code on existing objects (ask around, or cf 4.6), or read some of the tutorials mentioned in this FAQ (cf 4.7). Also, try 'help programming' for some basic help. *4.5 - What does the MOO language look like? MOO language looks a lot like UNIX shell programming, for those of you with experience with that. It also looks a bit like C, although it may be more reminiscent of Visual Basic or some of the other more recent object-oriented languages. It's basically a structured language with static inheritance between objects. The inheritance scheme is single; multiple inheritance isn't implemented in the LambdaMOO standard. To see what it looks like for yourself, try 'help language'. *4.6 - I just want to see some code. Where are some examples? The best way to get sample code is just to start listing code. Use the '@verbs' command (help @verbs) to list the verbs on, say, the room you're in. Then use the '@list' command to list some of the code. Better yet, list the verbs on some of the FEATURES you've added - those tend to be very simple, "I'll say something to you" kinds of verbs. They're mostly very short. Pick a feature programmed by someone you know is not a super-genius-programmer-type, and the odds are the code will be reasonably simple. List it, read it, study it, think about it and ask questions. You'll soon be on your way to programming your first verbs. *4.7 - Where are some tutorials I can download or read? The main LambdaMOO programmer's guide is available on the Web at: ftp://parcftp.xerox.com/pub/MOO/ProgrammersManual.texinfo_toc.html It is also available as one large text file: ftp://parcftp.xerox.com/pub/MOO/ProgrammersManual.info There are several other tutorials available in the Library on Sprawl, including the infamous Yduj's Wind-up Duck Tutorial. Here's a list of SOME of the tutorials that are available via the Internet: Canton Becker's MOO Tutorial: http://lucien.sims.berkeley.edu/MOO/Moo.Tutorial.Txt The Cow Ate My Brain: http://lucien.sims.berkeley.edu/MOO/mootutor1.txt yduJ's Wind-up Duck Tutorial: http://lucien.sims.berkeley.edu/MOO/ducktutorial.txt yduJ's MOO Lore Pamphlet: http://lucien.sims.berkeley.edu/MOO/yduJ.lore.txt *4.8 - It's hopeless! I just can't do this! Well, don't despair. Programming isn't for everyone. If you find yourself really banging your head against the wall, try something else. Ask different folks for some code that does something similar to what you want. Try to find a generic object in the MOO museum that already does what you want. Post to *programming and ask questions. Or just build rooms and stuff, and chat and have fun. The main point of the MOO is to have fun, so if it stops being fun, don't do it! ====================================================================== ** Section 5 - ULTIMA DRAGONS *5.1 - Who are the Ultima Dragons? The Ultima Dragons are an Internet club for fans of the Ultima computer game series by Origin Systems, Inc. The only requirement for membership is that you have at some time played an Ultima game on any platform. They're a neat bunch of folks who enjoy computers and role-playing games, and ESPECIALLY Ultimas! *5.2 - Where can I learn more about the Dragons? Try checking out the Ultima Dragons Home Page on the World Wide Web: http://www.udic.org/ Also, if it's available to you, read the Ultima Dragons' Usenet newsgroup: alt.games.ultima.dragons *5.3 - How do I become a Dragon, so I can get on the Weyrmount? Well, that's a good question, actually. Right now, there's an automated join form on the World Wide Web, at: http://www.udic.org/join.html There are over 1800 members currently, with more joining every day, so if a greeter doesn't get back to you right away, don't panic - we're mostly just highschool and college students, volunteering to help out as we can. They'll get back to you in a day or two to verify your application. ====================================================================== ** Section 9 - CREDITS I, Underworld Dragon, being of sound mind and wings, have composed this FAQ for the mutual benefit of all, and because I was buggered bored. However, the Weyrmount itself was originally founded by Monomolecular Dragon. Further, many of the ideas built there were taken from the Ultima series of computer games, by Origin Systems, Inc. (whose walked-on-ground we worship, and who we beg not to sue us :). Thanks to many, many imaginative and talented Dragons for making the Weyrmount such a fun place to be! And many thanks to the talented folks at Origin for making Britannia (and the Weyrmount) such a fun place to visit. -- Underworld Dragon