CWE Libraries and SDKs

From OpenUru
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). Please note that this only applies to libraries that fall within the definition of "system libraries", i.e. libraries that might reasonably be expected to be provided as part of the operating system installation of the end user machine, or (for GPLv3) that are supplied as part of any common programming language. The use of other incompatible libraries/SDKs, and in particular non-free libraries, requires the copyright owner to provide express permission within the GPL license to link to those libraries.

The following paragraphs summarize the situation regarding each of these libraries/SDKs: It should be the aim of developers to progressively remove the dependencies on non-free and GPL incompatible libraries wherever practical.

Non-free Libraries

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 [2] 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 [3] putting this outside the reach of many fan developers.


The Bink Video Codec [4] 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.



The Engine originally used Creative Labs EAX 3D audio technology [5]. 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.

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)[6] instead. This is commercially licensed (US$199) and is not currently available for Mac platforms.

See IJG jpeglib for an open source alternative.

GPL Incompatible Libraries

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 [7] was changed to make this free for commercial and non-commercial use. However each developer is required to register on the nVIDIA Developer site [8] 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. [9]

It is recommended that you use the the latest version of the PhysX driver (currently 9.10.0513 [10]) as this provides support for all versions of the SDK from v2.3.1 and onwards.

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 [11] and in the build instructions. The EULA accompanies the SDK, and allows for free redistribution within the compiled application.

Direct X

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

IJG jpeglib

The Independent JPEG Group (IJG)[13] jpeglib is an open source alternative to the Intel Jpeg Library, and has already been succesfully integrated with CWE. The license for this is embedded within the README file accompanying the library and is specific to jpeglib. Please note that binary distributions that use jpeglig must give credit to IJG in the form: "This software is based in part on the work of the Independent JPEG Group." This may either be in the form of in-game credits or an accompanying README file.

OpenSSL Toolkit

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 [14]. From [15]

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, and requires that all "advertising material" should include the credits noted below.

Binary distributions that use the OpenSSL Toolkit must give credit to the OpenSSL group and the original creators: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit ( This product includes cryptographic software written by Eric A. Young ( This product includes software written by Tim J. Hudson (" This may either be in the form of in-game credits or an accompanying README file.

The credit to Tim J. Hudson may be omitted if you can determine that no Windows specific code from the toolkit, or any derivative of it, is used in your application.

Quicktime for Windows

Not currently required for the Engine.

Quicktime is integrated with Mac OS X making it a system library on that platform, but is an optional feature on other platforms and older versions on Mac OS. The basic Quicktime Player is freely available to download, while Quicktime Pro is a non-free application. Both versions are closed source and covered by proprietary licenses.

Windows Media SDK

Not currently required for the Engine.

A proprietary SDK for the creation and distribution of Windows based media, it is available in a number of versions, depending the version of Windows (XP, Vista, Win 7) in use. All are available for download from the Windows Media Licensing page: The applicable EULA is shown during the download.

GPL Compatible Libraries


OpenAL [16] 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. [17]

Ogg Vorbis

Ogg Vorbis is an open specification for audio compression, designed by Foundation. [18]. 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 [19] and Vorbis [20] are supplied as separate libraries and that both are required.


Speex is an audio compression sepcification for speech from Foundation. [21]. Like Ogg and Vorbis (also from Xiph) the license is a modified BSD license that is compatible with GPL.

Downloads are available from

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 protections, but these expired in May 2010. [22]

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.

FreeType may only be required when generating content (age building using the plugin).


The Expat XML parsing library [23] 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, the Expat license is a form of the MIT License and is GPL compatible.

See Also