CWE Libraries and SDKs

From OpenUru
Revision as of 13:29, 31 March 2011 by Mac Fife (talk | contribs) (Expat: Add text)
Jump to: navigation, search
The information on this page is not guaranteed to be fully complete or accurate, but is the best understanding avalable at the time of preparation. Consider this to be a "quick start" for information on the libraries, and a hub for further research. It is also likely that as development progresses, the information here will be superceded. Everyone should feel free to propose amendments to this page on the OU forums.
This page contains draft content
The content of this page is a "work-in-progress" and is subject to change. Do not place undue reliance on the completeness or accuracy of the material presented here!

The Engine (CWE) is released under the GPLv3 Open Source license but uses a number of libraries or SDKs that are not part of the development tool suite and are either commercially licensed or use licenses that are otherwise incompatible with the GPL. Consequently, these are not included within the Open Source release. However, many of these are readily available to any developers wishing to work on the CWE code.

The GPL FAQ addresses allowance of incompatible libraries: [1]

Both versions of the GPL have an exception to their copyleft, commonly called the system library exception. If the GPL-incompatible libraries you want to use meet the criteria for a system library, then you don't have to do anything special to use them; the requirement to distribute source code for the whole program does not include those libraries, even if you distribute a linked executable containing them.

What this means is that you may build and distribute a GPLv3 application as a binary that uses those libraries, but in distributing the source you need not distribute the library or its source (and you may be expressly prohibited from doing so by the applicable license).

The following paragraphs summarize the situation regarding each of these libraries/SDKs.


The Bink Video Codec [2] is a commercially licensed product by RAD Game Tools. At around US$6000 for a single product license this is probably beyond the price range of most private open source developers. Fortunately this only appears to be used at present for the introductory videos.

Direct X

CWE was built using the DirectX 9.0c SDK which is readily downloadable.[3] The EULA for the SDK permits free re-distribution in object form.


The Engine originally used Creative Labs EAX 3D audio technology [4]. EAX is a commercially licensed product, and beyond the reach of most private developers.

The alternative is to use OpenAL with EFX which supports EAX effects.


The Expat XML parsing library [5] is believed to only be required when building the server code. As Cyan's server code is not yet ready for Open Source release, the omission of Expat is of little significance at this time. However, for reference, Expat is offered under the MIT License

FreeType 2

FreeType 2, from the FreeType Project, is a font service supporting OpenType, TrueType, Windows .fnt and Type 1 fonts amongst many others. FreeType 2 used methods that were subject to patent protection, but these expired in May 2010. [6]

Two licenses are available to use with FreeType 2: The FreeType License (BSD-like) and the GPL. The latter is obviously more appropriate for compatibility with CWE.

Intel JPEG Library

The Intel JPEG Library (IJL) is no longer available for download, and no new licenses are being offered. Intel recommend using the Integrated Performance Primitives (IPP)[7] instead. This is commercially licensed (US$199) and is not currently available for Mac platforms.

An open source alternative, which has already been succesfully integrated with CWE, is the Independent JPEG Group (IJG)[8] jpeglib. The license for this is embedded within the README file accompanying the library and is specific to jpeglib.

3ds Max 7 SDK (Autodesk)

This is apparently only required to build the plugin. The Max 7 SDK is supplied on the 3ds Max product DVD [9] and is not available for download. It is commercially licensed alongside 3ds Max. 3ds Max 7 is no longer available as a retail product although some pre-owned copies may be available. Current editions (3ds Max 2011 and 3ds Max 2012) are priced at US$3495 [10] putting this outside the reach of many fan developers.

Ogg Vorbis

Ogg Vorbis is an open specification for audio compression, designed by Foundation. [11]. The reference library implementation is supplied under a BSD license. This is the newer, three clause BSD license that omits the controversial advertising clause of the original BSD license, and is verified as GPL compatible by the Free Software Foundation.

Note that Ogg [12] and Vorbis [13] are supplied as separate libraries and that both are required.


OpenAL [14] with EFX (Effects Extension) is an open specification replacement for EAX provided under a LGPL license. Installers and SDKs for various platforms are readily available for download from Creative Labs website. [15]


OpenSSL is a Secure Sockets Layer implementation originally developed by Eric Young. OpenSSl is "dual licensed" in that that both the OpenSSL License (BSD-like) and the original SSLeay License are applied concurrently [16]. From [17]

The license of OpenSSL is a conjunction of two licenses, one of them being the license of SSLeay. You must follow both. The combination results in a copyleft free software license that is incompatible with the GNU GPL. It also has an advertising clause like the original BSD license and the Apache license.

We recommend using GNUTLS instead of OpenSSL in software you write. However, there is no reason not to use OpenSSL and applications that work with OpenSSL.

It is the "advertising clause" that presents the incompatibility with GPLv3.

PhysX (Ageia/nVIDIA)

There are two components to PhysX - the Drivers (run-time elements) and the SDK. Each are subject to different licensing conditions. The Engine was originally built using version 2.6.0. of the SDK, which is no longer available for download - the earliest version currently avaliable is 2.6.4.

Please note that it is important that the version of Driver used provides support for the version of SDK in use.


Starting from version 2.6.0 of the SDK, the End User License Agreement [18] was changed to make this free for commercial and non-commercial use. However each developer is required to register on the nVIDIA Developer site [19] prior to downloading the SDK. The SDK license is exclusive to the registered developer, and it is not permissable to re-distribute the SDK in any form.


The driver (or "PhysX System Software") is required for all client installs and may be freely downloaded from the nVIDIA site. It is also permissable to redistribute the driver alongside a compiled application. [20]

Note that the latest version of the PhysX driver (9.10.0513 [21]) only provides support for versions 2.7.1 and above of the SDK; since CWE builds will typically use SDK 2.6.x, you should use an older driver (e.g. v8.09.04 [22])

Quicktime for Windows

Not currently required for the Engine.

Windows SDK (Microsoft)

The Windows Platform SDK (February 2003) as used by CWE is longer available from the Microsoft Download center, but direct links to download each of the .CAB files and the Extractor are available on the Microsoft forums [23] and in the build instructions. The EULA accompanies the SDK, and allows for free redistribution within the compiled application.