Register to post in forums, or Log in to your existing account
 

Play RetroMUD
Post new topic  Reply to topic     Home » Forums » CMUD General Discussion
orphean
Apprentice


Joined: 21 Oct 2008
Posts: 147
Location: Olympia, WA

PostPosted: Mon Aug 01, 2011 9:45 pm   

Simutronics XML Stream Program Suggestions
 
It's every Simu playing Cmudder's favorite time again: the biannual stormfront xml stream thread!

This comes up every so often. Basically the problem is that there are technical reasons why we can't just add MXP entities for all the stormfront tags and have CMUD use those (CMUD doesn't support single tags, impossible to override built in system entities, etc). So the approach has been to use triggers to capture the xml stream and transform it into something CMUD can work with. This approach also always seems to stall out due to the complexity of doing that and can have some performance issues transforming the xml stream.

This go around I'm trying a different approach: I've written a program that acts as a mediator between the Simu xml feed and CMUD (creatively called SimuMediator for the moment, maybe that should be CFront or something). Right now I have the program in a state where CMud can connect to it, then the program initiates the connection to the Simu servers, logs the player in, and essentially sets up a pipe between the Simu game and CMUD.

Right now it's not that much different than what you'd get if you set CMUD up to accept the XML stream with the sole exception being that SimuMediator handles the authentication and not CMUD. However, since the program is receiving data from the game and then sending it to CMUD we can modify the data before CMUD ever sees it.

At first I was thinking to just transform the XML into a valid MXP stream and leave it at that. But I wanted community input because there's lots of stuff we can do. I am leaning towards sending GMCP messages for a lot of this stuff rather than just MXP tagged crap we'd have to capture and store. Obviously formatting tags like push/popBold, link tags, etc are good candidates for direct MXP translation.

But how would you guys like this to work? Do you want it to send MXP gauges and stuff to autocreate them? If it's not too much trouble any input would be really appreciated.

And as a final thought I'd just like to stress that this program exists and is working right now and is at the point where the transformation code needs to start being written. I don't want another vapor solution for the stormfront xml feed! I will get this in place if it kills me and if I truly cannot keep working on it I'll release the source.
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4691
Location: Pensacola, FL, USA

PostPosted: Tue Aug 02, 2011 4:30 am   
 
I always wanted to see it make a bunch of windows to display the layout, much like stormfront, but then you need to take resolution options into consideration. And mostt of us who use CMUD use it for the control it offers in making a unique layout. For the same reason I would just as soon make my own gauges, I just want the various data forms easier to access.

I'd like to see the more complex %gsl()s (like for wounds and such) to be broken into a easier to read configuration.
I would like a more efficient measure of when RT is %null
I would like the MXP links for personal items to be editable to include scripts on the item. (make it a permanent trigger instead of just on the fly all purpose one)
And I would LOVE to find a way to emulate the click and drag between containers bit.

I also want some sort of security that a middle-man program isnt gonna try to keylog and/or hack into my account. No offense.
_________________
Discord: Shalimarwildcat
Reply with quote
orphean
Apprentice


Joined: 21 Oct 2008
Posts: 147
Location: Olympia, WA

PostPosted: Tue Aug 02, 2011 5:18 am   
 
Quote:
I always wanted to see it make a bunch of windows to display the layout, much like stormfront, but then you need to take resolution options into consideration. And mostt of us who use CMUD use it for the control it offers in making a unique layout. For the same reason I would just as soon make my own gauges, I just want the various data forms easier to access.


I'm the same way. The approach I've started on is sending useful information CMUD can easily process on its own. MXP and GMCP are up and running and I'm using GMCP to send most of the informational stuff leaving MXP for mostly presentation (though I am putting MXP tags around the Room name, exits, desc, prompt, etc for the mapper). What's nice about using the Stormfront XML feed is that we get ALOT more information than the older approach CMUD uses natively.

Quote:
I'd like to see the more complex %gsl()s (like for wounds and such) to be broken into a easier to read configuration.

Other than the initial authentication the stormfront feed doesn't use GSL codes for anything. They just aren't sent by the server. I've been using GMCP to pass this information into CMUD. For example, the older %gsl(q) is now %gmcp.simu.prompt.time

Quote:
I would like a more efficient measure of when RT is %null

This is difficult because even in the XML stream they don't send anything when the round time is over. We get a roundtime tag to let us know it's started but that's it. We'll just have to trigger off %gmcp.simu.rt.time and synchronize it with %gmcp.simu.prompt.time. Not that much different than now I'm afraid (ie, %gsl(Q), %gsl(q) )

Quote:
I would like the MXP links for personal items to be editable to include scripts on the item. (make it a permanent trigger instead of just on the fly all purpose one)

I haven't looked into the item/inventory XML tags yet but if they're anything like the rest of it then I'll just expose this information and you can trigger off it to add your own MXP menu.

Quote:
And I would LOVE to find a way to emulate the click and drag between containers bit.

Well we would need Zugg to let us do that via zScript somehow. This can expose the information and send commands stuff but in the end it's still CMUD we're running in.

Quote:
also want some sort of security that a middle-man program isnt gonna try to keylog and/or hack into my account. No offense.

No offense taken it's a very valid concern. I'll just release the source when I release this. Then if you're paranoid enough you can compile it yourself after code review. For the record I would never do such a thing and would encourage anyone concerned to use Wireshark or similar tools on the released binary to confirm this.

Thanks for the feedback.
Reply with quote
orphean
Apprentice


Joined: 21 Oct 2008
Posts: 147
Location: Olympia, WA

PostPosted: Tue Aug 02, 2011 6:38 am   
 


Just thought I'd show what we're looking like after a day's worth of work. The most obvious thing is that we have meaningful gauges. The gauge data is transmitted over GMCP, neat! All the death, logon/logoff, etc is sent as GMCP messages as well but I'm not putting them into windows yet. You can see some of the mxp working, the exit line is linked, there's the use of the bold tag. The prompt is being MXP tagged as the prompt for the mapper via a custom mxp entity that's auto-set.

I'm pretty pleased so far. Will try to get the rest of the tags done tomorrow.
Reply with quote
orphean
Apprentice


Joined: 21 Oct 2008
Posts: 147
Location: Olympia, WA

PostPosted: Wed Aug 10, 2011 3:19 pm   
 
This is going really well. The program is now sending a valid mxp stream to Cmud and using GMCP to pass information like thoughts, logons/logoffs, deaths, stats, status, etc. It's pretty much perfectly playable now. I'm creating a package I'm going to upload to the library that when used in conjunction with the program will provide more or less all the same features of Stormfront out of the box. For those folks who'd rather roll their own stuff the package is optional but you'll have to setup everything on your own.

Still have some debugging and polish to do but going good.
Reply with quote
Display posts from previous:   
Post new topic   Reply to topic     Home » Forums » CMUD General Discussion All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© 2009 Zugg Software. Hosted by Wolfpaw.net