Phantasmal MUD Lib for DGD

Phantasmal Site > Innsmouth MUD > Persistence in MUDs

Persistence in MUDs

These are poorly-organized thoughts about persistence in MUDs, and various issues related to it.

You can find further information about persistent game design on the DGD pages. You can also find more information about DGD's approach to persistence if you want more implementation details.

Time in MUDs, and Continuity

In-MUD time has a conversion factor associated with it -- that is, it's a multiple of real-world wall-clock time. How long a real-world day is in the MUD (and vice-versa) depends on that conversion. This leads to a whole host of realism problems related to things like travel time and reaction time, but we're going to ignore all those for now as not being related to persistence.

There's a problem that does have to do with persistence... When the MUD goes down for awhile there'll be a jump in real-world time. This includes scheduled maintenance, not just crashes. The question is how the MUD should address that.

Some ways we could deal with the programmatic interface:

  • Keep going forward, running all the scripts and triggers, until we catch up. That could be *really* slow on startup, and there are questions of safety and things if players are logged in at the time, or if their bodies or possessions are vulnerable. A lot of time can go by all at once...
  • Cancel all the call_outs, but make some way to subscribe for a notification when the time skips to reschedule them. That requires a lot of code on the part of anybody that reschedules. But for events that should just happen every so often, but we don't care about their cumulative effects, it works great.
  • Keep going like nothing happened -- this would require any events that really cared about real-world time to check the time for themselves.
  • Have some notifications that run at specific times relative to the real world, and others that just run "periodically" -- the period ones would keep ticking away across statedumps, skipping all the ones from the MUD's lost time. The real-world ones would be delivered at the right times, but any that would have happened when the MUD was down would all happen at once right after it came back up, probably passing a "late" flag to say that they hadn't happened at the correct real-world time. This is a hybrid between the first approach and the second one.