[DGD] Persistance

Stephen Schmidt schmidsj at union.edu
Thu Jan 8 18:23:10 CET 2004


"Robert Forshaw" <iouswuoibev at hotmail.com> wrote:
> ...when a statedump occurs when User A quits, their progress is saved,
> but User B may not have been around for a while and is no longer present in
> memory, hence when the statedump occurs User B's progress is lost forever.

This is where the -game- complexities of designing a persistent
mud (as opposed to the code complexities) get involved.

In a non-persistent game, the user body is magically created out
of nowhere when the player logs in, and magically vanishes back
into the ether when the player logs out. "Dust thou art, and to
dust thou shalt return" etc.

In a persistant game this is not acceptable. If John Doe is
playing your game, and his character, Lord Boyardee, 11th
level fighter and master of Castle Noodles, is a part of
the persistent world, then when John Doe logs out, Lord
Boyardee can't vanish. Instead of characters going in and
out, you have to have some concept of characters going
inactive. When John Doe logs out, Lord Boyardee is still
there, somewhere, but the player's not controlling him
anymore. Either he has to have some simple AI that keeps
him ticking while the player is away, or he has to enter
some kind of game state in which he would be inaccessible
to the game world for a while.

This raises some interesting game design possibilities. One
option: All characters are wraiths, or some other kind of
spirit or demon or something. These spirits have the ability
to occasionally take a material form, for a limited period
of time. In this option, when the human player is not logged
in, their character is back in the spirit world, no material
form, not accessible from the game world. When the player
logs in, the spirit takes on its material form and interacts
with the game world. When he logs out, it's back to the
ethereal plane for the spirit character.

Another option: Players are vampires. When you are logged out,
your character is lying in his coffin with the lid closed.
When you log in, the lid opens and you begin moving around.
When you log out, you turn into a bat and fly back to your
coffin. This differs from the previous case because the
coffin is still part of the game world. When you are logged
out, another player could enter your room, open your coffin
lid, and drive a silver stake through your heart, or steal
your fake fangs, or whatever it is one does to do in a
vampire these days.

Another option: Players are feudal lords. Each one has his
own castle with an inner sanctum. When the player is logged
in, he comes out of his inner sanctum and runs his territory.
When he logs out, the lord goes back into the inner sanctum,
where he is untouchable (or maybe not, as case may be) and
his NPC courtiers handle the affairs of the territory for a
while, until the player logs back in again. This one requires
a small AI to control the courtiers who are handling the
player's affairs while he is logged out.

There are more options, but three will have to hold you for now :)

They all raise one common problem, which is that sometimes
human players quit your game. If Vampire Lestat is in his
coffin, and the human player isn't going to log into your
game ever again, then at -some- point you want to dest the
coffin and the body of Vampire Lestat. No need to save
anything, because this is the utter and total end of Vampire
Lestat. He's gone and will never reappear. This is basically
the same problem as purging your inactive characters on a
non-persistent mud (because the character database is the
one persistent feature of a non-persistent mud) but in the
persistent mud you have the problem that each inactive
character is taking up, not just a couple dozen lines of
file space on your server, but at least one object in your
game world. So you need to build the periodic purge into
the design of the game world somehow. It's a solvable
problem and I'll leave it as an exercise for the interested
student.

Your game design also has to handle the question of where
new characters come from, and I'll leave that one open also.

Steve




_________________________________________________________________
List config page:  http://list.imaginary.com/mailman/listinfo/dgd



More information about the DGD mailing list