06 Jan, 2013, Scandum wrote in the 41st comment:
Votes: 0
Heiko said:
Following example script demonstrates primitive MSDP support:

That's a good enough start I guess. The idea would be to parse the data and place it properly nested inside a Lua table, and raise an event for each variable.

KaVir said:
As excited as I am to see open protocol support in Mudlet, I don't think it's likely to see much use for MSDP. Most muds using MSDP have installed my snippet, which means they also support ATCP as a fallback option - and ATCP automatically handles negotiation and triggers events for you, as well as giving you access to the autoinstaller so that players don't have to manually install the script.

ATCP has no nesting support, which is a serious limitation. It's possible to work around it, like you do, but this results, imo, in ugly code that is harder to maintain, extend, and reuse.

I assume you could still use ATCP to autoinstall an MSDP script.

Heiko said:
Well, I'd still like direct C support better than Lua, but I agree that open protocol support is necessary as the community is growing smaller. We should join our forces wherever we can.

I might have a quick look to see if this will be easier. If you use custom code to handle GMCP it should be fairly easy to create an MSDP parsing version. If you use a JSON library it might be an option to create an MSDP clone of that library.
06 Jan, 2013, Heiko wrote in the 42nd comment:
Votes: 0
GMCP support in Mudlet only required a few lines of code using the library yajl for JSON decoding and encoding and the library lua-yajl as a Lua front end to generate appropriate Lua tables in the gmcp namespace.
http://lloyd.github.com/yajl/
https://github.com/brimworks/lua-yajl/
06 Jan, 2013, KaVir wrote in the 43rd comment:
Votes: 0
Heiko said:
1. I'm primarily interested in what is needed to have full open protocol support in Mudlet. Is this enough or do we need anything else?

Does the MSDPHandler() accept both negotiation and subnegotiation?

MUSHclient splits it into OnPluginTelnetRequest and OnPluginTelnet..., which I must admit I actually prefer, as it makes it easier to organise the code.

Scandum said:
I assume you could still use ATCP to autoinstall an MSDP script.

Yeah, I think you're right. When I posted last night I was thinking that it would cause a conflict, but thinking about it again this morning I'm fairly sure it would work - the script would need to renegotiate MSDP, but (at least with my snippet) once MSDP is enabled it should automatically override ATCP.
06 Jan, 2013, Rarva.Riendf wrote in the 44th comment:
Votes: 0
Quote
If the majority of MUDs consider MSDP easier to support than GMCP we shouldn't be a show stopper and support MSDP


Is there a snippet for GMCP ? A protocol is probably the most boring thing to implement, especially from scratch.
Even if I was not using a merc/rom base, I would look at Kavir code if I had to implement one, and just rewrite in in my prefered langage.
I will play with my Crystal Ball here, and say that I see MSDP rise because of KaVir snippet, and GMCP either stagnate or die with every mud using it closing for whatever reason.
06 Jan, 2013, plamzi wrote in the 45th comment:
Votes: 0
Rarva.Riendf said:
Quote
If the majority of MUDs consider MSDP easier to support than GMCP we shouldn't be a show stopper and support MSDP


Is there a snippet for GMCP ? A protocol is probably the most boring thing to implement, especially from scratch.
Even if I was not using a merc/rom base, I would look at Kavir code if I had to implement one, and just rewrite in in my prefered langage.
I will play with my Crystal Ball here, and say that I see MSDP rise because of KaVir snippet, and GMCP either stagnate or die with every mud using it closing for whatever reason.


You can have GMCP negotiation support with KaVir's snippet in about 5 min. You just have to add the same code that handles ATCP for channel 201. For example:

#define TELOPT_ATCP                    200
//add:
#define TELOPT_GMCP 201


From then on, actual implementation. We used the Aardwulf wiki but quickly outgrew it. Now we're about to start doing interesting things like partial group object updates and error-proof inventory manipulation.

I think your crystal ball is right in the sense that a lot of MUDs will just do whatever is made easiest by KaVir's snippet and will stop there. But I don't see GMCP dying at all. In fact, I see it being used by any MUD that wants to have a custom Web UI. That's because GMCP is practically JSON, and parsing it with JS is a breeze. Aside from web UI's, some of the biggest names in MUDs have already thrown their weight behind GMCP. So I think the most interesting protocol implementations will be in GMCP, even if MSDP is more widespread.
06 Jan, 2013, Rarva.Riendf wrote in the 46th comment:
Votes: 0
Quote
I see it being used by any MUD that wants to have a custom Web UI.

I don't ever expect mud to thrive on the brownser because with more and more powerful computers, html5, and 3d engine in the brownser, when surfing the web people will prefer those games instead of muds. Whatever fancy interface they have. (but thats just me).

Quote
So I think the most interesting protocol implementations will be in GMCP, even if MSDP is more widespread.

I do not doubt that for now, when on one side you have people wanting money out of it and being more dedicated to provide the best they can do. On the other side mostly hobbyist that take the easier path. Should a client cater to the biggest players or to the more numerous small one is entirely up to the client developpers.
Those small could become big as well, pushing MSDP (again only one doing the job on a weblclient is enough to have all the other being able to benefit from it). So suddenly you could have a majority of MSDP users. All because of someone like Kavir.

I have no vested interest in any of those protocol, I only choose the easier path for me, and it had been sending MSDP variables, not GMCP one.
06 Jan, 2013, KaVir wrote in the 47th comment:
Votes: 0
Rarva.Riendf said:
Is there a snippet for GMCP ?

No, half of the muds that added it are owned by IRE, and each of the others has their own implementation that differs slightly from the others. The problem is the specification is a vague draft, so most people end up copying another mud, like some weird game of chinese whispers.

plamzi said:
I think your crystal ball is right in the sense that a lot of MUDs will just do whatever is made easiest by KaVir's snippet and will stop there. But I don't see GMCP dying at all. In fact, I see it being used by any MUD that wants to have a custom Web UI.

These are the three main web clients I've been keeping an eye on the last few years:

1) FMud (which SlothMUD customised for its own web clie...): Supports MSDP, but not GMCP or ATCP.

2) DecafMUD: Originally called jMUD, it supported MSDP. I believe as DecafMUD it added ZMP, and I see there are references to CONQUEST, GMCP and ATCP, but it doesn't look like they're currently supported.

3) PHudBase: Supports only ATCP. I think this one is dead though :(

One other client (this one for the Android rather than a web client) I'm keeping an eye on is BlowTorch. It seems BlowTorch may be adding support for GMCP in the future, if so that'll be the first public client I'm aware of that only supports GMCP - in which case I may add a GMCP fallback for my snippet.

plamzi said:
Aside from web UI's, some of the biggest names in MUDs have already thrown their weight behind GMCP.

MSDP has some strong proponents as well.
06 Jan, 2013, Vadi wrote in the 48th comment:
Votes: 0
Okay - open protocol support in Mudlet was asked for, it now seemed relevant to add it, so it was delivered. Whoever said they'll adjust their MSDP code snippet for MUSHclient to work with Mudlet as well - can now do it. Mudlet thus can be extended to support MSDP and whatever else you come up with.
08 Jan, 2013, Vadi wrote in the 49th comment:
Votes: 0
Scandum said:
Is there MSDP / open telnet support in the planning?


Mudlet 2.1 added open telnet support, so tacking on new protocols is feasible now.
40.0/49