enCore v.4 User's Guide

More on MOOs

enCore is an Open Source program built upon MOO technology. MOO stands for Multi-user Object Oriented Domain. Knowing a little about the history of MOO and how MOO works will help you understand enCore better.

The history of MOO, MUDs and MUSHs and enCore

Before the internet dawned, MOOs (and its other similar programs called MUDs or MUSHs) were the first computer programs to offer online virtual worlds where multiple people could gather and interact. Predominantly, the first MOOs were role playing games like Dungeons and Dragons, and connections where made via telnet (the telephone line). Even today, many MUD games survive (see this link for an idea what MUDs are like). The early MOOs were completely text-based and all functions in the environment were performed by entering commands.

In 1997, Jan Holmevik began a project to create an educational MOO that would operate on the Internet. Since that time, enCore has shown steady progress in integrating MOO into the web environment. The important thing to know from your perspective as a user of enCore is the double nature of enCore: enCore includes many web functioning features; however, it maintains under its graphical interface all the text-based features of the original MOOs.

MOO as a "virtual world"

One of the most difficult concepts for new enCore users to get accustomed to is the sense of MOO as a "virtual world." MOO has a sense of space and within that space there are things that can move around or do things--just like in real life (but of course only "like"). It can be very disorienting at first.

The geography of a MOO is centered around rooms, so one helpful concept is to imagine that you have entered a big house when you enter a MOO. Within the MOO, you can move from room to room. Inside each room are things or objects that reside in the room, and also people who might happen to be in the room like you. You will also find that each room has doors that lead to other rooms. Examining the room, the things, and the people inside it will help you get oriented within the MOO space.

The next concept about MOO's virtual world you may find hard to grasp at first is that inside this MOO space there are things that "do" different behaviors. Different objects inside the MOO can be designed to do different things. For instance, you might see an object in a room called "coffee." As you look at this object, you discover that it urges you to drink some coffee by typing the command drink coffee. You type in the command, and in the text area messages show that you are enjoying a hot cup of java.

The sense of what and where things are and what things do is founded upon the object-oriented programming language that underlies enCore and MOO.

What it means that enCore is founded on object-oriented programming

Most of you won't be or become computer programmers, but knowing a little bit about what "object-oriented programming" means will help you understand more about enCore. enCore is founded upon the MOO programming language which is its own object-oriented programming language similar to C++.

Object-oriented programming is built upon "objects." Below is a definition of objects from a tutorial on object-oriented programming:

What Is an Object?
Objects are key to understanding object-oriented technology. You can look around you now and see many examples of real-world objects: your dog, your desk, your television set, your bicycle.

These real-world objects share two characteristics: They all have state and behavior. For example, dogs have state (name, color, breed, hungry) and behavior (barking, fetching, and wagging tail). Bicycles have state (current gear, current pedal cadence, two wheels, number of gears) and behavior (braking, accelerating, slowing down, changing gears).

Software objects are modeled after real-world objects in that they too have state and behavior.

In enCore and MOO "state" is described as a "property" and "behavior" is described as "verbs."

Properties will be things you might be able to observe when you look at an object, like its description and other features about it.

Verbs are behaviors, things that the object can do (which are in reality small computer programs).

For your experience in enCore, it is important to appreciate the "virtual reality" quality of all objects in enCore. Everything within enCore has properties (a state) and verbs (behaviors), and part of the flexibility and interest in intereacting in enCore comes from its object-oriented programming foundation.

A couple more features of object-oriented programming

If your eyes aren't crossed yet, two more features of object-orienting programming are important for understanding enCore and MOO: class and inheritance.

What is class?

"Class" refers to the type of object. enCore MOO is built upon three main classes of object:

  • rooms
  • things
  • players (or characters)

Think of "class" like a species (mammals, reptiles, insects) or a type of substance you might remember from twenty questions (animal, vegetable or mineral).

Each class has a particular "state" (properties) and particular "behaviors" (verbs) that define it.

What are parents and inheritance?

enCore and MOO has been built by modifying these "parent" objects. For example, to build a generic note, someone started from the generic "thing" object and modified it to be a note. The new note is a "child" of the "parent" object--the generic thing. The new note, through "inheritance" maintains all the core features of the generic thing.

This way of building new objects upon old ones is typical of enCore and MOO. Everything you create and customize inside enCore is built upon "parent" objects; what you have created is a new "child" of that parent.

 

Screen Appearance || Quick Start || Beginner's Guide || | Getting around || Communicating ||Character options || Working with objects || Objects help ||Using MOO Mail || Creating objects and rooms ||Xpress options || Getting help || Command summary ||

Questions? Comments? Email Lennie Irvin
This guide is based on materials developed for the Encore Open Source Documentation Project by Lennie Irvin and Erin Karper. Menu courtesy of Milonic.

Page last updated 08-03-04 --LI