VMoo Protocol Specification

Temporary version!

This document isn't finished yet.

it's available to make it already possible to experiment with VMoo support

Usage of this is (as is all usage of VMoo) at your own risk!

1. Contents

  1. Contents
  2. Introduction
  3. MCP Multiline usage in VMoo
  4. Packages supported by VMoo
  5. Standard Packages
    5.1. MCP basic packages
    5.2. dns-org-mud-moo packages
    5.3. Other packages
    5.3.1 dns-nl-dds-external
  6. VMoo packages
    6.1. Dns-nl-vgmoo-userlist
    6.2. Dns-nl-vgmoo-client
    6.3. Dns-nl-vgmoo-pages
  7. VMoo packages
    7.1 Dns-com-vmoo-userlist
    7.2 Dns-com-vmoo-client
    7.3 Dns-com-vmoo-pages
    7.4 Dns-com-vmoo-dialogs
    7.5 Dns-com-vmoo-mmedia
    7.6 Dns-com-vmoo-multiplex
    7.7 Dns-com-vmoo-presuffix
  8. Definitions

2. Introduction

3. MCP Multiline usage in VMoo

Many of the dns-nl-vgmoo and dns-com-vmoo packages use/abuse the power of the MCP Multine messages to send data with a minimal overhead at the moo. Most default Moo implementations of the MCP/2.1 specification assume that multiline messages should be threated as 1 long message, while VMoo has the abbility to threat every line of a multiline message as a separate light weight message. (Multiline data lines use far less data and processing than ordinary MCP lines.)

Most MCP implementation can use this feature with only minor changes.

E.g. the dns-nl-vgmoo-userlist package uses a single MCP multiline message to continuously update the activity status of all connected players.

4. packages supported by VMoo

VMoo supports the following packages:

mcp-negotiate 1.0 - 2.0 VMoo 1.2+
dns-org-mud-moo-simpleedit 1.0 VMoo 1.5+ (1.2 has a dot bug in the implementation)
dns-com-awns-status 1.0 VMoo 1.2+
dns-com-ben-tfstatus 1.0 VMoo 1.2+
dns-nl-dds-external 1.0 VMoo 1.5+
dns-nl-vgmoo-client 1.0 VMoo 1.2-1.3 (Alias for dns-com-vmoo-client from 1.4)
dns-nl-vgmoo-pages 1.0 VMoo 1.2-1.3 (Alias for dns-com-vmoo-pages from 1.4)
dns-nl-vgmoo-userlist 1.0 VMoo 1.2-1.3 (Alias for dns-com-vmoo-userlist from 1.4)
dns-com-vmoo-client 1.0 VMoo 1.4+
dns-com-vmoo-dialogs 1.0 VMoo 1.4+
dns-com-vmoo-mmedia 1.0 VMoo 1.4+
dns-com-vmoo-multiplex 1.0 VMoo 1.4+
dns-com-vmoo-pages 1.0 VMoo 1.4+
dns-com-vmoo-presuffix 1.0 VMoo 1.4+
dns-com-vmoo-userlist 1.0 VMoo 1.4+

5. Standard Packages

5.1. MCP packages

5.2. Dns-org-mud-moo packages

5.3. Other packages

5.3.1 dns-nl-dds-external [1.0]

The following messages are defined:

dns-nl-dds-external-query() (Moo to Client)
dns-nl-dds-external-accepts(externals) (Client to Moo)
dns-nl-dds-external-exec(external [,info])
(Moo To Client)


Requests the client to send an accepts list.

dns-nl-dds-external-accepts(externals) (Client to Moo)

A message to tell the moo which externals are accepted by the client. Externals is a moo-list.

dns-nl-dds-external-exec(external [,info]) (Moo To Client)

A moo request for the client to initiate an external.

VMoo accepts the following externals:

External Description Meaning of info value
Browser Starts the default browser Url (Only http://, ftp:// and gopher:// are accepted for security reasons
Mail Starts mail reader To whom to write a message
News Starts news reader newsgroup including news:

6. VgMoo Packages

From VMoo version 1.5 onward the dns-nl-vgmoo packages are replaced by dns-nl-vmoo- packages with the same suffix. (For more information about implementing both packages in the same moo/client see dns-com-vmoo-userlist.)

6.1 dns-nl-vgmoo-userlist [1.0-1.1]

dns-nl-vgmoo-userlist-friends(friends [,added] [,removed]) (Moo to Client and vise versa)
dns-nl-vgmoo-userlist-gaglist(gaglist [,added] [,removed]) (Moo to Client and vise versa)

These messages tell which users should be threated as friends and which should be ignored. The list of all users which fall in the categorie must be sent as the friends/gaglist parameter. To help speeding up the process of handling this message a client/moo can use also the added + removed parameters (Whenever one or more of these two parameters are used, the receiver is allowed to ignore the full list parameter!)

If a moo doesn't support friends and/or gaglists, it should reply to this message with a message which undo's the first message.

All parameters are moo-lists.
(The client always stores the full list even when players aren't connected)

dns-nl-vgmoo-userlist-icon-url(url) [Package version 1.1 and above] (Moo to client)

With this message a moo is able to provide it's own icons to clients which support http connections. When a client supports this option (And it is enabled), it will use this image instead of the default name assigned icons.

dns-nl-vgmoo-userlist( fields*, icons*, d*)

Normally, only one message of this type is used. (Actually only 2/3 of a message is sent).

After the initial line

#$#dns-nl-vgmoo-userlist 1234 fields*: "" icons*: "" d*: "" _data_tag: 5678
(1234 and 5678 are generated values as specified by the MCP/2.1 specification)

the message is kept open to send updates as easy as possible.

First a fields line must be sent. (Only one line of this type is allowed per message!)

#$#dns-nl-vgmoo-userlist <~H=H, icons*: "" fields*: "" d*: "" _data-tag: h0+PE3
#$#* h0+PE3 fields: {"Object", "Name", "Icon", "Connect Time", "First Connect Time"}
#$#* h0+PE3 icons: {"Newbie", "Inhabitant", "Inhabitant+", "Schooled", "Key", "Star", "Wizard"}
#$#* h0+PE3 d: ={{#200, "Capi", 7, 941903426, 923400345}}
#$#* h0+PE3 d: <{#200}
#$#* h0+PE3 d: +{#444, "Mr.Ebou", 6, 921703426, 923400360}}

As usually, MCP lines with errors are ignored.


This message provides a context menu (A client is free to ignore some or all items).

The menu is provided as a moo list which can contain the following items:

0 (integer value). This value defines a menu separator

{description, command} A menu option called description (The character & is used to define the shortcut. && is a literal &) which executes command.

In command and description $(x) is converted to UserInfo[x] (When x is a positiveinteger) or a newline when x is 'n'.


{{"&Look $(2)", "look $(1)"}, 0, {"&Info $(2)", "info $(1)"}, 0, {"&Wave $(2)", "wave $(1)"}, {"I&nvite $(2)", "invite $(1)"}} 

6.2 dns-nl-vgmoo-client [1.0-1.0]

dns-nl-vgmoo-client-screensize(cols, rows)


This message prepares the client for the disconnect event from the moo. It requests the client not to auto-reconnect when the connection is closed.

(VMoo ignores this message when it's send more than 5 seconds before disconnecting)

6.2 dns-nl-vgmoo-pages [1.0-1.0]

dns-nl-vgmoo-pages-receive(from, msg)

This message is sent when a page (moo user to user personal message) is received. The page origintates from from (moo-object defining a player as an object from dns-nl-vgmoo-userlist). msg is a moo-list containing the lines of the message.

dns-nl-vgmoo-pages-send(to, msg)

This command send a page to to (A moo object or a name/alias). (to must accept user objects from dns-nl-vgmoo-userlist). Msg is just an ordinary string. (Not a moo string)

7. VMoo Specifieke Packages

7.1 dns-com-vmoo-userlist [1.0-1.1]
7.2 dns-com-vmoo-client [1.0]
7.3 dns-com-vmoo-pages [1.0]

From VMoo 1.5, the dns-nl-vgmoo prefix is abandoned and replaced by the dns-com-vmoo prefix.

To provide some level of compatibility VMoo wil support the old prefix in the following versions (Until VMoo 3.0 or so)

When a moo / client implementation needs to provide both interfaces the following rule should be applied:

- When both dns-nl-vgmoo-<package> and dns-com-vmoo-<package> are available the support of dns-nl-vgmoo-<package> should be disabled (Send no messages, ignore received messages)

For more information about the packages:
6.1. Dns-nl-vgmoo-userlist
6.2. Dns-nl-vgmoo-client
6.3. Dns-nl-vgmoo-pages


7.4 dns-com-vmoo-dialogs [1.0]

This package will be documented here when the first VMoo is available which supports this package.

7.5 dns-com-vmoo-mmedia [1.0]

(This package supports audio+visual moo->Client data)

This package will be documented here when the first VMoo is available which supports this package.

7.6 dns-com-vmoo-multiplex [1.0]

(This package supports multiplexing several data screens connected to 1 moo)

This package will be documented here when the first VMoo is available which supports this package.

7.7 dns-com-vmoo-presuffix [1.0]

(Advanced out of band version of standard PREFIX and SUFFIX moo commands. Probably needs server hacks!)

This package will be documented here when the first VMoo is available which supports this package.

8. Definitions