Paradigm MUD Forums

GreaterMUD Discussion => GreaterMUD => Topic started by: Harry Mudd on November 26, 2007, 06:24:10 PM

Title: Ghosting
Post by: Harry Mudd on November 26, 2007, 06:24:10 PM
I dont know if this topic has been brought up, but will post assuming if it has, then this topic can be deleted or moved.

I noticed that when you die, you will most often ghost, meaning the com portion of the send/receive routine isnt checking DTR (data terminal ready) to ensure carrier hasnt been dropped. The game thinks you are still there when in fact you are not. When I programmed telecommunication, a dtr check was done between sending every byte. I would imagine that may be a bit too often for multi-user data base of this size but dtr should be checked on each line on a periodic basis to assure integrity. A line status is normally ultra-fast unless the language being used it really slow in enterpretation to the processor.

Harry

Title: Re: Ghosting
Post by: Vitoc on November 26, 2007, 06:31:48 PM
Quote from: Harry Mudd on November 26, 2007, 06:24:10 PM
I dont know if this topic has been brought up, but will post assuming if it has, then this topic can be deleted or moved.

I noticed that when you die, you will most often ghost, meaning the com portion of the send/receive routine isnt checking DTR (data terminal ready) to ensure carrier hasnt been dropped. The game thinks you are still there when in fact you are not. When I programmed telecommunication, a dtr check was done between sending every byte. I would imagine that may be a bit too often for multi-user data base of this size but dtr should be checked on each line on a periodic basis to assure integrity. A line status is normally ultra-fast unless the language being used it really slow in enterpretation to the processor.

Harry
Thanks for the detailed feedback.

It is definitely a bug, but in this case the bug is actually in the GreaterMUD module.  The TGS Windows app actually shows the person hanging up (and removes them from the online users list), but the GMUD module isn't properly removing them when this event fires.  It's something I must have overlooked when I recently updated GMUD to use the new TGS.  I'll try to get a fix in by the end of this week, but I've already got a major change to the abilities system in progress and can't even compile until I get that finished, so it might take a bit longer.
Title: Re: Ghosting
Post by: The Crazy Animal on November 26, 2007, 06:35:12 PM
If this bug looses you too many lives to recover in 1 level let me know and I'll give you a few to make up for it.
Title: Re: Ghosting
Post by: Ian on November 27, 2007, 02:58:04 AM
DTR??  Dude, no one uses serial communication anymore!  ;D  You probably wanna check something more like socket.isConnected()
Title: Re: Ghosting
Post by: Vitoc on November 27, 2007, 05:35:54 AM
Quote from: Ian on November 27, 2007, 02:58:04 AM
DTR??  Dude, no one uses serial communication anymore!  ;D  You probably wanna check something more like socket.isConnected()
Yeah, fortunately most (not all) of the lower level socket stuff is handled for you in the kickass classes in the System.Net namespace in .NET.  You still have to deal with telnet handshaking (DO/DONT/WILL/WONT/IACs) and ANSI on your own, but the Socket class is pretty good about noticing incoming and dropped connections with nice clean events to hook into.