Phantasmal MUD Lib for DGD

Phantasmal Site > DGD > Why Use DGD?

Why Use DGD?

DGD is a networked server and a language environment. It uses an object-oriented variant of C called LPC and provides powerful special-purpose extensions to that language. True to its roots, DGD is best known as a server for multiplayer networked games called MUDs. That's where the original LPC language came from, and it's still a common use of even industrial-strength servers like DGD.

There are many good reasons to use DGD if you're building a MUD, and a surprising number even if you're building some other kind of networked server. Yahoo Chat, for instance, is built on top of DGD. First, a few bullet points about DGD...

DGD is an amazing server:

  • Because it's persistent. That doesn't just mean that the game world persists or that you can save and restore. For DGD, that means that the LPC objects can be dumped to a state file on shutdown and reloaded at startup without writing specific object-saving or object-reloading code. Pointers and object state are maintained transparently.
  • Because it does what's necessary to be persistent, such as allowing you to recompile every LPC object in place without rebooting, disconnecting users or losing data. You can even do it incrementally without stopping what you're doing. New object data shows up and old data disappears quietly and transparently.
  • Because it's clean and well-designed. Dworkin works hard to make DGD the cleanest, most secure LPMUD out there. DGD's LPC dialect really shows it. DGD resembles an Operating System or a language environment (which it is) much more than a MUD server.
  • Because Dworkin works hard. New features and bug fixes are added all the time to the experimental (but usually very stable) versions of DGD. You see stuff that other MUD servers don't have and won't have any time soon like atomic functions with full rollback.

What Does DGD Do That Other Drivers and Servers Don't?

  • The rlimits() structure can be used to limit how much stack space and processor time a given function can take. If the time or space runs out, the function is interrupted cleanly and smoothly without restarting the interpreter.
  • DGD is disk-based, so it can store massive datasets without massive amounts of RAM. Its swapping is efficient, well tested and highly configurable.
  • DGD is highly secure and strongly tested in commercial products like the Skotos servers and Yahoo Chat (formerly iChat).
  • Most LPC environments absolutely forbid commercial use. DGD, however, can be used commercially if you purchase a license from Dworkin or from Skotos.
  • DGD allows precompiled code and server extensions -- for thost times when it really has to run at full native speed.
  • DGD allows you to recompile absolutely any LPC object on the fly and change anything or everything about it. It also has the management code and hooks to let you usefully do this. Since DGD does far more in LPC than most drivers, this lets you reconfigure anything about your game nearly instantly, and run your development servers on the same LPC data without an interruption for days, months or years.
  • DGD allows you to dump all game state in one lump, and reload that statedump with a new DGD version. To upgrade DGD, just dump state, upgrade the DGD server code and restart. All your objects, files and players are exactly where they were. Only your current network connections are lost, and absolutely everything about DGD can be upgraded this way. You can upgrade your library without even that much disruption.
  • DGD's dialect of LPC includes a lot of new extensions for better typechecking and error checking than most LPC servers. It removes several redundant and insecure features (like shadowing and hardcoded snooping) that can prevent a library from being securable.

And here's more information: