WinMOO Frequently Asked Questions

Important Links

Q & A

Q. What is WinMOO?

A. WinMOO is a Win32 version of the LambdaMOO server. It runs on modern Windows platforms. It is currently based on LambdaMOO 1.8.0p6.

Q. What do I need to run WinMOO?

A. You need a modern Windows: that is, Windows NT, Windows 95 or later.

Q. Who maintains WinMOO?

A. It is not actively mantained. Christopher Unkel made the relatively minor changes necessary to port WinMOO from the UNIX version to Win32.

Q. What do I need to do to get a WinMOO server up and running?

A. The following list should serve as a set of minimal setup instructions:

  1. Retrieve the latest version of WinMOO. You can get it
  2. If this is the first time you've retrieved WinMOO, drop Chris Unkel an email if you would like.
  3. Read the readme.txt and the WinMOOChangeLog.txt files for information about the current version of the WinMOO server. You should also read the ChangeLog.txt, which contains version information about the LambdaMOO server on which WinMOO is based.
  4. You need a database. If you don't already have one, you might start with LambdaCore or JHCore.
  5. Create a directory somewhere and unzip the contents of the WinMOO zip file there. Also put your database there.
  6. In order for the built-in function ctime() to work properly, you need to set the "TZ" environment variable. The format for the TZ variable is tzn[+|-]hh[:mm[:ss]]dzn where:
    • tzn is the three-letter time-zone name, such as PST or EST.
    • hh, mm, and ss are the difference in hour, minutes, and seconds between local time and coordinated universal time. (This may be preceeded by a + or -.) For example, 8 for pacific time or 5 for eastern time.
    • dzn is the three-letter daylight-saving-time zone. If daylight saving time is never in effect, omit this.

    The best way is probably to set it in your AUTOEXEC.BAT (or AUTOEXEC.NT under NT, thanks to Brian Robke for this information). For example:
    set TZ=EST5EDT
    set TZ=PST8PDT
    Obviously, you should replace time zone names with the appriopriate characters for your time zone. (The server should get the actual time correct in any case; the correction for the timezone is based on settings in the Date/Time control panel. The name of the timezone, however, depends on the environment variable.)
  7. WinMOO is a console application, and runs from a command prompt (except the service version; see below.) WinMOO takes the same arguments to begin as a LambdaMOO, namely:
    winmoo <old-database> <new-database> <port>
    Redirecting the output doesn't work; if you want to save your log in a file, use the -l <logfile> option to specify that option. Log output will be sent both to that file and the console window.
    If you would like to enable outbound network connections, you must add the -o option to the command line:
    winmoo -o <old-database> <new-database> <port>
    Think very carefully before enabling outbound network connections; they could represent a serious security risk in some situations.
  8. Once WinMOO announces that #0 is listening on the port you selected, your MOO is running. Connect to your machine with your favorite client and start working.

Q. Is there a mailing list for discussion of WinMOO?

A. No mailing list is currently active.

Q. What about FUP (File Utilities Package) support?

A. FUP is now supported through the plug-in interface, and a FUP plug-in is distributed with WinMOO.  To use it, add a -p flag when you invoke the server:
  winmoo -p fup.dll my.db 8888

Q. How about running as an NT service?

A. That is supported as well.  You can get the binaries for the NT service version here.  Here is a set of very minimal instructions:

  1. Unpack the zip somewhere.
  2. Run WMSE.exe, the "WinMOO Service Editor".  Click add.
  3. Fill in all the fields; use full path names. The fields should be self-explanatory; you can leave fields blank if appropriate. The startup routine field is an optional path to a dll containing code that executes at the very beginning of server startup. wmoostartup.dll contains such code that is very similar to the code in the restart script distributed with the LambdaMOO server (read the source for details.)
  4. Click OK. WMSE will create an NT service named "WinMOO foo Service", where foo is the service name you entered.  You can control service startup/shutdown from the Services control panel.

If your service doesn't start, try checking either the logfile you specified, or the System Event Log.

Q. Can I read information about the current version without downloading the whole thing?

A. Yes. You can read the current WinMOO changelog here.

Q. Is the source code for WinMOO publicly available?

A. Yes. You can get the source code, (as a collection of Visual C++ 6 projects/workspaces) here.

Q. What are some other MOO resources?

A. Try the MOO-Cows FAQ.

Q. When I take my database written by WinMOO, and try to load it into a LambdaMOO server under Unix, it doesn't work. What's going on?

A. Most likely, your database contains CRLF sequences (the Windows sequence) as the line-termination character, rather than the straight LF that Unix expects. Probably this manifests as log messages that include something like "*** DBIO_READ_NUM: Bad number:". You need to remove the CRs.

There are many ways to do this. One is to FTP the file from the Windows machine to the Unix machine in ASCII rather than binary mode, which will perform appropriate translation of end-of-line sequences. Another is to strip out the CRs, e.g. with:

tr -d '\015' < foo-crlf.db > foo-lf.db

Q. Are there other options for running a LambdaMOO server on Windows?

A. Yes. The stock LambdaMOO server will compile and run using Cygwin, complete with forked checkpoints. There are even mechanisms for running Cygwin programs as Windows services. (When WinMOO was ported, Cygwin wasn't nearly so good.)

Q. Why aren't there any more questions?

A. Because.

Last modified 10 July 2016