LPC's runtime model is event-driven. Events such as input from the network or the expiry of a timer start a task. Tasks are non-blocking, are run in sequence, and are expected to only last for a short while so that no single task monopolizes execution for too long. DGD uses a small but efficient bytecode VM to run compiled LPC code, which can optionally be JIT compiled to machine code. Although DGD was originally designed to run online games, it has eschewed domain-specific specialization from the start, focusing instead on making its core functionality fast and robust enough to support any type of server application. When speed is of the utmost importance, specialized code can be implemented in C/C++ as an extension module. The JIT compiler is one such module.
While DGD has primarily been used to make MUDs and other online games, it was the basis for Yahoo's first chatrooms in the late 1990s.
An object-oriented programming language called LPC, which is similar to Java (which it predates), but is far less complex even though it supports multiple inheritance.
Persistence: all data, programs and runtime state are stored in a database, from which snapshots can be made. The server can be rebooted with such a snapshot, and continue where it left off.
Two types of objects. Light-weight objects are like objects in other object-oriented programming languages. Persistent objects hang around until explicitly destructed, have a globally unique name by which they can be found, and have access to extra functionality, such as the ability to communicate on the network or start a delayed task.
Objects can be recompiled in-place, allowing all objects to be upgraded while the server keeps running.
Hotbooting: persistently reboot into a new version of DGD without dropping network connections.
Atomic functions: an error occurring in atomically executed code rolls back all changes made by such code, preserving consistency.
Hydra is a closed-source variant of DGD designed to run much faster on multi-core systems. Otherwise, DGD keeps feature parity with Hydra. Binaries are freely available for various architectures.
DGD is backward compatible with LPMud 2.4.5. It is mostly compatible with LPMud 3.1.2, but some of the new features introduced in LPMud 3.1.2 work a little differently. DGD does away with all of LPMud's game-oriented features, which can be implemented in LPC.
After Lars Pensjö released version 3.1.2, LPMud development continued in various branches. The CD gamedriver was the version used for the original LPMud online game, Genesis, at Chalmers Datorförening. Of all the variants, it is the closest in spirit to the original LPMud.
LDmud started as a straighforward continuation of LPMud development, and has many new features. The notions of light-weight objects and object types have found their way from DGD into LDmud.
FluffOS was the earliest variant to fork from LPMud. The "OS" part of the name reflects its original ambition to be more than just a Mud server.
Pike is a complete rewrite of LPC into a
scripting language such as PHP. Compilation units are not
.c files, but
.pike files where multiple classes can be defined within the same source
February 8th, 1990
Lars Pensjö releases LPMud.
August 11th, 1993
DGD 1.0.a3 first public release.
August 7th, 1994
DGD 1.0.8 first non-alpha release.
December 12th, 1995
Commercial rights to DGD acquired by BeeHive Internet Technologies, Inc.
August 6th, 2005
All rights to DGD reacquired by Dworkin B.V.
May 28th, 2009
Hydra 1.1.8 (first binary release)
February 3rd, 2010
DGD 1.4 released as open source.
April 9th, 2014
DGD 1.5 with dynamically loaded extension modules, hotbooting, modernized bytecode VM.
April 12th, 2017
DGD 1.6 rewritten as C++ code. Compatibility with snapshots created by DGD pre-1.5.9 abandoned (use DGD 1.5.20 to convert old snapshots).
January 8th, 2023
DGD 1.7 with improved bytecode VM to better support JIT compilation.