[vworld-tech] Modern MUD server design
Brian Hook
hook_l at pyrogon.com
Thu Jan 22 12:56:18 PST 2004
> You don't have to stress yourself out so much. A sampling of MUD
> servers source code that's available will quickly show you that
> apparently no MUD developer has ever implemented full telnet spec
> compatibility.
I'm just trying to figure out the minimum expectation. For example,
Cygwin telnet (which I'm assuming is identical to Linux's telnet)
broadcasts ^H, which I had assumed any decent, unshitty line-oriented
implementation would have handled.
> Most usually provide an echo on/off packet, but do
I assume the default is to request local-echo on?
> This is why, for example, old versions of NCSA Telnet for the
> Macintosh would not connect to any existing Diku, Circle, or Merc
> MUD (to name a few variants) - it waited for a response to it's
> IAC's.
Heh, well, I can imagine that. Sad that hasn't been fixed in any of
the servers.
> Just provide a bottleneck command-processing function (er, player
> input), and a standard bottleneck to output, and then you should be
> able to modularize your input/output well enough that it doesn't
> matter what you hook on to it as far as clients.
That's the plan. Right now the kernel gathers input, strips out
non-printing characters, then hands the buffer + socket to Lua, which
appends it to a queue where it can handle actions during the tick()
phase (I decided to do that just to make it cleaner instead of having
two separate command processing dispatch sources).
> This is true. The current version of the GPL specifically does not
> cover the rights of a network user, but only refers to a User,
> defined as ... I'm too lazy to look it up, but the person who
> actually assumes responsibility for executing the code and/or
> making changes to it.
Yeah, I'm not too stressed about it. I figure in a best case scenario
I develop The Most Bitching Commercial MUD Codebase EVAR!!11 and I get
a bunch of licensees, and since they'd get source, screw it, I'm still
covered.
Then again, looking at PostgreSQL, I may switch now, since it actually
looks like the docs are better than MySQL's, and I like their emphasis
on robustness even if it means slower theoretical performance.
Also, the traffic characteristics of a MUD are probably radically
different from that of a Web page (e.g. in my architecture I'm looking
at a single connection, not a bunch of temporary connections).
> What I'm pointing out is that if you want to provide continually
> changing _dynamic_ content, you're going to want to provide a
> scripting language that is as easy as possible to use for the
> potentially non-technical guys out there that will be doing your
> area design, or creating new monsters, or what have you.
Actually, I would argue that what is far more important are tools, not
the scripting language. If you look at a typical MMOG or even single
player RPG, while there may be a lot of scripting, it's often
black-boxed and the bulk of the content consists of data entry.
Speeding up and optimizing data entry is what I'm mainly focusing on,
ideally with a Web and/or builder client where you can trivially do
stuff like "Make me a sword like this one", enter some fields, then
hit "Publish" and you're done and it's in the game.
> fastest way to get that done is to write a _good_ building tool,
> and release it on trusted level creators.
Yes.
Brian
More information about the vworld-tech
mailing list