Feature #1794
Updated by skyjake almost 10 years ago
Currently, the client and the server are separate applications but share some of the source code files. This is not an ideal situation, because code is duplicated, preprocessor segments @__CLIENT__@ and @__SERVER__@ can get cumbersome/confusing, and the basic structure lacks flexibility.
In the future, for instance an iOS app needs to contain both the client and the server components wrapped under an iOS-specific UI. In practice, this means there must be @libclient.a@ and @libserver.a@ static libraries that are linked to the application.
The common code shared by the client and server (basic map data, resource handling), needs to be separated into its own (shared or static) library, so that both applications can use it. (The client would extend some of the classes with GL, etc. functionality.)
The naming of the libraries could be improved:
* libdeng2 => libcore
* libdeng1 => liblegacy (support for legacy code)
New libraries:
* libserver => *static* library with server-specific, platform-independent functionality
* libclient => *static* library with client-specific, platform-independent functionality
* libdoomsday => library containing code shared by the client and server (GPL)
In the future, for instance an iOS app needs to contain both the client and the server components wrapped under an iOS-specific UI. In practice, this means there must be @libclient.a@ and @libserver.a@ static libraries that are linked to the application.
The common code shared by the client and server (basic map data, resource handling), needs to be separated into its own (shared or static) library, so that both applications can use it. (The client would extend some of the classes with GL, etc. functionality.)
The naming of the libraries could be improved:
* libdeng2 => libcore
* libdeng1 => liblegacy (support for legacy code)
New libraries:
* libserver => *static* library with server-specific, platform-independent functionality
* libclient => *static* library with client-specific, platform-independent functionality
* libdoomsday => library containing code shared by the client and server (GPL)