Xref: utzoo comp.object:2444 comp.lang.eiffel:1338 Path: utzoo!mnetor!tmsoft!torsqnt!news-server.csri.toronto.edu!cs.utexas.edu!sun-barr!newstop!grapevine!lilith!jguy From: jguy@lilith.EBay.Sun.COM (Jeff Bone) Newsgroups: comp.object,comp.lang.eiffel Subject: Re: Managing multi-programmer projects in OOP. Keywords: Random $0.02 Worth, MUD, MOO, LONG Message-ID: <797@grapevine.EBay.Sun.COM> Date: 26 Jan 91 03:31:09 GMT References: <2603@trlluna.trl.oz> <4171@osc.COM> Sender: news@grapevine.EBay.Sun.COM Reply-To: jguy@lilith.EBay.Sun.COM (Jeff Bone) Followup-To: comp.object Organization: Not very. Lines: 125 Just a (LONG) random $0.02 comment: An interesting example of a shared OOP environment can be found in the game "MOO". MOO is one of a family of games called "MUD", or multi-user dimension --- "MOO" is an acronym for MUD object-oriented. --------------------------------- MUD (and MOO) for the uninitiated --------------------------------- MUDs resemble text adventure games with the exceptions that (a) multiple users play and interact within the game world and (b) the game world is usually extensible from within the game itself. The more sophisticated MUDs (MOO is currently state of the art) allow you to program complex behaviors on the objects within the database. The various different flavors of MUD allow for various levels of programmability in various languages --- among them C-like languages, Forth-like languages, Lisp-like languages... MOO itself has a C- like appearance on the surface, but is actually quite OO... Additionally, MUDs have varying degrees of extensibility. Some MUDs are actually "meta MUDs" --- the server itself simply provides the database engine and programming environment and the rest of the game (including in some cases the input parser --- not to be confused with the language parser) is implemented in the server language itself. MOO and Ubermud are examples of "meta MUDs". ----------------------------------------- MOO as a multi-programmer OOP environment ----------------------------------------- From the "Introduction to MOO" document by Stephen F. White, the creator of MOO (the whole document is available via anonymous FTP from belch.berkeley.edu as ~ftp/pub/moo/moo2.0.doc.ps...): "One of the most powerful features of MOO (and that from which it derives its rather silly name), is the object- oriented programming metaphor known as inheritance. Simply put, inheritance means that an object "inherits" properties and functionality from another object. For example, a brown paper bag might inherit the verbs 'put in' and 'remove from' from a generic object "container". The "parent" of an object is the object from which it inherits functions (verbs)... "In MOO, there is no distinction between objects and classes. All classes are objects, and any object may be instantiated to become a class. "Objects inherit properties and verbs from their parents. ... Verbs are the functions, or "methods" (in o-o speak) which the object has. They determine what behaviour an object is capable of performing. The verbs in MOO are programmed in the MOO language ... "Thus, a player may create an object, give it some properties and verbs which may be used to manipulate it, and then leave it in a public place for others to peruse or instantiate (make copies of). The permissions on an object determine who may instantiate what objects... "Since MOO keeps track of what objects are instances of what other objects, you may also dynamically add properties and verbs to existing objects. For example, if you decide to add the verb 'smash' to your 'precious ming vase' object, all instances of that object will immediately inherit the new functionality." And so on... the MOO environment was designed expressely with the multi-programmer concept in mind. Note: MOO is a game and not a software development environment per se. -------------------------------------------------- Neat! Where do I find out more? How do I do MOO? -------------------------------------------------- The definitive site for MOO code, examples, and documentation is belch.berkeley.edu. There is also a variant version of MOO (the "lambda" version) available at belch with various functional and cosmetic differences from "original" MOO. The MOO code is currently not in a stable release state --- it's a tinkerer's toy right now. Also, there are not yet any published, "live" MOO sites though I know of at least one which is nearing completion... for information about the availability of live MOO servers and other MUD topics, explore the archives on belch and/or read the USENET group rec.games.mud... Be forewarned: there's a significant social aspect to MUDding and a whole subculture has evolved, so most of the postings in r.g.m are rather obscure to the novice and deal with non-technical issues. Anyway hope this proves at least interesting to you all... good luck and let's hear any comments or observations any of you may have about the technical aspects of MUDs/MOO and/or it's relevance to OOP or other programming and systems issues in general. Yrs, -- --- jbone@Sun.COM --------------------------------------------------- ------------------------------------------------------ Jeff Bone --- -- #include Note: My work at Sun does not involve MUDs or MOO... this is my own thing, so to speak...