The Mercury MUD driver is a C++ network server for
extensible text-based multi-user role playing games. Players can
extend the game world on the fly (even while the game is running) via a
simple object-oriented C-like language.
Although a bit retro in these days of MMORPG's and FPS's, MUDs and
text-based adventure games still have a strong appeal to those
who are more interested in role playing and using their imaginations,
both as players and as game developers, than in eye candy and
caffeine substitutes. ;)
The Mercury driver is primarily designed as a scripting and extension language for
real-time interactive multi-user server applications. The canonical
application is the Multi-User Domain, or MUD, where a native code
driver provides the low level network and filesystem support and a
scripting language is used to define and describe the "world".
From the req.games.mud.misc FAQ:
|
A MUD (Multiple User Dimension, Multiple User Dungeon, or Multiple
User Dialogue) is a computer program which users can log into and
explore. Each user takes control of a computerized
persona/avatar/incarnation/character. You can walk around, chat with
other characters, explore dangerous monster-infested areas, solve
puzzles, and even create your very own rooms, descriptions and items.
|
|
Traditionally, the term MUD only applies to a text-based game,
similiar in spirit to text based adventure games of bygone years.
Although written from scratch, Mercury is very similiar in concept to
the LPMud driver (and its derivatives like Amylaar, MudOS, etc.) The
Usenet group
rec.games.mud.misc has a FAQ which
goes into detail about all the different styles and implementations
of MUD.
Okay, so why do "yet another MUD driver"? There are a couple of reasons:
- Although I'm a big fan of LPC and the LPMud drivers, they are definitely
a bit dated, IMHO. Mercury's scripting language is intended to have
a more modern look and feel, borrowing the best ideas from other
languages like LPC, C++, Java, Perl and whatever else we feel
like.
- Existing scripting/extension languages (like Perl, Python, etc.) either
don't give me the kind of control over security and resource management
that I want at the virtual machine level, don't have the features I
want or are too obscure or non-mainstream to be useful.
- I want to play around with some ideas for multi-player interactive fiction,
particularly non-player character AI and dynamic story lines (as opposed
to a static "kill the ogre, get the key, unlock the box, solve the quest"
type story telling.) To make it efficient and easy to use, a good deal
of support may be required in the extension language and virtual
machine themselves.
- As a pure computer science exercise, there is a certain attraction in developing
a virtual machine, a high level language and compiler targetting it (leaving
out the MUD application) I've been looking for an excuse to learn
flex and bison for a while now, so here we are.