/lambda-moo-programming

Lambda MOO Programming collects and updates numerous MOO guides in one place and includes an updated and expanded version of the MOO Programmer's Manual in markdown and HTML5. It also includes the ToastStunt Programmers Guide and links to ToastStunt references.

Primary LanguageHTMLMIT LicenseMIT

Lambda MOO Programming

Table of Contents

Introduction

The primary purpose of this repository is to aggregate and update the existing LambdaMOO Programming Resources that exist. The core of the work done here has been to convert the original MOO Programmer's Manual written by Pavel Curtis to Markdown as well as HTML5 w/ Bootstrap and to update each section of the manual with additional information.

There are a number of other files included in this repository. Many are scraped from various websites that continue to exist, somehow, to this day. Most are at least 15 years old. We have included them here for posterity, since losing them would be tragic.

Local Setup

git clone git@github.com:SevenEcks/the-new-moo-programming-guide.git

Markdown Conversion

We use the html2md library to convert HTML files to markdown on the command line. It can be installed using NPM.

npm install -g to-markdown-cli
html2md -i ./foo.html -o out.md

Contents

There are two versions of each document in this repository. One is a markdown copy located in /tutorials which is accessible on GitHub and one is an HTML version located in /tutorials/src.

ToastStunt Programmer's Manual

This is an updated Programmer's Manual for ToastStunt (the most cutting edge fork of LambdaMOO). It is a fork of the updated LambdaMOO Manual (see below) which incorpoates the original manual and Todd Sundsted's Stunt updates with regular updates as new features are released for ToastStunt.

This manual now lives in its own repository.

ToastStunt Programmer's Manual

Lambda MOO Programmer's Manual [Updated]

This LambdaMOO Programmer's Manual is an updated an expanded version of the LambdaMOO Programmer's Manual originally written by Pavel Curtis. Some pretty extensive work has gone into formatting it, and updating the content.

On The Web

This file is important, and thus, it is available online without having to interact with this GitHub at all: MOO Programmers Manual

On GitHub

To use this guide you simply need to open MOO Programmer's Manual. This version of the MOO Programmer's Manual lacks much of the formatting that the HTML5 version below has. It is great for quick perusal, but the HTML version is superior.

Locally

To access this file locally you simply need clone the repository and open /tutorials/src/moo-programmers-manual-updated.html in your web browser.

Learn MOO Programming Videos

This is a series of videos on installing and learning MOO programming.

  1. Installing and Compiling LambdaMOO from Source Code

  2. Using LambdaMOO DB and Applying Server Patches

  3. The Basics of LambdaMOO Programming

  4. Create your own Debugger in MOO

  5. Intro to Properties on Object (1/3)

  6. Properties on Objects Continued (2/3)

  7. Properties on Object Concluded (3/3)

  8. Extending the MOO with Custom Verbs

Yib's Pet Rock

A great first introduction to Lambda MOO programming.

On GitHub

To use this guide you simply need to open Yib's Pet Rock.

Locally

To access this file locally you simply need clone the repository and open /tutorials/src/yibs-pet-rock-non-html5.html in your web browser.

LambdaMOO Programming Tutorial (Steven Owens)

This is an excellent guide, the most complete one I've seen aside from the original Lambda MOO Programmer's Manual. It was written, as the title states, by Steven J. Owens. This guide was updated 03/07/18 after Steven sent over a fresh link to an updated version of the guide.

On GitHub

To use this guide you simply need to open LambdaMOO Programming Tutorial by Steven Owens.

Locally

To access this file locally you simply need clone the repository and open /tutorials/src/dark-sleep-lambdamoo-programming-tutorial-non-html5.html in your web browser.

Colin's Way Easy Intro Guide to MOO Programming

A good introduction to MOO programming. This guide gets you through all the basics.

On GitHub

To use this guide you simply need to open Colin's Way Easy Intro Guide to MOO Programming.

Locally

To access this file locally you simply need clone the repository and open /tutorials/src/way-easy-moo-programming-guide-non-html5.html in your web browser.

Winding Duck

Winding Duck MOO Programmer's Tutorial walks you through, step by step, how to create some simple code, then make it progressively more complicated.

On GitHub

To use this guide you simply need to open Winding Duck.

Locally

To access this file locally you simply need clone the repository and open /tutorials/src/winding-duck-non-html5.html in your web browser.

MOO Programming Tips

This looks like it was a guide created for a specific MOO but it has some tips that those new to MOO might find useful.

On GitHub

To use this guide you simply need to open MOO Programming Tips.

Locally

To access this file locally you simply need clone the repository and open /tutorials/src/zompost-moo-help-non-html5.html in your web browser.

Hacking LambdaMOO Server Nodak

This document walks you through what happens when a connection is made to the Lambda MOO server.

On GitHub

To use this guide you simply need to open Hacking LambdaMOO Server.

Locally

To access this file locally you simply need clone the repository and open /tutorials/src/hacking-lambda-moo-server-non-html5.html in your web browser.

Lambda MOO Background Information Nodak

This document contains background information on what LambdaMOO is in relation to other servers and languages.

On GitHub

To use this guide you simply need to open Lambda MOO Background.

Locally

To access this file locally you simply need clone the repository and open /tutorials/src/lambda-moo-background-non-html5.html in your web browser.

Lambda MOO Programming Nodak

This document contains information on Lambda MOO programming. It is a short and somewaht technical document without much background information.

On GitHub

To use this guide you simply need to open Lambda MOO Nodak Edu.

Locally

To access this file locally you simply need clone the repository and open /tutorials/src/lambda-moo-programming-tutorial-nodak-edu-non-html5.html in your web browser.

How to set up a LambdaMOO server on GenesisMud

This is a step by step guide by Puff the Fractal Dragon on how get LambdaMOO running on GenesisMud. However, for anyone looking to get a general idea of how to get LambdaMOO up and running, this tutorial provides a good reference for the process.

On GitHub

To use this guide you simply need to open LambdaMOO on GenesisMud.

Locally

To access this file locally you simply need clone the repository and open /tutorials/src/genesismud.txt in your web browser.

Gettings Started With moo.el

This tutorial by Puff the Fractal Dragon walks you through using emacs to edit MOO code. It also includes some generalized emacs information.

On GitHub

To use this guide you simply need to open moo.el.

Locally

To access this file locally you simply need clone the repository and open /tutorials/src/mud_el_tutorial.txt in your web browser.

Server Patches

I've been worried that we might lose some server patches to time. Also they aren't really gathered anywhere on GitHub, just on LisDude MOO Resources and random source forge unmainted LambdaMOO repos. So I'm starting to collect them here. If you have any, throw them up in a pull request please!

Server Setup

Automated Local Environment Setup (Stunt & LambdaCore)

Since I abuse virtual machines for this sort of thing and don't retain the data from them, I have created a repository, moolite, to reproduce my environment without much typing. It consists of the Stunt server and the latest LambdaCore database from Brendan's LambdaMOO repo. Right now it's a couple of shell scripts, but I will be adding more to it and the quickstart in the README. -- amnsia.

Useful MOO Code

There are some code samples for enterprising developers to check out. It's limited for now, please feel free to put a pull request in for any code you'd like included.

  • Local Editing (Edit in a pop up window with @edit using Dome-Client web client)
  • Code Scanner (Scan your MOO code for common issues & optimizations)
  • $scheduler (Schedule tasks to run in the future)

Web Client

I've mentioned Dome Client in the updated MOO Programming Guide. It's a web based MOO client that uses NodeJS and web sockets. It works great, connecting to most LambdaMOO servers. You can run your own.

Public Web Client

Sindome offers a public web client that can connect to whatever LambdaMOO server you want: http://pubclient.sindome.org/

It works great, and if you use the Local Editing code in this repo, you can write an @edit verb which will let you edit code in a nice pop up window. It's excellent.

Changes

See CHANGELOG.md

Notes

See NOTES.md

TODO

See TODO.md

Contributing

Please feel free to fork the repo and contribute via pull request. This is a labor of love. Give back to the community. If you want to edit one of the HTML src files, you can do so, but you should run it through html2md (npm install -g to-markdown-cli) and then move the markdown file into the tutorials directory.

Example of creating a new version of the markdown file from the HTML 5 source and moving to the appropriate folder:

cd tutorials/src
html2md -i moo-programmers-manual-updated.html -o moo-programmers-manual-updated.md
mv moo-programmers-manual.md ../ 

Author

Sindome has been online since 1997. I've been playing it since 2003. I've been developing in MOO since 2005, and a developer on Sindome since 2006. Ours is heavily modified, we have roughly 70-80 players online a lot of time time and dozens of people have developed the game over 20+ year run. We've got a ton of best practices and design patterns that we implement in order to keep the MOO happy and healthy. I've attempted to distill as much of that into this document while at the same time present the document in a more up to date format.

Text based gaming is an important part of our history and our future. No game is more accessible to those with handicaps, for example.

Come visit me on Sindome if you dare :)

-- Brendan / Slither / Fengshui