From Doomsday Wiki
Jump to: navigation, search

Update Note:
The content of this article is out-of-date and should be updated with the latest details.

Note: You should also see the API documentation for more in-depth information.

libcore is the name of the shared library that contains the core of the Doomsday Engine version 2.[1] It is based on Hawthorn.

Doomsday 2 architecture

Doomsday 2 comprises a set of libraries that act as the foundation of Doomsday Client, Server, Shell, and other applications. Everything builds on libcore, the core library that contains functionality essential to all applications.

Doomsday 2 Component Architecture.png

Core library (libcore)

App, Library, base for subsystems, threading.


Block, values, Variable, Record, Writer, Reader, byte ordering, reference counting, ZIP archives.

Internal file system

FS, folders, native/archive files.


Link, Protocol, packets.

Network architecture on the application level (sessions):

Sessions and Users.png

See also: Network protocol


Script, Parser, Process, Module, statements, expressions, functions.

Scripting arch.png

Shell library (libshell)

Connecting to servers, protocol for talking with servers. Generic UI components needed by the Shell apps and the UI framework.

GUI library (libgui)

libgui builds on libdeng2 and adds functionality integral to GUI applications: OpenGL drawing, input events, and audio.

UI framework (libappfw)

The Doomsday UI framework is in its own library and contains a number of UI widgets and supporting functionality for tasks like laying out and drawing text.

Common application subsystems (libdoomsday)

libdoomsday contains all the common subsystems shared by Doomsday Server and Doomsday Client.

Legacy / C language support (liblegacy)

liblegacy contains old supporting code (like the memory zone and dynamic strings for C) that was more relevant before C++ was taken into use. This library is intended to eventually become obsolete as more and more code is based on the newer libraries.

Version numbering

libcore version numbers are composed of the following parts:

  • Major version number: 2.
  • Minor version number: incremented once a set of long-term goals have been met.
  • Patchlevel: incremented for patch releases.

In addition to the version number there is also the independent build number as defined by the automated build system.

The Doomsday Client and Doomsday Server use the same version number as libcore.


  1. The actual file name depends on the platform:
    • On Windows, it is deng_core.dll.
    • On Mac OS X, it is libdeng_core.dylib.
    • On Linux, it is

See also