Project

General

Profile

Feature #1794

Mobile apps and shared client/server code (more modular code structure)

Added by skyjake over 10 years ago. Updated almost 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Deng Team
Category:
Redesign
Target version:
-
Start date:
2014-05-02
% Done:

40%

Tags:

Description

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.

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)

Related issues

Related to Feature #1887: Migrate project build system to CMake 3Closed2014-10-20

Related to Feature #1991: Qt 5.5 as minimum requirement for GUI, Qt 5.x for non-GUI buildClosed2015-03-10

Related to Feature #1675: Switch to new Qt 5.4+ OpenGL APIs (from QGLWidget)Closed2013-10-24

Related to Feature #2028: libcommon uses the preprocessor excessively in order specialize for doom, heretic, and hexenNew2015-05-03

History

#1 Updated by skyjake over 10 years ago

  • % Done changed from 0 to 10

#2 Updated by skyjake almost 10 years ago

  • Assignee changed from skyjake to Deng Team

#3 Updated by skyjake over 9 years ago

  • Description updated (diff)

#4 Updated by skyjake over 9 years ago

  • % Done changed from 10 to 30

#5 Updated by skyjake over 9 years ago

  • % Done changed from 30 to 20

The work in the cmake-build branch brings some improvements for modularity. Also, Qt 5 has better support for mobile OSes overall.

#6 Updated by skyjake over 9 years ago

#7 Updated by skyjake over 9 years ago

  • Related to Feature #1887: Migrate project build system to CMake 3 added

#8 Updated by skyjake over 9 years ago

  • Related to Feature #1991: Qt 5.5 as minimum requirement for GUI, Qt 5.x for non-GUI build added

#9 Updated by skyjake over 9 years ago

#10 Updated by skyjake over 9 years ago

  • Related to Feature #1675: Switch to new Qt 5.4+ OpenGL APIs (from QGLWidget) added

#11 Updated by skyjake over 9 years ago

  • Subject changed from Modularized project structure to enable mobile apps, shared client/server code to Mobile apps and shared client/server code (more modular code structure)

#12 Updated by skyjake over 9 years ago

  • Category changed from Enhancement to Redesign

#13 Updated by skyjake over 9 years ago

  • Related to Feature #2028: libcommon uses the preprocessor excessively in order specialize for doom, heretic, and hexen added

#14 Updated by skyjake over 9 years ago

  • Tags set to CodeQuality

#15 Updated by skyjake over 8 years ago

  • Status changed from In Progress to Progressed

#16 Updated by skyjake over 8 years ago

  • % Done changed from 20 to 30

Progress in resource management.

#17 Updated by skyjake over 8 years ago

  • Status changed from Progressed to In Progress

#18 Updated by skyjake about 7 years ago

  • Status changed from In Progress to Progressed
  • % Done changed from 30 to 40

A mobile build for iOS has been successfully made, although via non-modular means: compiling everything statically into a single binary.

#19 Updated by skyjake almost 5 years ago

  • Status changed from Progressed to Closed

Closing as obsolete.

Also available in: Atom PDF