11 Apr, 2009, Kayle wrote in the 1st comment:
Votes: 0
Title says it all.

What is ZMP? Maybe I missed it somewhere, and maybe this is a rather "n00b" question to ask, but seriously, what is it? What's it for? what's it do? What can you use it for? etc…
11 Apr, 2009, David Haley wrote in the 2nd comment:
Votes: 0
In short, ZMP is a framework for sending commands and arguments. It is essentially a basic communication protocol. The "interesting" functionality of ZMP is not defined by the core protocol itself, but by the packages that get defined on top of it.
11 Apr, 2009, elanthis wrote in the 3rd comment:
Votes: 0
Think of MXP or Pueblo or MCP, only without the overly complex parsing/escaping rules and add in user-extensibility.

It's a sub-protocol for TELNET that lets the server and client send messages back and forth hidden form the normal stream of user input/output for the purpose of supporting features that TELNET itself does not offer, such as controlling GUI elements among other things.

In a way you can think of it as a _very_ simplified COM+/CORBA-like protocol made specifically for TELNET-based applications like MUDs.
11 Apr, 2009, Kayle wrote in the 4th comment:
Votes: 0
Well that makes sense then. It's a way to expand functionality of custom clients then?
11 Apr, 2009, David Haley wrote in the 5th comment:
Votes: 0
Well, clients that implement ZMP and that either implement packages themselves, or make it easy for people to write plugins/triggers/whatever to implement the packages.
12 Apr, 2009, Kelvin wrote in the 6th comment:
Votes: 0
What kind of clients support ZMP?
12 Apr, 2009, elanthis wrote in the 7th comment:
Votes: 0
Any kind of client that wants to? ;)

Only a small handful of clients have ZMP support right now. All the ones I know of are listed on the ZMP page. Adding ZMP is very easy for any properly written client, though. Most of the real work comes from implementing the specific commands.
12 Apr, 2009, Kelvin wrote in the 8th comment:
Votes: 0
Where is this page? The hostname zmp.awemud.org or whatever isn't resolving. Shows one of those domain parked pages.
12 Apr, 2009, Les wrote in the 9th comment:
Votes: 0
Kelvin said:
Where is this page? The hostname zmp.awemud.org or whatever isn't resolving. Shows one of those domain parked pages.


http://zmp.sourcemud.org/ is the current spot for it.
27 Apr, 2009, Scandum wrote in the 10th comment:
Votes: 0
Are there any servers that support zmp? (for debugging purposes)
27 Apr, 2009, Les wrote in the 11th comment:
Votes: 0
elanthis' sourcemud supports it.

For basic testing I use Mud Client Test Server which you can grab from http://code.google.com/p/soiled/source/b... (Self contained source file, a quick compile and you have the program).

The latter is especially useful for testing proposed packages and the like as it lets you easily send arbitrary zmp commands from the server to the client.
27 Apr, 2009, Scandum wrote in the 12th comment:
Votes: 0
There's not a single live server with ZMP?
27 Apr, 2009, David Haley wrote in the 13th comment:
Votes: 0
My development server has a basic implementation, but it's not available to connect to.

The thing is that "supporting ZMP" is a pretty nebulous property; the more interesting bit is which packages are supported.
27 Apr, 2009, elanthis wrote in the 14th comment:
Votes: 0
To my knowledge, no, there are no public servers with ZMP support. I had the AweMUD demo server running for some years, but that's been down ever since I discontinued AweMUD – the Source MUD demo will have support once I bother to get it up and running.
27 Apr, 2009, Scandum wrote in the 15th comment:
Votes: 0
Looks like zmp support is broken for sourcemud, I get the following error when sending IAC DO ZMP:

Connection from ('127.0.0.1', 50910)
Disconnecting ('127.0.0.1', 50910)
[ERROR] EXCEPTION:
Traceback (most recent call last):
File "/usr/lib/python2.5/asyncore.py", line 68, in read
obj.handle_read_event()
File "/usr/lib/python2.5/asyncore.py", line 390, in handle_read_event
self.handle_read()
File "/home/Scandum/progs/muds/sourcemud-0.0.2/src/sourcemud/server.py", line 55, in handle_read
self.onRead(bytes)
File "/home/Scandum/progs/muds/sourcemud-0.0.2/src/sourcemud/telnet.py", line 128, in onRead
self.sendZmp('zmp.ident', ['Source MUD'])
File "/home/Scandum/progs/muds/sourcemud-0.0.2/src/sourcemud/telnet.py", line 210, in sendZmp
self.outBuffer.append(IAC)
AttributeError: 'str' object has no attribute 'append'
27 Apr, 2009, Scandum wrote in the 16th comment:
Votes: 0
No luck with teensyMUD on Cygwin either.

> ruby tmud.rb       
09-04-27 14:54:34 [ INFO] (YamlStore) Loading world…
09-04-27 14:54:34 [ INFO] (YamlStore) Database 'db/world.yaml' loaded…highest id = 1.
09-04-27 14:54:34 [ INFO] (Command) Loading commands…
09-04-27 14:54:34 [ INFO] (Command) Done.
09-04-27 14:54:34 [ INFO] (World) Starting Timer…
09-04-27 14:54:34 [ INFO] (World) World initialized.
09-04-27 14:54:34 [ INFO] (EventManager) Event manager starting…
09-04-27 14:54:34 [ INFO] (Engine) Booting server on port 4000
09-04-27 14:54:34 [FATAL] (Acceptor) Caught Errno::EINVAL: Invalid argument
./lib/network/acceptor.rb:38:in `setsockopt'
./lib/network/acceptor.rb:38:in `init'
./lib/network/reactor.rb:83:in `start'
./lib/engine/engine.rb:98:in `run'
tmud.rb:87
09-04-27 14:54:34 [FATAL] (Engine) Engine failed in run
09-04-27 14:54:34 [FATAL] (Engine) Caught RuntimeError: Unable to start server
./lib/engine/engine.rb:98:in `run'
tmud.rb:87
27 Apr, 2009, elanthis wrote in the 17th comment:
Votes: 0
That code (Python Source MUD) is abandoned and not even remotely tested or complete; thanks for reminding me to axe it from the site completely.
27 Apr, 2009, elanthis wrote in the 18th comment:
Votes: 0
I tossed up a test server from the latest git tip at sourcemud.org 4545. There are many, many bugs and incomplete bits in there, I'm still not even half way through converting the old AweMUD code, and things like the removal of the garbage collector have left it a bit… unstable. The basic ZMP stuff should work fine for testing the wire protocol, though.
28 Apr, 2009, Scandum wrote in the 19th comment:
Votes: 0
That did the trick.

Next TinTin++ release will have a zmp event handler, and I wrote an example script to handle the core commands.

A few remarks:

1) Would make sense to add a check for xterm 256 color support.

2) zmp.sound "The second is a number specifying how many tenths of a second it should take for the music to be faded in from zero volume to full volume." Why not use a floating point number instead? So for a 1.5 second fade you'd use 1.5 rather than 15, which is far from intuitive.
28 Apr, 2009, David Haley wrote in the 20th comment:
Votes: 0
Using tenths of a second makes things easier to parse; we don't have to worry about intuition too much since this is all dealt with by programs.
0.0/25