[Computer Science]

[SchoolNet MOO]

This project idea comes to you from Virtual Ventures in Ottawa, Ontario.

[Virtual Ventures]
To learn to navigate, communicate, and build in the SchoolNet MOO.

[Kids MOOing]MOO stands for MUD (Multi-User Dungeon, as in "Dungeons and Dragons"), Object-Oriented. A MOO is an online virtual environment, usually text-based (i.e. no pictures). Unlike MUDs, which are generally role-playing type games where players earn higher rank through defeating various monsters, MOOs are more often used as educational tools or just as social areas where the regular gaming elements are downplayed or non-existent.

Each person on a MOO has a character or player which can have a gender and be described in any way the person behind the player chooses to be seen. As in a "quest game" (such as the King's Quest series by Sierra), you can walk around the MOO areas (rooms), picking up objects and talking to other players; all of this is described in writing because it is text-based. However, since this is an online world, the other players are real people! It is important to remember this because people online often forget that these are real people they are talking to.

Once players have learned to move around, look at and use objects, and talk to other people, they will often move on to creating objects and rooms of their own. In order to start doing this, you need to become a builder. A builder might make a library containing shelves where you could place books.

The next step after learning to build is to learn to program. MOO uses an object-oriented language which many people consider a useful and fun stepping stone to learning a more advanced language such as Java or C++. Programmers can make their objects actually do something. For example, a programmer might program a dog which would follow its owner around and come when its name was called.

The people in charge of the MOO are usually called wizards. Depending on the MOO you are considering, (there are many different MOOs with different themes and different setups!) the administration may be done in different ways. The important thing is that wizards will have power to change the objects of any other player on the MOO. This includes the ability to boot people off the MOO if they are acting inappropriately, as well as the ability to give players the ability to build or program.

SchoolNet MOO (Telnet to moo.schoolnet.ca:7777) is a MOO intended for Canadian elementary and secondary school students. This project is oriented specifically towards learning to use SchoolNet MOO, but much of the information here could be used on one of the many other MOOs available!


First Steps:
  1. Connect to SchoolNet MOO by telnetting to moo.schoolnet.ca:7777. First, connect as a guest (connect guest) and look around. To look at things, type l or look and the name of what you want to look at. For example, look here would let you look at the room you're in, look Jess would let you look at someone named Jess, look me would look at yourself.
  2. Try moving by typing the name of the direction you would like to go in. For example, if you want to go to the north, you could type n or north.
  3. Try talking to other people. There are many helpful and friendly people on SchoolNet MOO who wouldn't mind talking to a new player. You talk by typing say hello or "hello. Then you should see on your screen
    You say, "hello"
    Anyone in the same place will see that you say hello (they will see something like Guest says, "hello") and might talk back at you. Don't be rude! Remember, these are real people.
  4. Be aware of the rules on the MOO, e.g.:
    • no swearing
    • no insulting
    • no threats
    • no violence
  5. Remember, if you have any troubles, type help or ?. You can also visit the help center by typing help me. There are also many people on SchoolNet MOO who don't mind helping out a newbie (new player) as long as you ask politely.
  6. Once you've looked around a bit and are sure you're going to want to be on the MOO, request a character. This is done by typing request followed by the name of the character you want to have and your email address (so that they can send you the password). If you want to request a character named Mimi and your email address is mimi@themouse.com, you would type request Mimi mimi@themouse.com

Being a player on the MOO:

  1. Once you've got your password, connect as your new character instead of as a guest (you should type @quit to leave, then telnet in again).
  2. Take some time to review the things you tried as a guest. Move around, look at things, talk to people. There are many helpful people on the MOO, so you might be able to ask them questions if you need help. Otherwise, you can use the regular help system by typing help.
  3. Describe yourself. Every time you look at someone or something, you want a description to give you an idea of what the object or person looks like. Take a look at yourself (look me) and decide what you would like your new description to be. You can set your new description by typing @describe me as <description>. If you type @describe me as You look up... way up... and see an incredibly tall fellow looking down at you. then anyone who looks at you will see that description.
  4. Next, you will probably want to set your gender. This is done by typing @gender male or @gender female.
  5. Try checking to see who is online. The @who command or the where command will give you a list of people. If you want to join someone, you type @join <name>.
  6. Try using the SchoolNet MOO Player's Tutorial. Some of this has been explained here, but it never hurts to review!
  7. Once you've gotten used to moving around, learned a little about the help system and gotten comfortable with the MOO, it's time to move on the next step: becoming a builder. Go to the Admin Building. You can walk there or you can type @move me to #6061. (#6061 is the number for the Admin Building.) Get a Builder's Permit. Once you have a description and a gender you will be permitted to take one (get builder's permit from wicket). Read it (read permit) and accept it as described in the text on the permit.


  1. Now that you are a builder, you can begin to create objects. To do this, you use the @create command. If you, say, wanted to create a chicken, you should type @create $thing named chicken. Try creating a chicken now. If you mess up and create an object you don't want, you can @recycle it. Say you made a mistake typing and created a $thing named "chickem", you would recycle it by typing @ recycle chickem
  2. It is important to actually try all these steps! Good as it may seem to learn things in theory, it's much easier to remember if you actually do the steps. You can always @recycle your object if you don't want it when you're done.
  3. Look at your chicken. You will probably see a message that says:
     You see nothing special.  
    Try describing your chicken. You do this using the same @describe command you used to describe yourself, only this time you would say @describe chicken as ... instead of @describe me as...
  4. Try renaming your chicken to something else, say "hungry chicken". To do this, you use the @rename command. So to rename it to "hungry chicken" you should type @rename chicken to hungry chicken.
  5. Now that your chicken is named "hungry chicken" you will have to refer to it that way. Notice that look chicken doesn't work any more. Your object can have more than one alias (which is like a nickname). So if you want to be able to refer to your hungry chicken as a chicken again, you can add this alias to its collection. To do this, type @addalias chicken to hungry chicken. Now try look chicken again; it should work this time.
  6. Now that you've got this chicken, maybe you would like to keep other people from picking it up and taking it away from you. You can do this by using the @lock command. Drop your chicken into the room, then try locking the chicken to the room that you're in by typing @lock chicken with here. Look up the @lock command in the help files by typing ?@lock or help @lock.
  7. Once your chicken is locked, try to pick up your chicken. You should get a message that says something like,
    You can't pick that
    This is the default message, but you could change that message to something else. Figure out which message this is by listing all the messages on your chicken. To list the messages, type @messages chicken. To change a message, you type @<message> <object> is <new message>. So to change the "You can't pick that up" message on your chicken, you would type @take_failed chicken is "You reach to pick up the hungry chicken but it bites you, so you decide to leave it alone."
  8. You will notice that some of the messages have funny things in them like %l or %n, but those don't show up when you actually look at your object. These are variables which will substitute in the name of your object, the location of your object, etc. Read the help file on "pronouns" to learn more about them, but here is a list of possible pronouns for you to use:
    • %% => `%' (just in case you actually want to talk about percentages).
    • Names:
    • %n => the player
    • %t => this object (i.e., the object issuing the message,... usually)
    • %d => the direct object from the command line
    • %i => the indirect object from the command line
    • %l => the location of the player
    • Pronouns:
    • %s => subject pronoun: either `he', `she', or `it'
    • %o => object pronoun: either `him', `her', or `it'
    • %p => possessive pronoun (adj): either `his', `her', or `its'
    • %q => possessive pronoun (noun): either `his', `hers', or `its'
    • %r => reflexive pronoun: either `himself', `herself', or `itself'
    • General Properties:
    • %(foo) => player.foo
    • %[tfoo], %[dfoo], %[ifoo], %[lfoo] => this.foo, dobj.foo, iobj.foo, and player.location.foo
    • Object Numbers:
    • %# => player's object number
    • %[#t], %[#d], %[#i], %[#l] => object numbers for this, direct obj, indirect obj, and location.
    It is always better to use pronouns, so try resetting your take_failed message on the chicken: @take_failed chicken is "You reach to pick up the %t but it bites you, so you decide to leave it alone."
  9. Try setting the otake_failed (Think of the "o" as meaning "outside" -- people outside see the message, rather than just the person who triggered it) message on your chicken. This is the message that everyone in the room sees when someone tries to (and fails) to pick up the chicken. Make sure to use pronouns! Try something like @otake_failed chicken is %N reaches down to pick up the %t but it bites %o.
  10. Try typing @audit to display all the items you have created. Every item on the MOO has an object number which you can use to refer to it. For example, look #11 will let you look at The Grassy Knoll, even if you're in a different place.)
  11. Now try building a room (@dig "room name") and move yourself to that room by finding out its object number (@audit) and using the @move command (@move me to #1234, where 1234 is the number of your room.). Once there, try making that your new home (@sethome) so that typing `home' will bring you back there. You probably also want to describe your room.
  12. Try building more than one room and dig exits back and forth. (From first room @dig <exitname> to #<number of other room>, then from the other room, @dig <exit> to #<number of first room>).
  13. Remember when you @create'ed your chicken you typed @create $thing named chicken? Well, as you might have guessed, there are different types of objects you can create and $thing is only one. Some others are $container, $note, $room, $exit, and $letter. Try creating one of those and looking at the messages on it. Play around with it to see what is special about that object. The LambdaMOO Editor Tutorial will come in handy when you want to do a $note!
  14. These objects, $thing, $note, $letter, $room, $exit, etc. can be the parent of any object you create. For example, the parent of your chicken is $thing. That means that chicken inherits all sorts of characteristics from $thing. For example, $thing can be picked up, dropped, and looked at. So can your chicken. If you made a box whose parent was $container (@create $container named box) then the box would be a child (or kid) of $container. It would inherit the characteristics of $container. For example, one of the special characteristics of a $container is that you can put things in it, so because your box inherits that characteristic, you can also put things into your box (put chicken in box) and when your box is empty it would have the same empty message as $container does unless you decide to change it.
  15. Try listing your parents (@parents me) on the MOO. This isn't going to give a listing of your real mom and dad, but it will give you a list of the objects on the MOO that you have inherited characteristics from. For example, if you weren't a child of $player, you might, like a $thing, not be able to talk or pick things up! And as a child of $builder, you can make your own objects because commands like @create are available to you. Try to figure out more about how to use the @kids command and the @parents command by looking them up in the help system.
  16. As you @create different types of objects, remember to use the help system to learn more about the different objects.
  17. Before going on to the next stage, make sure you know the following commands. If you don't, try looking them up in the help system by typing ? and then the name of the command you want to look up.
     ? (The most useful command; use it before pestering someone.)  
    @create, @recycle, @rename, @addalias, @describe 
    @lock, @anchor, @messages
    @mail, @send, @rmm, @notedit 
    @audit, @dump, @d 
    @kids, @parents, @locations, @contents


  1. To become a programmer you have to pass a test. Make sure you know and can use all the builder commands before trying! To take the programmer's test, go to #6061, take the programmer's permit in the same fashion as the builder's permit and read it. Follow the instructions thereafter.
  2. If you pass the test, then you might want to go to the schoolbook depository (#529) and get the programmer's tutorial. Actually, you will probably prefer to get this online at http://www.schoolnet.ca/moo/prog_tut.html and print it out. The document is approximately five pages, but you will find a printout very useful document which you can refer to while programming.
  3. Follow all the instructions in the programmer's tutorial and don't be afraid to use the help files or to ask other players for help!

[Did you know... There are specialty MOO's for discussing a particular topic.  BioMOO, for example, is strictly for biologists.]The MOO is a great way to meet other people, even people who live very far away from where you do, talk with them and make new friends. However, if you get into building and programming it can also be a fun and friendly way to learn. If you find you like programming in the MOO, you might like to move on to do programming in a "real world" language such as C/C++ (these are particularly good because the syntax on the MOO is almost the same!). The concepts of objects and inheritance are things that are very important in an object-oriented language (such as Java or C++) and quite easy to learn on the MOO.

Information specifically about SchoolNet MOO can be found at http://www.schoolnet.ca/moo/ or http://moo.schoolnet.ca/. The SchoolNet MOO Programmer's Tutorial (referred to earlier) is available online at http://www.schoolnet.ca/moo/prog_tut.html.

There are many more sites with information about MOOs if you are interested in setting up your own or learning more about how they really work. These are not so much links for normal MOO players as they are for people who plan to administrate a MOO. The LambdaMOO FTP site contains things like the MOO server, LambdaMOO cores and the programmer's manual. Lambda MOO is the standard MOO: the biggest and the first. Many MOOs start with a "core" from Lambda which would include some important objects such as the generic items ($thing, $note, $player, etc.). http://www.moo.mud.org/ is a good place to get anything MOO related, including databases, servers and manuals. Other documentation can be easily found on the Internet. Bear in mind that not all of this documentation was written for SchoolNet MOO specifically, and discrepancies may occur. A quick search will often turn up many other interesting documents, including lists of MOOs and papers describing studies done about MOOs as educational tools or even social structures as they develop in MUDs and MOOs.


[Home][Canadian Scientists][Credits][Français]

Physics | Chemistry | Biology | Engineering | Computer Science | Understanding Science and Technology

Produced by Galactics.
Comments: galactics@spacesim.org.
Last updated on 14 August 1998.