{{update}} {{notice|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.((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 **libdeng_core.so**.)) 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. {{ file:doomsday_2_component_architecture.png }} ===== Core library (libcore) ===== App, Library, base for subsystems, threading. ==== Data ==== Block, values, Variable, Record, Writer, Reader, byte ordering, reference counting, ZIP archives. ==== Internal file system ==== [[file_system|FS]], folders, native/archive files. ==== Network ==== Link, Protocol, packets. Network architecture on the application level (sessions): {{ file:sessions_and_users.png }} //See also:// [[network_protocol]] ==== Scripting ==== Script, Parser, Process, Module, statements, expressions, functions. {{ file:scripting_arch.png?700x0 }} ===== 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. ====== Footnotes ====== ====== See also ====== * [[refactor_engine_into_a_shared_library]] * [[internal_file_system]] * [[doomsday_script]] * [[plugin_factory]] * [[packaging_resources]] * [[roadmap]]