Matt Chatterley <matt.chatterley@gmail.com> wrote:
> Simply put - do I go with a custom client, or implement a telnet
> interface?
I've been lurking this list for a while now, this is something I
find myself considering as well. I recall playing a MUD once that
used extra VT100 escapes if you indicated that your client could
support them. This put a status bar at the bottom of the screen,
rather than having a conventional prompt.
I'm not sure how good the client support is with these escapes, but
there are things like (ESC)[x;yH (cursor to row x, column y) and
(ESC)[2J (clear screen). (ESC) means char 27, the escape
character. A google for "ANSI Escape Sequences" turns up several
lists.
The telnet protocol supports character-at-a time input, rather than
line-at-a-time as an option. I've been considering using this to
allow players to have arrow-key movement or similar, but you need to
negotiate with the client to get this to work (see RFC 854 - Telnet
protocol -
http://www.faqs.org/rfcs/rfc854.html and RFC 1184 -
Telnet Linemode Option -
http://www.faqs.org/rfcs/rfc1184.html). I
found that windows telnet does character at a time by default, linux
telnet you have to press Ctrl-], then enter 'mode character' at the
prompt, but then it works. I doubt that many MUD clients would
support this, as then alias parsing is imposssible.
But by using the move cursor escapse sequence, you could draw things
like minimaps in the corner of the screen.
Your mixed approach is the one I'm planning to take, as I am yet to
find a telnet client that can support all the ANSI escapes I need
(colour, move cursor, etc.), can display the ASCII character set
properly (seems just about impossible to find one that does) and
support disabling the linemode as per RFC 1184. So my plan will be a
compatability mode (use things like '@' for the player, instead of a
char 1 or 2 smiley-face) and a mode that my client will support.
Most of the features you mention could be supported with creative
use of escape sequences, such as the map. A really good telnet
client, coupled with the character at a time mode and the 'rebind
key' escape sequences could do almost everything you want.
Hope that helped somewhat.