[MUD-Dev] common server design
Caliban Tiresias Darklock
caliban at darklock.com
Tue Jun 24 16:49:30 New Zealand Standard Time 1997
Chris Gray wrote:
> :I think the command set is
> :something that really ought to be defined by someone other than the guy
> :writing all the internals of the code.
> To a certain extent, yes. But, the facilities available in the server
> will influence what make sense in designing the way in which things like
> rooms, objects, commands, etc. are put together.
However, this also results in the commands being fitted to the server
the user. The user has to use the commands, so the user should be the
concern in designing a command structure.
> Doing that stuff while ignoring what the server is like is bound to run into
That viewpoint basically hammers a fundamental theory of object-oriented
programming, which is that no part of the program should rely upon any
or assumptions regarding the rest of the program. If OOP is appropriate
MUD server, then OOD should also be appropriate. You design each object
the four groups mentioned previously (user interface, command interface,
interface, and game system) as though anything whatsoever could be
> If you
> have a concept of separate "exits" (I don't), then any support in the
> server for them should be considered, and vice versa.
If you have no concept of anything, the server must by necessity support
intuitive and understandable method of describing in an effective
something that the developer would never in a million years have thought
It's the 'intuitive and understandable' parts which bog down some
> You can't do the
> two completely separately, since the base of the scenario is dependent
> on the server and what it does well.
I expect the server to have a very broad but well-defined goal, which is
text-based multiplayer online games that are easy to interact with.
goal, certain types of games (Quake, chess, connect four, poker,
search puzzles, crosswords, etc.) won't really be appropriate. Neither
potential applications (operating systems, device drivers, compilers).
am sure some weirdo somewhere is going to complain he can't use RPC in
mobprogs, I don't think that necessarily means we need that in the
> :I also like to think that a significant number of us are pretty tired of
> :crap and would rather write something really cool.
> Certainly, but I think it is unwise to equate "cool" with "useful". In
> real life, the best way to do something may not be cool at all.
If you're trying to create something cool, then the best way to do it is
definition something cool. QED. There will obviously be some limitations
restrictions the final server inherits -- try to be everything to
you end up nothing to nobody -- but I'm really hoping we can create
that will flatten the learning curve without overly diminishing the
my opinion, that's pretty cool *and* pretty useful. You may disagree, of
since that's your prerogative.
Another point might be that there is a lot of useful crap out there,
of the most horrendous misfeature of a server you have ever seen in your
(no, I don't have anything in mind, but I'm sure it's not hard for you
to come up
with one) and I can almost guarantee that someone out there is using it
for something. If nothing else, *you're* using it as an example. ;)
> :I often see a sentiment expressed on this list...
> The fact that someone doesn't intend to be totally driven by the demands
> of "users" doesn't mean that person isn't interested in what users and
> other implementors have to say. Quite the contrary, I would say.
I usually see that sentiment expressed when someone says "I don't like
you did that and I would rather see it done differently". (Of course, if
disagreement is expressed by saying "That sucks, you moron, do this
then I can see a little outrage being perfectly appropriate.) When
they don't like what you're doing, particularly if they have a
logical alternative, it generally indicates at least the *possibility*
really are doing it wrong.
The willingness of people to believe that my example of a pathologically
command line for a game server was a *recommendation* pretty much
people's expectation that a game server's command syntax will be
cryptic. This arises mainly from the lack of external input, I think;
things I find intuitive, and things other people find intuitive. Since I
longtime gamer, experienced programmer, and network administrator...
I would find something 'intuitive' where many other people would find it
plain confusing. I might, for example, think that a good syntax for
object inherit another objects properties is by using a command like
create child uses parent
But someone else could look at this and get confused. Obviously, the
among us will likely think this is perfectly logical, although an
certainly be made for 'extends' instead of 'uses'. Someone else might
have the commands separated -- for example, 'create child' and 'link
child parent'. Other people will of course have different ideas. But the
both approaches is that it isn't really descriptive of the parent/child
relationship, and doesn't spring to mind instantly when trying to make
object the same as another object.
Which is why I like the idea of getting together in a sort of round
discussion about what makes a game server's command interface good or
how it could be made better. That way, even if the discussion goes
straight to hell and degenerates into flamage, we see some other
people's opinions. We should
all at least get one or two ideas from this sort of discussion, since
someone just says 'a command like X sucks' you might think of a way to
fix it or
a new command that doesn't suck.
More information about the MUD-Dev