dworkin/dgd

Dworkin's Game Driver

Dworkin's Game Driver is a reimplementation from scratch of LPMud. Like LPMud, DGD lets the user write and execute software written in a programming language called LPC. LPC is based on C, but is high-level, class-based, object-oriented and radically simplified by excluding pointers. DGD's runtime environment is persistent and allows runtime recompilation of all objects without rebooting. Furthermore, it offers hotbooting: rebooting into a new server executable without dropping network connections. This has been used to establish uptimes of well over a year without downtime. DGD has been Open Source since February 2010, with the release of version 1.4 under the GNU Affero General Public License.

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.

Features

Hydra

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.

LPMud family

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 file.

Timeline