Open Source Platform
for interconnected virtual worlds

NG Design Document/Viewer Architecture/Languages and Libraries

From Rex community wiki

Contents

Language

To meet our goal of implementing an efficient and modular core framework, C++ was chosen as the programming language. C++ is efficient and cross platform and it is considered de facto standard programming language in the computer game industry. Many useful and well-tested libraries are available for it. Python is used for the client-side scripting.

Libraries

POCO

The POCO C++ libraries (POrtable COmponents) are open source C++ class libraries extending the C++ standard library functionality [1]. More specifically PoCo will be used for its powerful SharedLibrary functionality when implementing cross-platform support for plug-ins in the framework. PoCo will also be used for the low level networking implementation. POCO uses the Boost software license.

Boost

Boost C++ libraries [2] are open source libraries extending C++ functionality. They also use the Boost software license.

OGRE

For default 3D graphics rendering, OGRE [3] will be used. OGRE is a proven, feature rich and extensible open source 3D graphics engine with LGPL license.

OpenAL

For a default 2D/3D audio implementation, OpenAL [4] will be chosen. OpenAL is a free software cross-platform audio API and it is used by many commercial games.

XMLRPC-EPI

For XML-RPC communications between the viewer and various servers, XMLRPC-EPI [5] will be used. It is a cross-platform implementation of the XML-RPC protocol, written in C. It is released under the BSD license.

Python

For client-side scripting, the Python [6] language will be used. Python is a general-purpose programming language that is suitable for embedding as a scripting language. It is also already used in ModRex.

Qt

Qt [7] will be used as the default user interface toolkit. Besides offering basic 2D UI widget functionality (buttons, windows etc.), Qt supports advanced features such as HTML rendering and video playback. As Qt is not just an user interface toolkit, but an application framework, it can also be investigated to what degree it is feasible to replace functionality offered by other libraries (for example PoCo's low level networking) by corresponding Qt functionality. Qt has several licensing options, of which the most appropriate one for the viewer is LGPL 2.1.

Citations

  1. PoCo C++ Libraries
    (http://pocoproject.org)
  2. Boost C++ Libraries
    (http://www.boost.org)
  3. OGRE - Open Source 3D Graphics Engine
    (http://www.ogre3d.org)
  4. OpenAL
    (http://connect.creativelabs.com/openal/default.aspx)
  5. XMLRPC-EPI
    (http://sourceforge.net/projects/xmlrpc-epi/)
  6. Python
    (http://www.python.org/)
  7. Qt
    (http://www.qtsoftware.com/)