<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://staging-wiki.unvanquished.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Devhc</id>
	<title>Unvanquished - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://staging-wiki.unvanquished.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Devhc"/>
	<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/wiki/Special:Contributions/Devhc"/>
	<updated>2026-04-04T19:37:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=845</id>
		<title>Compiling the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=845"/>
		<updated>2012-10-01T11:28:21Z</updated>

		<summary type="html">&lt;p&gt;Devhc: the instructions require sh, but csh is common; note this&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mac OS X==&lt;br /&gt;
&lt;br /&gt;
The preferred way of building Unvanquished on Mac OS X is to use Apple's [https://developer.apple.com/xcode/ XCode] along with [http://www.cmake.org/cmake/resources/software.html CMake]; CMake is used to generate an XCode project file that is then used to compile the code. Note: Xcode currently does not build QVMs due to [https://github.com/Unvanquished/Unvanquished/issues/101 issue 101].&lt;br /&gt;
&lt;br /&gt;
First, you need to [[Getting_the_source|acquire the source code]].&lt;br /&gt;
&lt;br /&gt;
You will also need to build the libraries from source.&lt;br /&gt;
&lt;br /&gt;
Unvanquished requires the following libraries:&lt;br /&gt;
* The jpeg library, version 8 or higher. (Version 6 was known to have problems)&lt;br /&gt;
* Simple DirectMedia Layer (The binary provided by libsdl.org causes graphical corruptions. Compile from source or use homebrew/macports)&lt;br /&gt;
* OpenGL Extension Wrangler Library&lt;br /&gt;
* CuRL&lt;br /&gt;
* GMP&lt;br /&gt;
&lt;br /&gt;
Optional libraries:&lt;br /&gt;
* WebP&lt;br /&gt;
* Theora&lt;br /&gt;
* Speex&lt;br /&gt;
* XVid&lt;br /&gt;
* Vorbis&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
You only need to use one of the following methods (HomeBrew or compiling by hand). Please try and avoid mixing methods as this may produce unexpected results.&lt;br /&gt;
&lt;br /&gt;
====HomeBrew====&lt;br /&gt;
Install [http://mxcl.github.com/homebrew/ HomeBrew] and then run the following command&lt;br /&gt;
&lt;br /&gt;
 $ brew install nettle libjpeg curl sdl webp xvid gmp glew speex libvorbis theora&lt;br /&gt;
&lt;br /&gt;
All the necessary libraries should now have been installed.&lt;br /&gt;
&lt;br /&gt;
====Compiling by hand====&lt;br /&gt;
The following are shell scripts that download, compile, and install various libraries. This is more time consuming then other methods but might be useful if you need more control over your libraries&lt;br /&gt;
&lt;br /&gt;
=====JPEG=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.ijg.org/files/jpegsrc.v8d.tar.gz &amp;gt; jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ tar xvzf jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ cd jpeg-8d&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====The OpenGL Extension Wrangler Library (GLEW)=====&lt;br /&gt;
&lt;br /&gt;
 $ curl -L https://sourceforge.net/projects/glew/files/glew/1.7.0/glew-1.7.0.tgz/download &amp;gt; glew-1.7.0.tgz&lt;br /&gt;
 $ tar xvzf glew-1.7.0.tgz&lt;br /&gt;
 $ cd glew-1.7.0&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Simple DirectMedia Layer (SDL)=====&lt;br /&gt;
&lt;br /&gt;
Do not use the binaries provided by libsdl.org, as these are known to cause issues with gamma and color display. Instead, compile your own:&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15.tar.gz &amp;gt; SDL-1.2.15.tar.gz&lt;br /&gt;
 $ tar xvzf SDL-1.2.15.tar.gz&lt;br /&gt;
 $ cd SDL-1.2.15&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====The GNU MP Bignum Library (libgmp)=====&lt;br /&gt;
&lt;br /&gt;
 $ curl ftp://ftp.gmplib.org/pub/gmp-5.0.5/gmp-5.0.5.tar.bz2 &amp;gt; gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ tar xvjf gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ cd gmp-5.0.5&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Ogg=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz &amp;gt; libogg-1.3.0.tar.gz&lt;br /&gt;
 $ tar xvzf libogg-1.3.0.tar.gz&lt;br /&gt;
 $ cd libogg-1.3.0&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Vorbis=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz &amp;gt; libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ tar xvzf libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ cd libvorbis-1.3.3&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
===Configuring with CMake===&lt;br /&gt;
&lt;br /&gt;
# Run CMake.&lt;br /&gt;
# Enter the location of the source code.&lt;br /&gt;
# Enter the location in which you would like to build the source code. This should be a different directory.&lt;br /&gt;
# Hit &amp;quot;Configure&amp;quot;. You will be prompted as to which generator you would like to use. If you have Xcode installed, choose that. Wait while the configuration process runs. You may have to set the following:&lt;br /&gt;
## If CMake did not find your jpeg headers for some reason, set &amp;lt;code&amp;gt;JPEG_INCLUDE_DIR&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/path/to/Unvanquished/src/libs/jpeg&amp;lt;/code&amp;gt;.&lt;br /&gt;
## You may safely disable &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; to avoid having to compile the library. (At present, the format is not used by any game assets.)&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; to avoid having to compile nettle and hogweed.&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; to avoid having to compile Speex.&lt;br /&gt;
## Uncheck &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; to avoid having to compile Theora or Xvid. (At present, there are not cutscenes or any such that require it.)&lt;br /&gt;
## '''You will probably not be able to compile with the GLSL optimizer enabled; uncheck &amp;lt;code&amp;gt;USE_GLSL_OPTIMIZER&amp;lt;/code&amp;gt;'''&lt;br /&gt;
## If you have selected to generate XCode project files, make the &amp;lt;code&amp;gt;SDLMAIN_LIBRARY&amp;lt;/code&amp;gt; field blank. This option is not available if you have the generator set to Unix makefiles.&lt;br /&gt;
# Hit &amp;quot;Generate&amp;quot;.&lt;br /&gt;
# You may now close XCode.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
====With XCode====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compilation will fail unless you manually create certain directories needed by the build scripts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/build/dir/CMakeFiles&lt;br /&gt;
$ mkdir gpp{game,trem,ui}-qvm.dir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Either start XCode and open the project file (in the build directory you specified) or double-click the project file in Finder.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open the project file created by CMake, which should be in the build directory you specified.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the active target to &amp;quot;ALL_BUILD&amp;quot; and click Product&amp;amp;rarr;Build.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Terminal (Applications &amp;amp;rarr; Utilities &amp;amp;rarr; Terminal).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Input the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are on a multi-core or multi-processor machine, you may speed up the process by passing the &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; argument followed by the number of available cores to &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;; e.g., &amp;lt;code&amp;gt;make -j4&amp;lt;/code&amp;gt;. Note that doing so makes reading error messages more difficult, as multiple instances of the compiler will print to the screen at once, causing information to appear out of order.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing the build===&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
After compiling, you'll have to place the data files in the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; directory in your build directory. [[#Acquiring the Game Files|For download instructions, see below.]]&lt;br /&gt;
&lt;br /&gt;
Your file structure should look as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:Build_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
You may now start the application as such:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386&lt;br /&gt;
&lt;br /&gt;
Note that older machines will not support the new OpenGL 3 renderer, and must be started specifying the &amp;quot;vanilla&amp;quot; (aka &amp;quot;GL&amp;quot;) renderer:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386 +set cl_renderer GL&lt;br /&gt;
&lt;br /&gt;
===Bundling the Application===&lt;br /&gt;
&lt;br /&gt;
====With CPack====&lt;br /&gt;
&lt;br /&gt;
CPack is able to create standalone bundles (as well as many other types of installers). However you must generate the files using Unix Makefiles instead of XCode.&lt;br /&gt;
&lt;br /&gt;
 $ cd /path/to/Unvanquished-build&lt;br /&gt;
 $ cpack -G Bundle&lt;br /&gt;
&lt;br /&gt;
Some warnings will be printed however these can be safely ignored. There should be a file called Unvanquished.dmg in the Unvanquished-build folder.&lt;br /&gt;
&lt;br /&gt;
====Manually====&lt;br /&gt;
&lt;br /&gt;
You'll find the Mac [http://macdylibbundler.sourceforge.net/ dynamic library bundler] to be quite useful (you must generate the files using Unix Makefiles instead of XCode):&lt;br /&gt;
&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/macdylibbundler/files/macdylibbundler/0.4.1/dylibbundler0.4.1.zip/download &amp;gt; dylibbundler0.4.1.zip&lt;br /&gt;
 $ unzip dylibbundler0.4.1.zip&lt;br /&gt;
 $ cd dylibbundler&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
Once you've done that, you can proceed to create the application bundle. Note that these steps assume that you have downloaded the data files to &amp;lt;code&amp;gt;main/&amp;lt;/code&amp;gt; as shown above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git=/path/to/Unvanquished-git-repo&lt;br /&gt;
$ build=/path/to/Unvanquished-build-dir&lt;br /&gt;
$ mkdir -pv Unvanquished.app/Contents/{libs,MacOS,Resources,Frameworks}&lt;br /&gt;
$ cp -r $build/main Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ sips -s format tiff $git/debian/unvanquished.png --out temp.tiff&lt;br /&gt;
$ tiff2icns temp.tiff Unvanquished.app/Contents/Resources/Unvanquished.icns&lt;br /&gt;
$ rm temp.tiff&lt;br /&gt;
$ cp $build/daemon{,ded}.i386 $build/*.dylib Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ cp -r /Library/Frameworks/SDL.framework Unvanquished.app/Contents/Frameworks&lt;br /&gt;
$ install_name_tool -id @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/Frameworks/SDL.framework/Versions/A/SDL&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGLi386.dylib&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGL3i386.dylib&lt;br /&gt;
$ for binary in Unvanquished.app/Contents/MacOS/*.{i386,dylib}; do dylibbundler -b -x $binary -d $dest/Unvanquished.app/Contents/libs/; done&lt;br /&gt;
$ cp /usr/lib/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ chmod +w ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -id @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -change /usr/lib/libGLEW.1.7.0.dylib @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ cat &amp;gt; Unvanquished.app/Contents/Info.plist&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dict&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleDisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleExecutable&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;daemon.i386&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIconFile&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished.icns&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;net.Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleInfoDictionaryVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;6.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundlePackageType&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;APPL&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleShortVersionString&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt;&lt;br /&gt;
^d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;code&amp;gt;^d&amp;lt;/code&amp;gt; indicates pressing &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Ctrl&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;D&amp;lt;/span&amp;gt; on the keyboard.&lt;br /&gt;
&lt;br /&gt;
The contents of the completed application bundle should look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Bundle_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
'''Note''': If you compiled SDL from source, you will not see a directory titled &amp;lt;code&amp;gt;SDL.framework&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&lt;br /&gt;
===Visual Studio===&lt;br /&gt;
&lt;br /&gt;
CMake can generate Visual Studio projects for unvanquished however this feature is relatively new and may have some bugs.&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
# Double click on Visual_Studio32.bat&lt;br /&gt;
# Open build-32/Daemon.sln in Visual Studio 2010.&lt;br /&gt;
# In the two text boxes in the toolbar, select &amp;quot;Release&amp;quot; or &amp;quot;Debug&amp;quot; in the first one and Win32 in the second one&lt;br /&gt;
# Press F5 to build solution and run application, or just use Build &amp;amp;rarr; Build Solution to compile the code.&lt;br /&gt;
&lt;br /&gt;
====Important Notes====&lt;br /&gt;
&lt;br /&gt;
* LLVM is disabled and does not work correctly with CMake generated Visual Studio projects.&lt;br /&gt;
* ncurses is not supported under Visual Studio.&lt;br /&gt;
* The path to the build folder must not have any spaces otherwise generation of QVMs will fail. See [https://github.com/Unvanquished/Unvanquished/issues/102 issue 102]&lt;br /&gt;
* Due to limitations with cmake neither the startup project nor the working directory can be specified. These must be manually set to the following values for debugging the client under Visual Studio&lt;br /&gt;
** Right click on client and select &amp;quot;Set as StartUp project&amp;quot;.&lt;br /&gt;
** Right click on client, select properties, select Debugging and set &amp;quot;Working Directory&amp;quot; to $(TargetPath)\..&lt;br /&gt;
&lt;br /&gt;
===MinGW===&lt;br /&gt;
Unvanquished is supported under MinGW. The build process should be fairly similar to the Linux instructions.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: this may be incomplete --&amp;gt;&lt;br /&gt;
====Debian/Ubuntu====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libcurl4-gnutls-dev libfreetype6-dev libglew1.5-dev \&lt;br /&gt;
   libgmp3-dev libjpeg8-dev libncurses5-dev libogg-dev libopenal-dev \&lt;br /&gt;
   libpng12-dev libsdl1.2-dev libvorbis-dev zlib1g-dev nettle-dev \&lt;br /&gt;
   libwebp-dev libspeexdsp-dev libtheora-dev&lt;br /&gt;
&lt;br /&gt;
Actual dev package names may vary, e.g. libgmp-dev instead of libgmp3-dev and libglew-dev or libglew1.7-dev instead of libglew1.5-dev.&lt;br /&gt;
&lt;br /&gt;
Since we have a debian directory in the source, you can also to check what's needed then install the listed packages (choosing from alternatives as needed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ dpkg-checkbuilddeps&lt;br /&gt;
 …&lt;br /&gt;
 $ sudo apt-get install &amp;lt;var&amp;gt;package(s)&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If dpkg-checkbuilddeps produces no output, you have all necessary build dependencies. Also, debhelper's only needed if you're building .debs.&lt;br /&gt;
&lt;br /&gt;
====Gentoo====&lt;br /&gt;
&lt;br /&gt;
 $ emerge curl freetype glew gmp jpeg ncurses libogg openal libpng libsdl libvorbis zlib&lt;br /&gt;
&lt;br /&gt;
===Configuring the code with CMake===&lt;br /&gt;
&lt;br /&gt;
After you have [[Getting the source|acquired the source code]], you can proceed to compile. Unvanquished uses CMake, so you must have that installed. &lt;br /&gt;
&lt;br /&gt;
====Using ccmake (curses-based front-end)====&lt;br /&gt;
&lt;br /&gt;
On Debian or Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-curses-gui&lt;br /&gt;
&lt;br /&gt;
On Gentoo you should set the '''ncurses''' USE flag either globally or individually, just for cmake.&lt;br /&gt;
To add the USE flag globally, edit the USE array in /etc/make.conf for it to include '''ncurses'''.&lt;br /&gt;
To only install cmake with ncurses functionality, you could do the following:&lt;br /&gt;
&lt;br /&gt;
 $ echo 'dev-util/cmake ncurses' &amp;gt;&amp;gt; /etc/portage/package.use &amp;amp;&amp;amp; emerge cmake&lt;br /&gt;
&lt;br /&gt;
Note that in Ubuntu, &amp;lt;code&amp;gt;cmake-curses-gui&amp;lt;/code&amp;gt; is in Universe, which you may have to enable with &amp;lt;code&amp;gt;software-properties-gtk&amp;lt;/code&amp;gt;. Make sure to reload the software sources with &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt; afterwards.&lt;br /&gt;
&lt;br /&gt;
Next, configure the codebase.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir build&lt;br /&gt;
 $ cd build&lt;br /&gt;
 $ ccmake ..&lt;br /&gt;
&lt;br /&gt;
Or, in Debian or Ubuntu, you can build a package (but you'll need to have devscripts and fakeroot installed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ fakeroot dpkg-buildpackage -b -uc&lt;br /&gt;
 $ sudo dpkg -i &amp;lt;var&amp;gt;../unvanquished_*.deb&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once in &amp;lt;code&amp;gt;ccmake&amp;lt;/code&amp;gt;, use the following keys:&lt;br /&gt;
&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt; to configure. If an error occurs during this phase, make note of it and press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;e&amp;lt;/span&amp;gt; to dismiss it.&lt;br /&gt;
* Use the up and down arrow keys to navigate the compilation options.&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to enable or disable boolean options (i.e., on/off) or to edit textual options.&lt;br /&gt;
** Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Esc&amp;lt;/span&amp;gt; when editing a textual option to cancel the change.&lt;br /&gt;
&lt;br /&gt;
Once you have finished the configuration process, press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; again, then &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the makefile.&lt;br /&gt;
&lt;br /&gt;
====Using cmake-qt-gui (graphical front-end)====&lt;br /&gt;
&lt;br /&gt;
This graphical front end for cmake has its own package you must install:&lt;br /&gt;
&lt;br /&gt;
=====Debian/Ubuntu=====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-qt-gui&lt;br /&gt;
&lt;br /&gt;
=====Gentoo=====&lt;br /&gt;
&lt;br /&gt;
With the '''qt4''' USE flag enabled:&lt;br /&gt;
&lt;br /&gt;
 $ emerge cmake&lt;br /&gt;
&lt;br /&gt;
Once installed, run with &amp;lt;code&amp;gt;cmake-gui&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cmake-qt-gui.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
# Set the path where you have the source code downloaded.&lt;br /&gt;
# Set the path where you would like to build the engine. This may be the same directory if you wish.&lt;br /&gt;
# Click 'Configure'.&lt;br /&gt;
# Click 'Generate'.&lt;br /&gt;
&lt;br /&gt;
====Unnecessary libraries====&lt;br /&gt;
&lt;br /&gt;
Regardless of which front-end to cmake you use, you may want to disable some libraries that are not strictly necessary:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; &amp;amp;mdash; Some maps use WebP to store their textures. Currently this should have little impact on gameplay but more maps will likely use this format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_OPENAL&amp;lt;/code&amp;gt; &amp;amp;mdash; If this is disabled, SDL is used instead for sound.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CODEC_VORBIS&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause certain sound effects (those using the &amp;lt;code&amp;gt;.ogg&amp;lt;/code&amp;gt; format) not to play. At present, this has only a minor impact on gameplay, but more and more sounds will likely use the format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CURSES&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause the external (not in-game) console to not use curses; it will not be scrollable and will be similar to the console in the original Tremulous. This does in no way affect gameplay.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Theora.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Xvid.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_VOIP&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this removes VOIP support. Alternatively enabling &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; will use the libraries distributed with Unvanquished for VoIP&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; &amp;amp;mdash; Enable this to use the crypto libraries provided by Unvanquished.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ make -j4&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; switch to make allows you to speed up the compilation process by running it in multiple threads; set the number following this to the number of cores your processor(s) have.&lt;br /&gt;
&lt;br /&gt;
===Acquiring the Game Files===&lt;br /&gt;
&lt;br /&gt;
====Acquiring mandatory game files===&lt;br /&gt;
&lt;br /&gt;
The game files are not in the Git repository, and must be downloaded separately.&lt;br /&gt;
&lt;br /&gt;
On Linux, this may be done as follows:&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;[path to Unvanquished installation or build]&amp;lt;/var&amp;gt;/main&lt;br /&gt;
 $ for file in pak{0..6}.pk3; do&lt;br /&gt;
 wget -O $file &amp;quot;http://sourceforge.net/projects/unvanquished/files/Assets/$file/download&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
On FreeBSD, using the &amp;lt;code&amp;gt;sh&amp;lt;/code&amp;gt; shell:&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;[path to Unvanquished installation or build]&amp;lt;/var&amp;gt;/main&lt;br /&gt;
 $ for file in pak{0..6}.pk3; do&lt;br /&gt;
 fetch -r -o $file &amp;quot;http://sourceforge.net/projects/unvanquished/files/Assets/$file/download&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
On Mac OS X:&lt;br /&gt;
&lt;br /&gt;
 $ cd ~/Library/Application Support/Unvanquished/main&lt;br /&gt;
 $ for file in pak{0..6}.pk3; do&lt;br /&gt;
 curl -L &amp;quot;http://sourceforge.net/projects/unvanquished/files/Assets/$file/download&amp;quot; &amp;gt; $file&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Linux users may also use the &amp;lt;code&amp;gt;download-pk3.sh&amp;lt;/code&amp;gt; script that is distributed with the source code, which requires that curl be installed:&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;[path to Unvanquished source code]&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir -p ~/.Unvanquished/main&lt;br /&gt;
 $ ./download-pk3.sh ~/.Unvanquished/main&lt;br /&gt;
&lt;br /&gt;
====Downloading the map pack====&lt;br /&gt;
&lt;br /&gt;
The map pack exists only for convenience; if you do not download the map pack, Unvanquished will automatically download maps as needed when you attempt to play online.&lt;br /&gt;
&lt;br /&gt;
To download the map pack on Linux:&lt;br /&gt;
&lt;br /&gt;
 $ wget -O maps.7z &amp;quot;http://sourceforge.net/projects/unvanquished/files/Map%20Pack/maps.7z&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
To download the map pack on Mac OS X:&lt;br /&gt;
&lt;br /&gt;
 $ curl -L &amp;quot;http://sourceforge.net/projects/unvanquished/files/Map%20Pack/maps.7z&amp;quot; &amp;gt; maps.7z; done&lt;br /&gt;
&lt;br /&gt;
Note that you will need to unzip the map pack on either system as it is compressed with LZMA. Mac users can use the [http://wakaba.c3.cx/s/apps/unarchiver.html Unarchiver]. Uncompressing the archive on Linux is highly dependent on your distribution.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
===CMake cannot locate Newton===&lt;br /&gt;
&lt;br /&gt;
If CMake cannot find Newton, you'll need to set it up yourself.&lt;br /&gt;
&lt;br /&gt;
It should be in &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;/path/to/Unvanquished&amp;lt;/var&amp;gt;/src/libs/libnewton/libs/&amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt;/libNewton.so&amp;lt;/code&amp;gt;.&lt;br /&gt;
Be sure to replace &amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt; with the proper directory name.&lt;br /&gt;
&lt;br /&gt;
Use CMake as before to change the &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt; build setting to the said path:&lt;br /&gt;
&lt;br /&gt;
# Start the CMake configurator:&amp;lt;pre&amp;gt;$ ccmake ..&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Scroll down and highlight &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to begin editing and input in the path.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; to configure and &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the new makefiles.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Q&amp;lt;/span&amp;gt; to quit.&lt;br /&gt;
# Recompile the source:&amp;lt;pre&amp;gt;$ make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The C Compiler is not able to compile a simple test program===&lt;br /&gt;
&lt;br /&gt;
When attempting to generate a solution for Xcode CMake fails with the following error&lt;br /&gt;
  -- Check for working C compiler using: Xcode -- broken&lt;br /&gt;
  CMake Error at /Applications/CMake 2.8-8.app/Contents/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):&lt;br /&gt;
   The C compiler &amp;quot;/usr/bin/gcc&amp;quot; is not able to compile a simple test program.&lt;br /&gt;
  &lt;br /&gt;
    It fails with the following output:&lt;br /&gt;
  &lt;br /&gt;
     Change Dir: /Users/danielmaloney/Documents/Unvanquished/build-xcode/CMakeFiles/CMakeTmp&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &lt;br /&gt;
    Run Build Command:/Applications/CMake\ 2.8-8.app/Contents/bin/cmakexbuild&lt;br /&gt;
    -project CMAKE_TRY_COMPILE.xcodeproj build -target&lt;br /&gt;
    cmTryCompileExec1400153232 -configuration Debug&lt;br /&gt;
  &lt;br /&gt;
    Error: No developer directory found at /Developer.  Run&lt;br /&gt;
    /usr/bin/xcode-select to update the developer directory path.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
    CMake will not be able to correctly generate this project.&lt;br /&gt;
  Call Stack (most recent call first):&lt;br /&gt;
    CMakeLists.txt:19 (project)&lt;br /&gt;
&lt;br /&gt;
This is due to Xcode 4.3 having a different directory structure to previous versions. Simply running the following command will correct this error:&lt;br /&gt;
 sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=844</id>
		<title>Compiling the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=844"/>
		<updated>2012-10-01T11:22:35Z</updated>

		<summary type="html">&lt;p&gt;Devhc: no, download-pk3.sh does not work on FreeBSD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mac OS X==&lt;br /&gt;
&lt;br /&gt;
The preferred way of building Unvanquished on Mac OS X is to use Apple's [https://developer.apple.com/xcode/ XCode] along with [http://www.cmake.org/cmake/resources/software.html CMake]; CMake is used to generate an XCode project file that is then used to compile the code. Note: Xcode currently does not build QVMs due to [https://github.com/Unvanquished/Unvanquished/issues/101 issue 101].&lt;br /&gt;
&lt;br /&gt;
First, you need to [[Getting_the_source|acquire the source code]].&lt;br /&gt;
&lt;br /&gt;
You will also need to build the libraries from source.&lt;br /&gt;
&lt;br /&gt;
Unvanquished requires the following libraries:&lt;br /&gt;
* The jpeg library, version 8 or higher. (Version 6 was known to have problems)&lt;br /&gt;
* Simple DirectMedia Layer (The binary provided by libsdl.org causes graphical corruptions. Compile from source or use homebrew/macports)&lt;br /&gt;
* OpenGL Extension Wrangler Library&lt;br /&gt;
* CuRL&lt;br /&gt;
* GMP&lt;br /&gt;
&lt;br /&gt;
Optional libraries:&lt;br /&gt;
* WebP&lt;br /&gt;
* Theora&lt;br /&gt;
* Speex&lt;br /&gt;
* XVid&lt;br /&gt;
* Vorbis&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
You only need to use one of the following methods (HomeBrew or compiling by hand). Please try and avoid mixing methods as this may produce unexpected results.&lt;br /&gt;
&lt;br /&gt;
====HomeBrew====&lt;br /&gt;
Install [http://mxcl.github.com/homebrew/ HomeBrew] and then run the following command&lt;br /&gt;
&lt;br /&gt;
 $ brew install nettle libjpeg curl sdl webp xvid gmp glew speex libvorbis theora&lt;br /&gt;
&lt;br /&gt;
All the necessary libraries should now have been installed.&lt;br /&gt;
&lt;br /&gt;
====Compiling by hand====&lt;br /&gt;
The following are shell scripts that download, compile, and install various libraries. This is more time consuming then other methods but might be useful if you need more control over your libraries&lt;br /&gt;
&lt;br /&gt;
=====JPEG=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.ijg.org/files/jpegsrc.v8d.tar.gz &amp;gt; jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ tar xvzf jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ cd jpeg-8d&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====The OpenGL Extension Wrangler Library (GLEW)=====&lt;br /&gt;
&lt;br /&gt;
 $ curl -L https://sourceforge.net/projects/glew/files/glew/1.7.0/glew-1.7.0.tgz/download &amp;gt; glew-1.7.0.tgz&lt;br /&gt;
 $ tar xvzf glew-1.7.0.tgz&lt;br /&gt;
 $ cd glew-1.7.0&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Simple DirectMedia Layer (SDL)=====&lt;br /&gt;
&lt;br /&gt;
Do not use the binaries provided by libsdl.org, as these are known to cause issues with gamma and color display. Instead, compile your own:&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15.tar.gz &amp;gt; SDL-1.2.15.tar.gz&lt;br /&gt;
 $ tar xvzf SDL-1.2.15.tar.gz&lt;br /&gt;
 $ cd SDL-1.2.15&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====The GNU MP Bignum Library (libgmp)=====&lt;br /&gt;
&lt;br /&gt;
 $ curl ftp://ftp.gmplib.org/pub/gmp-5.0.5/gmp-5.0.5.tar.bz2 &amp;gt; gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ tar xvjf gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ cd gmp-5.0.5&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Ogg=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz &amp;gt; libogg-1.3.0.tar.gz&lt;br /&gt;
 $ tar xvzf libogg-1.3.0.tar.gz&lt;br /&gt;
 $ cd libogg-1.3.0&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Vorbis=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz &amp;gt; libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ tar xvzf libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ cd libvorbis-1.3.3&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
===Configuring with CMake===&lt;br /&gt;
&lt;br /&gt;
# Run CMake.&lt;br /&gt;
# Enter the location of the source code.&lt;br /&gt;
# Enter the location in which you would like to build the source code. This should be a different directory.&lt;br /&gt;
# Hit &amp;quot;Configure&amp;quot;. You will be prompted as to which generator you would like to use. If you have Xcode installed, choose that. Wait while the configuration process runs. You may have to set the following:&lt;br /&gt;
## If CMake did not find your jpeg headers for some reason, set &amp;lt;code&amp;gt;JPEG_INCLUDE_DIR&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/path/to/Unvanquished/src/libs/jpeg&amp;lt;/code&amp;gt;.&lt;br /&gt;
## You may safely disable &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; to avoid having to compile the library. (At present, the format is not used by any game assets.)&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; to avoid having to compile nettle and hogweed.&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; to avoid having to compile Speex.&lt;br /&gt;
## Uncheck &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; to avoid having to compile Theora or Xvid. (At present, there are not cutscenes or any such that require it.)&lt;br /&gt;
## '''You will probably not be able to compile with the GLSL optimizer enabled; uncheck &amp;lt;code&amp;gt;USE_GLSL_OPTIMIZER&amp;lt;/code&amp;gt;'''&lt;br /&gt;
## If you have selected to generate XCode project files, make the &amp;lt;code&amp;gt;SDLMAIN_LIBRARY&amp;lt;/code&amp;gt; field blank. This option is not available if you have the generator set to Unix makefiles.&lt;br /&gt;
# Hit &amp;quot;Generate&amp;quot;.&lt;br /&gt;
# You may now close XCode.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
====With XCode====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compilation will fail unless you manually create certain directories needed by the build scripts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/build/dir/CMakeFiles&lt;br /&gt;
$ mkdir gpp{game,trem,ui}-qvm.dir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Either start XCode and open the project file (in the build directory you specified) or double-click the project file in Finder.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open the project file created by CMake, which should be in the build directory you specified.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the active target to &amp;quot;ALL_BUILD&amp;quot; and click Product&amp;amp;rarr;Build.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Terminal (Applications &amp;amp;rarr; Utilities &amp;amp;rarr; Terminal).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Input the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are on a multi-core or multi-processor machine, you may speed up the process by passing the &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; argument followed by the number of available cores to &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;; e.g., &amp;lt;code&amp;gt;make -j4&amp;lt;/code&amp;gt;. Note that doing so makes reading error messages more difficult, as multiple instances of the compiler will print to the screen at once, causing information to appear out of order.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing the build===&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
After compiling, you'll have to place the data files in the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; directory in your build directory. [[#Acquiring the Game Files|For download instructions, see below.]]&lt;br /&gt;
&lt;br /&gt;
Your file structure should look as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:Build_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
You may now start the application as such:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386&lt;br /&gt;
&lt;br /&gt;
Note that older machines will not support the new OpenGL 3 renderer, and must be started specifying the &amp;quot;vanilla&amp;quot; (aka &amp;quot;GL&amp;quot;) renderer:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386 +set cl_renderer GL&lt;br /&gt;
&lt;br /&gt;
===Bundling the Application===&lt;br /&gt;
&lt;br /&gt;
====With CPack====&lt;br /&gt;
&lt;br /&gt;
CPack is able to create standalone bundles (as well as many other types of installers). However you must generate the files using Unix Makefiles instead of XCode.&lt;br /&gt;
&lt;br /&gt;
 $ cd /path/to/Unvanquished-build&lt;br /&gt;
 $ cpack -G Bundle&lt;br /&gt;
&lt;br /&gt;
Some warnings will be printed however these can be safely ignored. There should be a file called Unvanquished.dmg in the Unvanquished-build folder.&lt;br /&gt;
&lt;br /&gt;
====Manually====&lt;br /&gt;
&lt;br /&gt;
You'll find the Mac [http://macdylibbundler.sourceforge.net/ dynamic library bundler] to be quite useful (you must generate the files using Unix Makefiles instead of XCode):&lt;br /&gt;
&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/macdylibbundler/files/macdylibbundler/0.4.1/dylibbundler0.4.1.zip/download &amp;gt; dylibbundler0.4.1.zip&lt;br /&gt;
 $ unzip dylibbundler0.4.1.zip&lt;br /&gt;
 $ cd dylibbundler&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
Once you've done that, you can proceed to create the application bundle. Note that these steps assume that you have downloaded the data files to &amp;lt;code&amp;gt;main/&amp;lt;/code&amp;gt; as shown above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git=/path/to/Unvanquished-git-repo&lt;br /&gt;
$ build=/path/to/Unvanquished-build-dir&lt;br /&gt;
$ mkdir -pv Unvanquished.app/Contents/{libs,MacOS,Resources,Frameworks}&lt;br /&gt;
$ cp -r $build/main Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ sips -s format tiff $git/debian/unvanquished.png --out temp.tiff&lt;br /&gt;
$ tiff2icns temp.tiff Unvanquished.app/Contents/Resources/Unvanquished.icns&lt;br /&gt;
$ rm temp.tiff&lt;br /&gt;
$ cp $build/daemon{,ded}.i386 $build/*.dylib Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ cp -r /Library/Frameworks/SDL.framework Unvanquished.app/Contents/Frameworks&lt;br /&gt;
$ install_name_tool -id @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/Frameworks/SDL.framework/Versions/A/SDL&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGLi386.dylib&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGL3i386.dylib&lt;br /&gt;
$ for binary in Unvanquished.app/Contents/MacOS/*.{i386,dylib}; do dylibbundler -b -x $binary -d $dest/Unvanquished.app/Contents/libs/; done&lt;br /&gt;
$ cp /usr/lib/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ chmod +w ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -id @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -change /usr/lib/libGLEW.1.7.0.dylib @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ cat &amp;gt; Unvanquished.app/Contents/Info.plist&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dict&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleDisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleExecutable&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;daemon.i386&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIconFile&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished.icns&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;net.Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleInfoDictionaryVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;6.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundlePackageType&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;APPL&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleShortVersionString&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt;&lt;br /&gt;
^d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;code&amp;gt;^d&amp;lt;/code&amp;gt; indicates pressing &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Ctrl&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;D&amp;lt;/span&amp;gt; on the keyboard.&lt;br /&gt;
&lt;br /&gt;
The contents of the completed application bundle should look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Bundle_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
'''Note''': If you compiled SDL from source, you will not see a directory titled &amp;lt;code&amp;gt;SDL.framework&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&lt;br /&gt;
===Visual Studio===&lt;br /&gt;
&lt;br /&gt;
CMake can generate Visual Studio projects for unvanquished however this feature is relatively new and may have some bugs.&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
# Double click on Visual_Studio32.bat&lt;br /&gt;
# Open build-32/Daemon.sln in Visual Studio 2010.&lt;br /&gt;
# In the two text boxes in the toolbar, select &amp;quot;Release&amp;quot; or &amp;quot;Debug&amp;quot; in the first one and Win32 in the second one&lt;br /&gt;
# Press F5 to build solution and run application, or just use Build &amp;amp;rarr; Build Solution to compile the code.&lt;br /&gt;
&lt;br /&gt;
====Important Notes====&lt;br /&gt;
&lt;br /&gt;
* LLVM is disabled and does not work correctly with CMake generated Visual Studio projects.&lt;br /&gt;
* ncurses is not supported under Visual Studio.&lt;br /&gt;
* The path to the build folder must not have any spaces otherwise generation of QVMs will fail. See [https://github.com/Unvanquished/Unvanquished/issues/102 issue 102]&lt;br /&gt;
* Due to limitations with cmake neither the startup project nor the working directory can be specified. These must be manually set to the following values for debugging the client under Visual Studio&lt;br /&gt;
** Right click on client and select &amp;quot;Set as StartUp project&amp;quot;.&lt;br /&gt;
** Right click on client, select properties, select Debugging and set &amp;quot;Working Directory&amp;quot; to $(TargetPath)\..&lt;br /&gt;
&lt;br /&gt;
===MinGW===&lt;br /&gt;
Unvanquished is supported under MinGW. The build process should be fairly similar to the Linux instructions.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: this may be incomplete --&amp;gt;&lt;br /&gt;
====Debian/Ubuntu====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libcurl4-gnutls-dev libfreetype6-dev libglew1.5-dev \&lt;br /&gt;
   libgmp3-dev libjpeg8-dev libncurses5-dev libogg-dev libopenal-dev \&lt;br /&gt;
   libpng12-dev libsdl1.2-dev libvorbis-dev zlib1g-dev nettle-dev \&lt;br /&gt;
   libwebp-dev libspeexdsp-dev libtheora-dev&lt;br /&gt;
&lt;br /&gt;
Actual dev package names may vary, e.g. libgmp-dev instead of libgmp3-dev and libglew-dev or libglew1.7-dev instead of libglew1.5-dev.&lt;br /&gt;
&lt;br /&gt;
Since we have a debian directory in the source, you can also to check what's needed then install the listed packages (choosing from alternatives as needed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ dpkg-checkbuilddeps&lt;br /&gt;
 …&lt;br /&gt;
 $ sudo apt-get install &amp;lt;var&amp;gt;package(s)&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If dpkg-checkbuilddeps produces no output, you have all necessary build dependencies. Also, debhelper's only needed if you're building .debs.&lt;br /&gt;
&lt;br /&gt;
====Gentoo====&lt;br /&gt;
&lt;br /&gt;
 $ emerge curl freetype glew gmp jpeg ncurses libogg openal libpng libsdl libvorbis zlib&lt;br /&gt;
&lt;br /&gt;
===Configuring the code with CMake===&lt;br /&gt;
&lt;br /&gt;
After you have [[Getting the source|acquired the source code]], you can proceed to compile. Unvanquished uses CMake, so you must have that installed. &lt;br /&gt;
&lt;br /&gt;
====Using ccmake (curses-based front-end)====&lt;br /&gt;
&lt;br /&gt;
On Debian or Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-curses-gui&lt;br /&gt;
&lt;br /&gt;
On Gentoo you should set the '''ncurses''' USE flag either globally or individually, just for cmake.&lt;br /&gt;
To add the USE flag globally, edit the USE array in /etc/make.conf for it to include '''ncurses'''.&lt;br /&gt;
To only install cmake with ncurses functionality, you could do the following:&lt;br /&gt;
&lt;br /&gt;
 $ echo 'dev-util/cmake ncurses' &amp;gt;&amp;gt; /etc/portage/package.use &amp;amp;&amp;amp; emerge cmake&lt;br /&gt;
&lt;br /&gt;
Note that in Ubuntu, &amp;lt;code&amp;gt;cmake-curses-gui&amp;lt;/code&amp;gt; is in Universe, which you may have to enable with &amp;lt;code&amp;gt;software-properties-gtk&amp;lt;/code&amp;gt;. Make sure to reload the software sources with &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt; afterwards.&lt;br /&gt;
&lt;br /&gt;
Next, configure the codebase.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir build&lt;br /&gt;
 $ cd build&lt;br /&gt;
 $ ccmake ..&lt;br /&gt;
&lt;br /&gt;
Or, in Debian or Ubuntu, you can build a package (but you'll need to have devscripts and fakeroot installed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ fakeroot dpkg-buildpackage -b -uc&lt;br /&gt;
 $ sudo dpkg -i &amp;lt;var&amp;gt;../unvanquished_*.deb&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once in &amp;lt;code&amp;gt;ccmake&amp;lt;/code&amp;gt;, use the following keys:&lt;br /&gt;
&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt; to configure. If an error occurs during this phase, make note of it and press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;e&amp;lt;/span&amp;gt; to dismiss it.&lt;br /&gt;
* Use the up and down arrow keys to navigate the compilation options.&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to enable or disable boolean options (i.e., on/off) or to edit textual options.&lt;br /&gt;
** Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Esc&amp;lt;/span&amp;gt; when editing a textual option to cancel the change.&lt;br /&gt;
&lt;br /&gt;
Once you have finished the configuration process, press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; again, then &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the makefile.&lt;br /&gt;
&lt;br /&gt;
====Using cmake-qt-gui (graphical front-end)====&lt;br /&gt;
&lt;br /&gt;
This graphical front end for cmake has its own package you must install:&lt;br /&gt;
&lt;br /&gt;
=====Debian/Ubuntu=====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-qt-gui&lt;br /&gt;
&lt;br /&gt;
=====Gentoo=====&lt;br /&gt;
&lt;br /&gt;
With the '''qt4''' USE flag enabled:&lt;br /&gt;
&lt;br /&gt;
 $ emerge cmake&lt;br /&gt;
&lt;br /&gt;
Once installed, run with &amp;lt;code&amp;gt;cmake-gui&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cmake-qt-gui.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
# Set the path where you have the source code downloaded.&lt;br /&gt;
# Set the path where you would like to build the engine. This may be the same directory if you wish.&lt;br /&gt;
# Click 'Configure'.&lt;br /&gt;
# Click 'Generate'.&lt;br /&gt;
&lt;br /&gt;
====Unnecessary libraries====&lt;br /&gt;
&lt;br /&gt;
Regardless of which front-end to cmake you use, you may want to disable some libraries that are not strictly necessary:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; &amp;amp;mdash; Some maps use WebP to store their textures. Currently this should have little impact on gameplay but more maps will likely use this format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_OPENAL&amp;lt;/code&amp;gt; &amp;amp;mdash; If this is disabled, SDL is used instead for sound.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CODEC_VORBIS&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause certain sound effects (those using the &amp;lt;code&amp;gt;.ogg&amp;lt;/code&amp;gt; format) not to play. At present, this has only a minor impact on gameplay, but more and more sounds will likely use the format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CURSES&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause the external (not in-game) console to not use curses; it will not be scrollable and will be similar to the console in the original Tremulous. This does in no way affect gameplay.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Theora.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Xvid.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_VOIP&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this removes VOIP support. Alternatively enabling &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; will use the libraries distributed with Unvanquished for VoIP&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; &amp;amp;mdash; Enable this to use the crypto libraries provided by Unvanquished.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ make -j4&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; switch to make allows you to speed up the compilation process by running it in multiple threads; set the number following this to the number of cores your processor(s) have.&lt;br /&gt;
&lt;br /&gt;
===Acquiring the Game Files===&lt;br /&gt;
&lt;br /&gt;
====Acquiring mandatory game files===&lt;br /&gt;
&lt;br /&gt;
The game files are not in the Git repository, and must be downloaded separately.&lt;br /&gt;
&lt;br /&gt;
On Linux, this may be done as follows:&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;[path to Unvanquished installation or build]&amp;lt;/var&amp;gt;/main&lt;br /&gt;
 $ for file in pak{0..6}.pk3; do&lt;br /&gt;
 wget -O $file &amp;quot;http://sourceforge.net/projects/unvanquished/files/Assets/$file/download&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
On FreeBSD:&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;[path to Unvanquished installation or build]&amp;lt;/var&amp;gt;/main&lt;br /&gt;
 $ for file in pak{0..6}.pk3; do&lt;br /&gt;
 fetch -r -o $file &amp;quot;http://sourceforge.net/projects/unvanquished/files/Assets/$file/download&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
On Mac OS X:&lt;br /&gt;
&lt;br /&gt;
 $ cd ~/Library/Application Support/Unvanquished/main&lt;br /&gt;
 $ for file in pak{0..6}.pk3; do&lt;br /&gt;
 curl -L &amp;quot;http://sourceforge.net/projects/unvanquished/files/Assets/$file/download&amp;quot; &amp;gt; $file&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Linux users may also use the &amp;lt;code&amp;gt;download-pk3.sh&amp;lt;/code&amp;gt; script that is distributed with the source code, which requires that curl be installed:&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;[path to Unvanquished source code]&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir -p ~/.Unvanquished/main&lt;br /&gt;
 $ ./download-pk3.sh ~/.Unvanquished/main&lt;br /&gt;
&lt;br /&gt;
====Downloading the map pack====&lt;br /&gt;
&lt;br /&gt;
The map pack exists only for convenience; if you do not download the map pack, Unvanquished will automatically download maps as needed when you attempt to play online.&lt;br /&gt;
&lt;br /&gt;
To download the map pack on Linux:&lt;br /&gt;
&lt;br /&gt;
 $ wget -O maps.7z &amp;quot;http://sourceforge.net/projects/unvanquished/files/Map%20Pack/maps.7z&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
To download the map pack on Mac OS X:&lt;br /&gt;
&lt;br /&gt;
 $ curl -L &amp;quot;http://sourceforge.net/projects/unvanquished/files/Map%20Pack/maps.7z&amp;quot; &amp;gt; maps.7z; done&lt;br /&gt;
&lt;br /&gt;
Note that you will need to unzip the map pack on either system as it is compressed with LZMA. Mac users can use the [http://wakaba.c3.cx/s/apps/unarchiver.html Unarchiver]. Uncompressing the archive on Linux is highly dependent on your distribution.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
===CMake cannot locate Newton===&lt;br /&gt;
&lt;br /&gt;
If CMake cannot find Newton, you'll need to set it up yourself.&lt;br /&gt;
&lt;br /&gt;
It should be in &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;/path/to/Unvanquished&amp;lt;/var&amp;gt;/src/libs/libnewton/libs/&amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt;/libNewton.so&amp;lt;/code&amp;gt;.&lt;br /&gt;
Be sure to replace &amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt; with the proper directory name.&lt;br /&gt;
&lt;br /&gt;
Use CMake as before to change the &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt; build setting to the said path:&lt;br /&gt;
&lt;br /&gt;
# Start the CMake configurator:&amp;lt;pre&amp;gt;$ ccmake ..&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Scroll down and highlight &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to begin editing and input in the path.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; to configure and &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the new makefiles.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Q&amp;lt;/span&amp;gt; to quit.&lt;br /&gt;
# Recompile the source:&amp;lt;pre&amp;gt;$ make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The C Compiler is not able to compile a simple test program===&lt;br /&gt;
&lt;br /&gt;
When attempting to generate a solution for Xcode CMake fails with the following error&lt;br /&gt;
  -- Check for working C compiler using: Xcode -- broken&lt;br /&gt;
  CMake Error at /Applications/CMake 2.8-8.app/Contents/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):&lt;br /&gt;
   The C compiler &amp;quot;/usr/bin/gcc&amp;quot; is not able to compile a simple test program.&lt;br /&gt;
  &lt;br /&gt;
    It fails with the following output:&lt;br /&gt;
  &lt;br /&gt;
     Change Dir: /Users/danielmaloney/Documents/Unvanquished/build-xcode/CMakeFiles/CMakeTmp&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &lt;br /&gt;
    Run Build Command:/Applications/CMake\ 2.8-8.app/Contents/bin/cmakexbuild&lt;br /&gt;
    -project CMAKE_TRY_COMPILE.xcodeproj build -target&lt;br /&gt;
    cmTryCompileExec1400153232 -configuration Debug&lt;br /&gt;
  &lt;br /&gt;
    Error: No developer directory found at /Developer.  Run&lt;br /&gt;
    /usr/bin/xcode-select to update the developer directory path.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
    CMake will not be able to correctly generate this project.&lt;br /&gt;
  Call Stack (most recent call first):&lt;br /&gt;
    CMakeLists.txt:19 (project)&lt;br /&gt;
&lt;br /&gt;
This is due to Xcode 4.3 having a different directory structure to previous versions. Simply running the following command will correct this error:&lt;br /&gt;
 sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=843</id>
		<title>Compiling the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=843"/>
		<updated>2012-10-01T11:20:15Z</updated>

		<summary type="html">&lt;p&gt;Devhc: someone fucked up the FreeBSD download instructions; fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mac OS X==&lt;br /&gt;
&lt;br /&gt;
The preferred way of building Unvanquished on Mac OS X is to use Apple's [https://developer.apple.com/xcode/ XCode] along with [http://www.cmake.org/cmake/resources/software.html CMake]; CMake is used to generate an XCode project file that is then used to compile the code. Note: Xcode currently does not build QVMs due to [https://github.com/Unvanquished/Unvanquished/issues/101 issue 101].&lt;br /&gt;
&lt;br /&gt;
First, you need to [[Getting_the_source|acquire the source code]].&lt;br /&gt;
&lt;br /&gt;
You will also need to build the libraries from source.&lt;br /&gt;
&lt;br /&gt;
Unvanquished requires the following libraries:&lt;br /&gt;
* The jpeg library, version 8 or higher. (Version 6 was known to have problems)&lt;br /&gt;
* Simple DirectMedia Layer (The binary provided by libsdl.org causes graphical corruptions. Compile from source or use homebrew/macports)&lt;br /&gt;
* OpenGL Extension Wrangler Library&lt;br /&gt;
* CuRL&lt;br /&gt;
* GMP&lt;br /&gt;
&lt;br /&gt;
Optional libraries:&lt;br /&gt;
* WebP&lt;br /&gt;
* Theora&lt;br /&gt;
* Speex&lt;br /&gt;
* XVid&lt;br /&gt;
* Vorbis&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
You only need to use one of the following methods (HomeBrew or compiling by hand). Please try and avoid mixing methods as this may produce unexpected results.&lt;br /&gt;
&lt;br /&gt;
====HomeBrew====&lt;br /&gt;
Install [http://mxcl.github.com/homebrew/ HomeBrew] and then run the following command&lt;br /&gt;
&lt;br /&gt;
 $ brew install nettle libjpeg curl sdl webp xvid gmp glew speex libvorbis theora&lt;br /&gt;
&lt;br /&gt;
All the necessary libraries should now have been installed.&lt;br /&gt;
&lt;br /&gt;
====Compiling by hand====&lt;br /&gt;
The following are shell scripts that download, compile, and install various libraries. This is more time consuming then other methods but might be useful if you need more control over your libraries&lt;br /&gt;
&lt;br /&gt;
=====JPEG=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.ijg.org/files/jpegsrc.v8d.tar.gz &amp;gt; jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ tar xvzf jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ cd jpeg-8d&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====The OpenGL Extension Wrangler Library (GLEW)=====&lt;br /&gt;
&lt;br /&gt;
 $ curl -L https://sourceforge.net/projects/glew/files/glew/1.7.0/glew-1.7.0.tgz/download &amp;gt; glew-1.7.0.tgz&lt;br /&gt;
 $ tar xvzf glew-1.7.0.tgz&lt;br /&gt;
 $ cd glew-1.7.0&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Simple DirectMedia Layer (SDL)=====&lt;br /&gt;
&lt;br /&gt;
Do not use the binaries provided by libsdl.org, as these are known to cause issues with gamma and color display. Instead, compile your own:&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15.tar.gz &amp;gt; SDL-1.2.15.tar.gz&lt;br /&gt;
 $ tar xvzf SDL-1.2.15.tar.gz&lt;br /&gt;
 $ cd SDL-1.2.15&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====The GNU MP Bignum Library (libgmp)=====&lt;br /&gt;
&lt;br /&gt;
 $ curl ftp://ftp.gmplib.org/pub/gmp-5.0.5/gmp-5.0.5.tar.bz2 &amp;gt; gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ tar xvjf gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ cd gmp-5.0.5&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Ogg=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz &amp;gt; libogg-1.3.0.tar.gz&lt;br /&gt;
 $ tar xvzf libogg-1.3.0.tar.gz&lt;br /&gt;
 $ cd libogg-1.3.0&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Vorbis=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz &amp;gt; libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ tar xvzf libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ cd libvorbis-1.3.3&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
===Configuring with CMake===&lt;br /&gt;
&lt;br /&gt;
# Run CMake.&lt;br /&gt;
# Enter the location of the source code.&lt;br /&gt;
# Enter the location in which you would like to build the source code. This should be a different directory.&lt;br /&gt;
# Hit &amp;quot;Configure&amp;quot;. You will be prompted as to which generator you would like to use. If you have Xcode installed, choose that. Wait while the configuration process runs. You may have to set the following:&lt;br /&gt;
## If CMake did not find your jpeg headers for some reason, set &amp;lt;code&amp;gt;JPEG_INCLUDE_DIR&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/path/to/Unvanquished/src/libs/jpeg&amp;lt;/code&amp;gt;.&lt;br /&gt;
## You may safely disable &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; to avoid having to compile the library. (At present, the format is not used by any game assets.)&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; to avoid having to compile nettle and hogweed.&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; to avoid having to compile Speex.&lt;br /&gt;
## Uncheck &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; to avoid having to compile Theora or Xvid. (At present, there are not cutscenes or any such that require it.)&lt;br /&gt;
## '''You will probably not be able to compile with the GLSL optimizer enabled; uncheck &amp;lt;code&amp;gt;USE_GLSL_OPTIMIZER&amp;lt;/code&amp;gt;'''&lt;br /&gt;
## If you have selected to generate XCode project files, make the &amp;lt;code&amp;gt;SDLMAIN_LIBRARY&amp;lt;/code&amp;gt; field blank. This option is not available if you have the generator set to Unix makefiles.&lt;br /&gt;
# Hit &amp;quot;Generate&amp;quot;.&lt;br /&gt;
# You may now close XCode.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
====With XCode====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compilation will fail unless you manually create certain directories needed by the build scripts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/build/dir/CMakeFiles&lt;br /&gt;
$ mkdir gpp{game,trem,ui}-qvm.dir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Either start XCode and open the project file (in the build directory you specified) or double-click the project file in Finder.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open the project file created by CMake, which should be in the build directory you specified.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the active target to &amp;quot;ALL_BUILD&amp;quot; and click Product&amp;amp;rarr;Build.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Terminal (Applications &amp;amp;rarr; Utilities &amp;amp;rarr; Terminal).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Input the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are on a multi-core or multi-processor machine, you may speed up the process by passing the &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; argument followed by the number of available cores to &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;; e.g., &amp;lt;code&amp;gt;make -j4&amp;lt;/code&amp;gt;. Note that doing so makes reading error messages more difficult, as multiple instances of the compiler will print to the screen at once, causing information to appear out of order.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing the build===&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
After compiling, you'll have to place the data files in the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; directory in your build directory. [[#Acquiring the Game Files|For download instructions, see below.]]&lt;br /&gt;
&lt;br /&gt;
Your file structure should look as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:Build_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
You may now start the application as such:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386&lt;br /&gt;
&lt;br /&gt;
Note that older machines will not support the new OpenGL 3 renderer, and must be started specifying the &amp;quot;vanilla&amp;quot; (aka &amp;quot;GL&amp;quot;) renderer:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386 +set cl_renderer GL&lt;br /&gt;
&lt;br /&gt;
===Bundling the Application===&lt;br /&gt;
&lt;br /&gt;
====With CPack====&lt;br /&gt;
&lt;br /&gt;
CPack is able to create standalone bundles (as well as many other types of installers). However you must generate the files using Unix Makefiles instead of XCode.&lt;br /&gt;
&lt;br /&gt;
 $ cd /path/to/Unvanquished-build&lt;br /&gt;
 $ cpack -G Bundle&lt;br /&gt;
&lt;br /&gt;
Some warnings will be printed however these can be safely ignored. There should be a file called Unvanquished.dmg in the Unvanquished-build folder.&lt;br /&gt;
&lt;br /&gt;
====Manually====&lt;br /&gt;
&lt;br /&gt;
You'll find the Mac [http://macdylibbundler.sourceforge.net/ dynamic library bundler] to be quite useful (you must generate the files using Unix Makefiles instead of XCode):&lt;br /&gt;
&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/macdylibbundler/files/macdylibbundler/0.4.1/dylibbundler0.4.1.zip/download &amp;gt; dylibbundler0.4.1.zip&lt;br /&gt;
 $ unzip dylibbundler0.4.1.zip&lt;br /&gt;
 $ cd dylibbundler&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
Once you've done that, you can proceed to create the application bundle. Note that these steps assume that you have downloaded the data files to &amp;lt;code&amp;gt;main/&amp;lt;/code&amp;gt; as shown above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git=/path/to/Unvanquished-git-repo&lt;br /&gt;
$ build=/path/to/Unvanquished-build-dir&lt;br /&gt;
$ mkdir -pv Unvanquished.app/Contents/{libs,MacOS,Resources,Frameworks}&lt;br /&gt;
$ cp -r $build/main Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ sips -s format tiff $git/debian/unvanquished.png --out temp.tiff&lt;br /&gt;
$ tiff2icns temp.tiff Unvanquished.app/Contents/Resources/Unvanquished.icns&lt;br /&gt;
$ rm temp.tiff&lt;br /&gt;
$ cp $build/daemon{,ded}.i386 $build/*.dylib Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ cp -r /Library/Frameworks/SDL.framework Unvanquished.app/Contents/Frameworks&lt;br /&gt;
$ install_name_tool -id @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/Frameworks/SDL.framework/Versions/A/SDL&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGLi386.dylib&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGL3i386.dylib&lt;br /&gt;
$ for binary in Unvanquished.app/Contents/MacOS/*.{i386,dylib}; do dylibbundler -b -x $binary -d $dest/Unvanquished.app/Contents/libs/; done&lt;br /&gt;
$ cp /usr/lib/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ chmod +w ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -id @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -change /usr/lib/libGLEW.1.7.0.dylib @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ cat &amp;gt; Unvanquished.app/Contents/Info.plist&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dict&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleDisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleExecutable&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;daemon.i386&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIconFile&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished.icns&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;net.Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleInfoDictionaryVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;6.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundlePackageType&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;APPL&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleShortVersionString&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt;&lt;br /&gt;
^d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;code&amp;gt;^d&amp;lt;/code&amp;gt; indicates pressing &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Ctrl&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;D&amp;lt;/span&amp;gt; on the keyboard.&lt;br /&gt;
&lt;br /&gt;
The contents of the completed application bundle should look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Bundle_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
'''Note''': If you compiled SDL from source, you will not see a directory titled &amp;lt;code&amp;gt;SDL.framework&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&lt;br /&gt;
===Visual Studio===&lt;br /&gt;
&lt;br /&gt;
CMake can generate Visual Studio projects for unvanquished however this feature is relatively new and may have some bugs.&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
# Double click on Visual_Studio32.bat&lt;br /&gt;
# Open build-32/Daemon.sln in Visual Studio 2010.&lt;br /&gt;
# In the two text boxes in the toolbar, select &amp;quot;Release&amp;quot; or &amp;quot;Debug&amp;quot; in the first one and Win32 in the second one&lt;br /&gt;
# Press F5 to build solution and run application, or just use Build &amp;amp;rarr; Build Solution to compile the code.&lt;br /&gt;
&lt;br /&gt;
====Important Notes====&lt;br /&gt;
&lt;br /&gt;
* LLVM is disabled and does not work correctly with CMake generated Visual Studio projects.&lt;br /&gt;
* ncurses is not supported under Visual Studio.&lt;br /&gt;
* The path to the build folder must not have any spaces otherwise generation of QVMs will fail. See [https://github.com/Unvanquished/Unvanquished/issues/102 issue 102]&lt;br /&gt;
* Due to limitations with cmake neither the startup project nor the working directory can be specified. These must be manually set to the following values for debugging the client under Visual Studio&lt;br /&gt;
** Right click on client and select &amp;quot;Set as StartUp project&amp;quot;.&lt;br /&gt;
** Right click on client, select properties, select Debugging and set &amp;quot;Working Directory&amp;quot; to $(TargetPath)\..&lt;br /&gt;
&lt;br /&gt;
===MinGW===&lt;br /&gt;
Unvanquished is supported under MinGW. The build process should be fairly similar to the Linux instructions.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: this may be incomplete --&amp;gt;&lt;br /&gt;
====Debian/Ubuntu====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libcurl4-gnutls-dev libfreetype6-dev libglew1.5-dev \&lt;br /&gt;
   libgmp3-dev libjpeg8-dev libncurses5-dev libogg-dev libopenal-dev \&lt;br /&gt;
   libpng12-dev libsdl1.2-dev libvorbis-dev zlib1g-dev nettle-dev \&lt;br /&gt;
   libwebp-dev libspeexdsp-dev libtheora-dev&lt;br /&gt;
&lt;br /&gt;
Actual dev package names may vary, e.g. libgmp-dev instead of libgmp3-dev and libglew-dev or libglew1.7-dev instead of libglew1.5-dev.&lt;br /&gt;
&lt;br /&gt;
Since we have a debian directory in the source, you can also to check what's needed then install the listed packages (choosing from alternatives as needed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ dpkg-checkbuilddeps&lt;br /&gt;
 …&lt;br /&gt;
 $ sudo apt-get install &amp;lt;var&amp;gt;package(s)&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If dpkg-checkbuilddeps produces no output, you have all necessary build dependencies. Also, debhelper's only needed if you're building .debs.&lt;br /&gt;
&lt;br /&gt;
====Gentoo====&lt;br /&gt;
&lt;br /&gt;
 $ emerge curl freetype glew gmp jpeg ncurses libogg openal libpng libsdl libvorbis zlib&lt;br /&gt;
&lt;br /&gt;
===Configuring the code with CMake===&lt;br /&gt;
&lt;br /&gt;
After you have [[Getting the source|acquired the source code]], you can proceed to compile. Unvanquished uses CMake, so you must have that installed. &lt;br /&gt;
&lt;br /&gt;
====Using ccmake (curses-based front-end)====&lt;br /&gt;
&lt;br /&gt;
On Debian or Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-curses-gui&lt;br /&gt;
&lt;br /&gt;
On Gentoo you should set the '''ncurses''' USE flag either globally or individually, just for cmake.&lt;br /&gt;
To add the USE flag globally, edit the USE array in /etc/make.conf for it to include '''ncurses'''.&lt;br /&gt;
To only install cmake with ncurses functionality, you could do the following:&lt;br /&gt;
&lt;br /&gt;
 $ echo 'dev-util/cmake ncurses' &amp;gt;&amp;gt; /etc/portage/package.use &amp;amp;&amp;amp; emerge cmake&lt;br /&gt;
&lt;br /&gt;
Note that in Ubuntu, &amp;lt;code&amp;gt;cmake-curses-gui&amp;lt;/code&amp;gt; is in Universe, which you may have to enable with &amp;lt;code&amp;gt;software-properties-gtk&amp;lt;/code&amp;gt;. Make sure to reload the software sources with &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt; afterwards.&lt;br /&gt;
&lt;br /&gt;
Next, configure the codebase.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir build&lt;br /&gt;
 $ cd build&lt;br /&gt;
 $ ccmake ..&lt;br /&gt;
&lt;br /&gt;
Or, in Debian or Ubuntu, you can build a package (but you'll need to have devscripts and fakeroot installed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ fakeroot dpkg-buildpackage -b -uc&lt;br /&gt;
 $ sudo dpkg -i &amp;lt;var&amp;gt;../unvanquished_*.deb&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once in &amp;lt;code&amp;gt;ccmake&amp;lt;/code&amp;gt;, use the following keys:&lt;br /&gt;
&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt; to configure. If an error occurs during this phase, make note of it and press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;e&amp;lt;/span&amp;gt; to dismiss it.&lt;br /&gt;
* Use the up and down arrow keys to navigate the compilation options.&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to enable or disable boolean options (i.e., on/off) or to edit textual options.&lt;br /&gt;
** Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Esc&amp;lt;/span&amp;gt; when editing a textual option to cancel the change.&lt;br /&gt;
&lt;br /&gt;
Once you have finished the configuration process, press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; again, then &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the makefile.&lt;br /&gt;
&lt;br /&gt;
====Using cmake-qt-gui (graphical front-end)====&lt;br /&gt;
&lt;br /&gt;
This graphical front end for cmake has its own package you must install:&lt;br /&gt;
&lt;br /&gt;
=====Debian/Ubuntu=====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-qt-gui&lt;br /&gt;
&lt;br /&gt;
=====Gentoo=====&lt;br /&gt;
&lt;br /&gt;
With the '''qt4''' USE flag enabled:&lt;br /&gt;
&lt;br /&gt;
 $ emerge cmake&lt;br /&gt;
&lt;br /&gt;
Once installed, run with &amp;lt;code&amp;gt;cmake-gui&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cmake-qt-gui.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
# Set the path where you have the source code downloaded.&lt;br /&gt;
# Set the path where you would like to build the engine. This may be the same directory if you wish.&lt;br /&gt;
# Click 'Configure'.&lt;br /&gt;
# Click 'Generate'.&lt;br /&gt;
&lt;br /&gt;
====Unnecessary libraries====&lt;br /&gt;
&lt;br /&gt;
Regardless of which front-end to cmake you use, you may want to disable some libraries that are not strictly necessary:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; &amp;amp;mdash; Some maps use WebP to store their textures. Currently this should have little impact on gameplay but more maps will likely use this format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_OPENAL&amp;lt;/code&amp;gt; &amp;amp;mdash; If this is disabled, SDL is used instead for sound.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CODEC_VORBIS&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause certain sound effects (those using the &amp;lt;code&amp;gt;.ogg&amp;lt;/code&amp;gt; format) not to play. At present, this has only a minor impact on gameplay, but more and more sounds will likely use the format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CURSES&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause the external (not in-game) console to not use curses; it will not be scrollable and will be similar to the console in the original Tremulous. This does in no way affect gameplay.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Theora.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Xvid.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_VOIP&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this removes VOIP support. Alternatively enabling &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; will use the libraries distributed with Unvanquished for VoIP&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; &amp;amp;mdash; Enable this to use the crypto libraries provided by Unvanquished.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ make -j4&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; switch to make allows you to speed up the compilation process by running it in multiple threads; set the number following this to the number of cores your processor(s) have.&lt;br /&gt;
&lt;br /&gt;
===Acquiring the Game Files===&lt;br /&gt;
&lt;br /&gt;
====Acquiring mandatory game files===&lt;br /&gt;
&lt;br /&gt;
The game files are not in the Git repository, and must be downloaded separately.&lt;br /&gt;
&lt;br /&gt;
On Linux, this may be done as follows:&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;[path to Unvanquished installation or build]&amp;lt;/var&amp;gt;/main&lt;br /&gt;
 $ for file in pak{0..6}.pk3; do&lt;br /&gt;
 wget -O $file &amp;quot;http://sourceforge.net/projects/unvanquished/files/Assets/$file/download&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
On FreeBSD:&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;[path to Unvanquished installation or build]&amp;lt;/var&amp;gt;/main&lt;br /&gt;
 $ for file in pak{0..6}.pk3; do&lt;br /&gt;
 fetch -r -o $file &amp;quot;http://sourceforge.net/projects/unvanquished/files/Assets/$file/download&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
On Mac OS X:&lt;br /&gt;
&lt;br /&gt;
 $ cd ~/Library/Application Support/Unvanquished/main&lt;br /&gt;
 $ for file in pak{0..6}.pk3; do&lt;br /&gt;
 curl -L &amp;quot;http://sourceforge.net/projects/unvanquished/files/Assets/$file/download&amp;quot; &amp;gt; $file&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Linux and BSD users may also use the &amp;lt;code&amp;gt;download-pk3.sh&amp;lt;/code&amp;gt; script that is distributed with the source code, which requires that curl be installed:&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;[path to Unvanquished source code]&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir -p ~/.Unvanquished/main&lt;br /&gt;
 $ ./download-pk3.sh ~/.Unvanquished/main&lt;br /&gt;
&lt;br /&gt;
====Downloading the map pack====&lt;br /&gt;
&lt;br /&gt;
The map pack exists only for convenience; if you do not download the map pack, Unvanquished will automatically download maps as needed when you attempt to play online.&lt;br /&gt;
&lt;br /&gt;
To download the map pack on Linux:&lt;br /&gt;
&lt;br /&gt;
 $ wget -O maps.7z &amp;quot;http://sourceforge.net/projects/unvanquished/files/Map%20Pack/maps.7z&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
To download the map pack on Mac OS X:&lt;br /&gt;
&lt;br /&gt;
 $ curl -L &amp;quot;http://sourceforge.net/projects/unvanquished/files/Map%20Pack/maps.7z&amp;quot; &amp;gt; maps.7z; done&lt;br /&gt;
&lt;br /&gt;
Note that you will need to unzip the map pack on either system as it is compressed with LZMA. Mac users can use the [http://wakaba.c3.cx/s/apps/unarchiver.html Unarchiver]. Uncompressing the archive on Linux is highly dependent on your distribution.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
===CMake cannot locate Newton===&lt;br /&gt;
&lt;br /&gt;
If CMake cannot find Newton, you'll need to set it up yourself.&lt;br /&gt;
&lt;br /&gt;
It should be in &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;/path/to/Unvanquished&amp;lt;/var&amp;gt;/src/libs/libnewton/libs/&amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt;/libNewton.so&amp;lt;/code&amp;gt;.&lt;br /&gt;
Be sure to replace &amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt; with the proper directory name.&lt;br /&gt;
&lt;br /&gt;
Use CMake as before to change the &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt; build setting to the said path:&lt;br /&gt;
&lt;br /&gt;
# Start the CMake configurator:&amp;lt;pre&amp;gt;$ ccmake ..&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Scroll down and highlight &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to begin editing and input in the path.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; to configure and &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the new makefiles.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Q&amp;lt;/span&amp;gt; to quit.&lt;br /&gt;
# Recompile the source:&amp;lt;pre&amp;gt;$ make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The C Compiler is not able to compile a simple test program===&lt;br /&gt;
&lt;br /&gt;
When attempting to generate a solution for Xcode CMake fails with the following error&lt;br /&gt;
  -- Check for working C compiler using: Xcode -- broken&lt;br /&gt;
  CMake Error at /Applications/CMake 2.8-8.app/Contents/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):&lt;br /&gt;
   The C compiler &amp;quot;/usr/bin/gcc&amp;quot; is not able to compile a simple test program.&lt;br /&gt;
  &lt;br /&gt;
    It fails with the following output:&lt;br /&gt;
  &lt;br /&gt;
     Change Dir: /Users/danielmaloney/Documents/Unvanquished/build-xcode/CMakeFiles/CMakeTmp&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &lt;br /&gt;
    Run Build Command:/Applications/CMake\ 2.8-8.app/Contents/bin/cmakexbuild&lt;br /&gt;
    -project CMAKE_TRY_COMPILE.xcodeproj build -target&lt;br /&gt;
    cmTryCompileExec1400153232 -configuration Debug&lt;br /&gt;
  &lt;br /&gt;
    Error: No developer directory found at /Developer.  Run&lt;br /&gt;
    /usr/bin/xcode-select to update the developer directory path.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
    CMake will not be able to correctly generate this project.&lt;br /&gt;
  Call Stack (most recent call first):&lt;br /&gt;
    CMakeLists.txt:19 (project)&lt;br /&gt;
&lt;br /&gt;
This is due to Xcode 4.3 having a different directory structure to previous versions. Simply running the following command will correct this error:&lt;br /&gt;
 sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Old/Mapping&amp;diff=840</id>
		<title>Old/Mapping</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Old/Mapping&amp;diff=840"/>
		<updated>2012-10-01T11:12:58Z</updated>

		<summary type="html">&lt;p&gt;Devhc: reword&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
Map geometry is created using either a conventional modeling program (such as Blender) or with some variant of Radiant. Do note that if you intend on using Blender, you will need to use Radiant to perform a few final steps. This is discussed further below.&lt;br /&gt;
&lt;br /&gt;
Radiant is the name used to refer to id Software's map editing tools from Quake 3 onwards.&lt;br /&gt;
&lt;br /&gt;
* QuakeEd &amp;amp;mdash; Developed internally at id and used to create maps for Quake. Written for NextStep.&lt;br /&gt;
* QE4 &amp;amp;mdash; Developed internally at id and used to create maps for Quake II.&lt;br /&gt;
* QERadiant &amp;amp;mdash; A fork of the released QE4 source code by Robert Duffy.&lt;br /&gt;
* Q3Radiant' &amp;amp;mdash; id Software's fork of QERadiant used to create maps for Quake III. Windows-only.&lt;br /&gt;
* [http://icculus.org/gtkradiant/ GtkRadiant] &amp;amp;mdash; A port of Q3Radiant using the Gtk+ GUI toolkit, making it cross-platform (available to Linux and Mac OS X). Development stalled after 1.5 for a number of years, but has resumed with the recent release of version 1.6, which (for now) removes support for a number of games, including Tremulous.&lt;br /&gt;
* [http://dev.alientrap.org/projects/show/netradiant NetRadiant] &amp;amp;mdash; A fork of GtkRadiant (?) by Alientrap, developers of the former (FOSS) Nexuiz project. The project page for this fork is currently down, but builds are still available from noted Tremulous mapper [http://ingar.satgnu.net/gtkradiant/ Ingar's site].&lt;br /&gt;
* [http://darkradiant.sourceforge.net/ DarkRadiant] &amp;amp;mdash; A fork of GtkRadiant with the aim to improve the user interface and primarily intended to support Doom 3.&lt;br /&gt;
* [http://www.redsaurus.net/00/node/4 MacRadiant] &amp;amp;mdash; A port of GtkRadiant to Mac OS X.&lt;br /&gt;
&amp;lt;!-- TODO: provide a suggestion as to which to use --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compilation===&lt;br /&gt;
&lt;br /&gt;
Creation of a map using either method is only part of the process; before a map can be played in-game, the map must then be &amp;lt;dfn&amp;gt;compiled&amp;lt;/dfn&amp;gt;. This is a time-consuming process that can take hours even with new hardware. Compilation consists of several phases, discussed below. Note that it is not essential to understand precisely what happens in each of these phases. At a minimum, understand that compilation must occur before a map is ready to be played and that it is a highly time-consuming process.&lt;br /&gt;
&lt;br /&gt;
* '''Space partitioning'''. Map geometry is subdivided (partitioned) in half successively, effectively breaking the map down into progressively smaller chunks. The reason for this is to improve in-game render speed; this is done in such a manner that the engine can quickly determine what portions of the map the player is not facing, and therefore avoid having to render such areas. &amp;lt;!-- TODO: create a .gif showing what this might look like --&amp;gt; &amp;lt;!-- TODO: create some kind of &amp;quot;tech note&amp;quot; template with verbiage indicating that artists may safely ignore this bit --&amp;gt; The scheme &amp;lt;!-- scheme isn't really a good word, because BSP alone does not describe the algorithm for selecting good splitter planes --&amp;gt; by which this is done is referred to as [http://en.wikipedia.org/wiki/Binary_space_partitioning binary spatial partitioning], and this (as well as the data structure storing this information) is most often referred to as BSP. With each split, the compiler attempts to minimize the amount of geometry that must be cut to minimize the resulting size of the BSP. &amp;lt;!-- TODO: elaborate --&amp;gt;&lt;br /&gt;
* '''[http://en.wikipedia.org/wiki/Potentially_visible_set Potentially visible set] calculation'''. This stage of compilation takes the rendering boost that BSP provides by &amp;lt;!-- TODO: fact check this; for all I know, view cells in Quake are not related to the BSP --&amp;gt; calculating which regions of the map are visible when viewed from other areas. Each of these areas for which a potentially visible set (PVS) is calculated is referred to as a &amp;lt;dfn&amp;gt;cell&amp;lt;/dfn&amp;gt; or &amp;lt;dfn&amp;gt;portal&amp;lt;/dfn&amp;gt;. &amp;lt;!-- not sure which of &amp;quot;cell&amp;quot; or &amp;quot;portal&amp;quot; is preferred parlance in Quake-speak --&amp;gt; As an example, imagine standing in a room in a house. &amp;lt;!-- TODO: a pic would be nice --&amp;gt; Using only BSP, the game engine could very quickly determine which rooms you are not facing (as if the rooms were made of glass and every room were visible from every other room), and skip drawing them. However, while standing in that room, there are many other rooms in the house that you likely also cannot see (as the walls of the rooms are probably not glass and very much opaque). This is PVS in a nutshell: for that room, the PVS might only be an adjoining hallway and a closet (assuming that the doors are open). In a large house with many rooms, in a worst-case scenario (where both the player is facing the hallway and the closet at the same time), the engine still has very little to draw as compared to the entire house. This is discussed in greater detail on [http://fabiensanglard.net/doom3/dmap.php Fabien Sanglard's blog].&lt;br /&gt;
* '''Lightmap calculation'''. Using the position, color, and type &amp;lt;!-- there are different types of lights in Q3, right? --&amp;gt; of lights placed in the map editor, the compiler generates a static &amp;lt;dfn&amp;gt;lightmap&amp;lt;/dfn&amp;gt; which is essentially painted over (blended with) the map textures at run-time to create shadows and areas of light and dark. (Otherwise, the map would be the same brightness throughout and devoid of shadow). Note that this is not the extent of the engine's lighting capabilities; additional (dynamic) lighting is performed in real-time to create effects such as light generated from muzzle flashes. &amp;lt;!-- TODO: elaborate further --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ^^^ we keep referring to &amp;quot;the compiler&amp;quot;, when really it's separate programs. I am not sure what the name of these are --&amp;gt;&lt;br /&gt;
&amp;lt;!-- TODO:&lt;br /&gt;
===Conventional modeling vs. Radiant===&lt;br /&gt;
&lt;br /&gt;
discuss the difference between creating brushes out of triangles with Blender (or just triangles, idr what that is called) and actually creating brushes with constructive solid geometry)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using other than Radiant to create maps===&lt;br /&gt;
&lt;br /&gt;
Conventional modeling software other than Blender is outside of the scope of this document; only Blender will be discussed. &amp;lt;!-- though any enterprising wiki editors are free to change this --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While geometry other than triangles may be used during map creation, the map compilation tools can only handle brush geometry; as of now, the &amp;lt;code&amp;gt;.map&amp;lt;/code&amp;gt; exporter for Blender can only convert polygonal geometry (triangles) to brushes, and as such it would be pointless to use anything else during the construction of a map except as a placeholder. &amp;lt;!-- not sure of this: Also note that as of now, entity and light placement must be done in Radiant --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A comprehensive guide of using Blender to create map geometry ready for Radiant and the compilation tools is available from [http://www.katsbits.com/tutorials/blender/map-basics-tutorial.php katsbits].&lt;br /&gt;
&lt;br /&gt;
==Design mentality==&lt;br /&gt;
&lt;br /&gt;
This section is oriented towards those with less experience mapping.&lt;br /&gt;
&lt;br /&gt;
There are many potential pitfalls of map creation. Possibly the easiest to fall into is spending too little time on design and spending too much time on map details before even having a working base design. There is an adage that applies well here: &amp;quot;Weeks of effort will save hours of planning.&amp;quot; Before you begin creating, do not concern yourself so much with visual elements but the physical layout of the map.&lt;br /&gt;
&lt;br /&gt;
When designing a map, consider the following:&lt;br /&gt;
* What can players use to help themselves navigate the map? What would make a good landmark or how can different areas of the map be differentiated visually?&lt;br /&gt;
* Is the map partitioned well visibly? Are there any areas that may cause poor performance?&lt;br /&gt;
* Are corridors large enough to facilitate combat?&lt;br /&gt;
* Does the map provide other good locations to build in aside the defaults?&lt;br /&gt;
* Is the map biased towards one side or another?&lt;br /&gt;
&lt;br /&gt;
==Using GtkRadiant==&lt;br /&gt;
&lt;br /&gt;
===Editing brush geometry===&lt;br /&gt;
&lt;br /&gt;
* Click and drag to create a new brush.&lt;br /&gt;
* With a brush selected, click and drag the mouse cursor to change the size of the selected brushes.&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Esc&amp;lt;/span&amp;gt; to deslect everything.&lt;br /&gt;
* Press and hold &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Shift&amp;lt;/span&amp;gt; and click brushes to select them.&lt;br /&gt;
&lt;br /&gt;
===Placing entities===&lt;br /&gt;
&lt;br /&gt;
* Right-click in a 2d viewport to access the entity placement context menu. &amp;lt;!-- TODO: discuss which entities are required to place --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Navigating the views===&lt;br /&gt;
&lt;br /&gt;
====3d viewport====&lt;br /&gt;
&lt;br /&gt;
* Scroll using the mouse wheel to dolly the camera forward or back.&lt;br /&gt;
* Right-click on the viewport to look around. Using the mouse wheel to dolly the camera works while in this mode.&lt;br /&gt;
&lt;br /&gt;
====2d viewports====&lt;br /&gt;
&lt;br /&gt;
* Right-click and drag to move the views around.&lt;br /&gt;
* Change the view with the toolbar button:&lt;br /&gt;
&lt;br /&gt;
[[Image:gtkradiant_toolbar_change_views.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Size Guidelines==&lt;br /&gt;
&lt;br /&gt;
Player sizes, in quake units (qu)&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Dretch		||30&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Granger	||40&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Adv Granger	||40&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Basilisk	||36&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Adv Basilisk	||42&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Marauder	||46×46×36&lt;br /&gt;
|-&lt;br /&gt;
|Adv Marauder	||50×50×40&lt;br /&gt;
|-&lt;br /&gt;
|Dragoon	||52×52×55&lt;br /&gt;
|-&lt;br /&gt;
|Adv Dragoon	||58×58×66&lt;br /&gt;
|-&lt;br /&gt;
|Tyrant		||64×64×92&lt;br /&gt;
|-&lt;br /&gt;
|Human		||30×30×56&lt;br /&gt;
|-&lt;br /&gt;
|Crouching	||30×30×40&lt;br /&gt;
|-&lt;br /&gt;
|Battlesuit	||30×30×72&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Players will need an opening at least 1qu wider to fit through (possibly 2). In addition, player bounding boxes do not rotate, which means diagonal corridors would need to be wider (thus the majority should be axis aligned&lt;br /&gt;
&lt;br /&gt;
Map scale:&lt;br /&gt;
32qu = 1m&lt;br /&gt;
&lt;br /&gt;
Doorways should be a minimum of 3m×3m, preferably around 4m×4m. Corridors should be a minimum of 5m wide, although it is ''possible'' to use a mix of 4-5m (see Niveus for an example), and at most 8m wide. Do not create corridors more than 40m long without plenty of cover.&lt;br /&gt;
Currently large open areas and underwater areas are very human biased.&lt;br /&gt;
&lt;br /&gt;
Alien bases need cover to hide things behind, the entrances should be ~4×4m and should not be easily visible from outside other entrances.&lt;br /&gt;
&lt;br /&gt;
==New Features==&lt;br /&gt;
&lt;br /&gt;
You may be interested in the list of [[Engine features|engine features]].&lt;br /&gt;
&lt;br /&gt;
* [[Navigation Meshes]]&lt;br /&gt;
* Additional shader functions (e.g., normal mapping) have been added; please see the [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm XReal shader manual] for more information.&lt;br /&gt;
&lt;br /&gt;
==Testing maps in-game==&lt;br /&gt;
&lt;br /&gt;
For testing purposes, it is most convenient to place your compiled &amp;lt;code&amp;gt;.bsp&amp;lt;/code&amp;gt; file in the &amp;lt;code&amp;gt;main/maps/&amp;lt;/code&amp;gt; subdirectory of the [[Running_the_game#Data_locations|data location]] appropriate to your system. Once you have done that, you can load your map with either the &amp;lt;code&amp;gt;devmap&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt; commands after setting &amp;lt;code&amp;gt;sv_pure&amp;lt;/code&amp;gt; to 0. The former allows using developer mode commands (&amp;quot;cheats&amp;quot;) that make it easier to test. Additional commands are discussed on the [[testing]] page.&lt;br /&gt;
&lt;br /&gt;
==Testing maps publicly==&lt;br /&gt;
&lt;br /&gt;
You may opt to use a [http://188.40.187.142/ Map Test Server] to publicly test maps under development. You can upload a map there as soon as you've [[Packaging game data|packaged]] it accordingly.&lt;br /&gt;
&lt;br /&gt;
==Packaging maps for distribution==&lt;br /&gt;
&lt;br /&gt;
If you want to distribute your map to the world (either for testing or as a final release), you'll have to create a [[Packaging game data|package]]. Such packages may be distributed automatically via the server download feature or other means.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
* [http://ingar.satgnu.net/gtkradiant/ Ingar's NetRadiant builds]&lt;br /&gt;
** [http://ingar.satgnu.net/gtkradiant/files/gamepacks/UnvanquishedPack.zip Unvanquished game pack]&lt;br /&gt;
* [http://www.custommapmakers.org/wiki/index.php/Main_Page Custom Map Maker's Wiki]&lt;br /&gt;
* [http://dev.xonotic.org/projects/xonotic/wiki/Mapping Xonotic mapping resources]&lt;br /&gt;
* [http://tremulous.net/forum/index.php?topic=14411.0 Useful mapping links thread on Tremulous forums]&lt;br /&gt;
* [http://tremmapping.pbworks.com/w/page/22453200/Starting%20Tremulous%20Mapping Starting Tremulous Mapping]&lt;br /&gt;
* [http://tremmapping.pbworks.com/w/page/22453205/Understanding%20Vis%20and%20Hint%20Brushes Understanding Vis and Hint Brushes]&lt;br /&gt;
* [http://q3map2.everyonelookbusy.net/shader_manual/ Quake 3 Shader Manual] (outdated; please see the XReal shader manual)&lt;br /&gt;
* [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm XReal Shader Manual]&lt;br /&gt;
* [http://q3map2.robotrenegade.com/ Q3Map2 homepage]&lt;br /&gt;
* [http://en.wikibooks.org/wiki/Q3Map2 Q3Map2 Documentation]&lt;br /&gt;
* [http://shaderlab.com/q3map2/manual/ Additional Q3Map2 Documentation]&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Old/Mapping&amp;diff=839</id>
		<title>Old/Mapping</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Old/Mapping&amp;diff=839"/>
		<updated>2012-10-01T11:08:16Z</updated>

		<summary type="html">&lt;p&gt;Devhc: reword&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
Map geometry is created using either a conventional modeling program (such as Blender) or with some variant of Radiant. Do note that if you intend on using Blender, you will need to use Radiant to perform a few final steps. This is discussed further below.&lt;br /&gt;
&lt;br /&gt;
Radiant is the name used to refer to id Software's map editing tools from Quake 3 onwards.&lt;br /&gt;
&lt;br /&gt;
* QuakeEd &amp;amp;mdash; Developed internally at id and used to create maps for Quake. Written for NextStep.&lt;br /&gt;
* QE4 &amp;amp;mdash; Developed internally at id and used to create maps for Quake II.&lt;br /&gt;
* QERadiant &amp;amp;mdash; A fork of the released QE4 source code by Robert Duffy.&lt;br /&gt;
* Q3Radiant' &amp;amp;mdash; id Software's fork of QERadiant used to create maps for Quake III. Windows-only.&lt;br /&gt;
* [http://icculus.org/gtkradiant/ GtkRadiant] &amp;amp;mdash; A port of Q3Radiant using the Gtk+ GUI toolkit, making it cross-platform (available to Linux and Mac OS X). Development stalled after 1.5 for a number of years, but has resumed with the recent release of version 1.6, which (for now) removes support for a number of games, including Tremulous.&lt;br /&gt;
* [http://dev.alientrap.org/projects/show/netradiant NetRadiant] &amp;amp;mdash; A fork of GtkRadiant (?) by Alientrap, developers of the former (FOSS) Nexuiz project. The project page for this fork is currently down, but builds are still available from noted Tremulous mapper [http://ingar.satgnu.net/gtkradiant/ Ingar's site].&lt;br /&gt;
* [http://darkradiant.sourceforge.net/ DarkRadiant] &amp;amp;mdash; A fork of GtkRadiant with the aim to improve the user interface and primarily intended to support Doom 3.&lt;br /&gt;
* [http://www.redsaurus.net/00/node/4 MacRadiant] &amp;amp;mdash; A port of GtkRadiant to Mac OS X.&lt;br /&gt;
&amp;lt;!-- TODO: provide a suggestion as to which to use --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compilation===&lt;br /&gt;
&lt;br /&gt;
Creation of a map using either method is only part of the process; before a map can be played in-game, the map must then be &amp;lt;dfn&amp;gt;compiled&amp;lt;/dfn&amp;gt;. This is a time-consuming process that can take hours even with new hardware. Compilation consists of several phases, discussed below. Note that it is not essential to understand precisely what happens in each of these phases. At a minimum, understand that compilation must occur before a map is ready to be played and that it is a highly time-consuming process.&lt;br /&gt;
&lt;br /&gt;
* '''Space partitioning'''. Map geometry is subdivided (partitioned) in half successively, effectively breaking the map down into progressively smaller chunks. The reason for this is to improve in-game render speed; this is done in such a manner that the engine can quickly determine what portions of the map the player is not facing, and therefore avoid having to render such areas. &amp;lt;!-- TODO: create a .gif showing what this might look like --&amp;gt; &amp;lt;!-- TODO: create some kind of &amp;quot;tech note&amp;quot; template with verbiage indicating that artists may safely ignore this bit --&amp;gt; The scheme &amp;lt;!-- scheme isn't really a good word, because BSP alone does not describe the algorithm for selecting good splitter planes --&amp;gt; by which this is done is referred to as [http://en.wikipedia.org/wiki/Binary_space_partitioning binary spatial partitioning], and this (as well as the data structure storing this information) is most often referred to as BSP. With each split, the compiler attempts to minimize the amount of geometry that must be cut to minimize the resulting size of the BSP. &amp;lt;!-- TODO: elaborate --&amp;gt;&lt;br /&gt;
* '''[http://en.wikipedia.org/wiki/Potentially_visible_set Potentially visible set] calculation'''. This stage of compilation takes the rendering boost that BSP provides by &amp;lt;!-- TODO: fact check this; for all I know, view cells in Quake are not related to the BSP --&amp;gt; calculating which regions of the map are visible when viewed from other areas. Each of these areas for which a potentially visible set (PVS) is calculated is referred to as a &amp;lt;dfn&amp;gt;cell&amp;lt;/dfn&amp;gt; or &amp;lt;dfn&amp;gt;portal&amp;lt;/dfn&amp;gt;. &amp;lt;!-- not sure which of &amp;quot;cell&amp;quot; or &amp;quot;portal&amp;quot; is preferred parlance in Quake-speak --&amp;gt; As an example, imagine standing in a room in a house. &amp;lt;!-- TODO: a pic would be nice --&amp;gt; Using only BSP, the game engine could very quickly determine which rooms you are not facing (as if the rooms were made of glass and every room were visible from every other room), and skip drawing them. However, while standing in that room, there are many other rooms in the house that you likely also cannot see (as the walls of the rooms are probably not glass and very much opaque). This is PVS in a nutshell: for that room, the PVS might only be an adjoining hallway and a closet (assuming that the doors are open). In a large house with many rooms, in a worst-case scenario (where both the player is facing the hallway and the closet at the same time), the engine still has very little to draw as compared to the entire house. This is discussed in greater detail on [http://fabiensanglard.net/doom3/dmap.php Fabien Sanglard's blog].&lt;br /&gt;
* '''Lightmap calculation'''. Using the position, color, and type &amp;lt;!-- there are different types of lights in Q3, right? --&amp;gt; of lights placed in the map editor, the compiler generates a static &amp;lt;dfn&amp;gt;lightmap&amp;lt;/dfn&amp;gt; which is essentially painted over (blended with) the map textures at run-time to create shadows and areas of light and dark. (Otherwise, the map would be the same brightness throughout and devoid of shadow). Note that this is not the extent of the engine's lighting capabilities; additional (dynamic) lighting is performed in real-time to create effects such as light generated from muzzle flashes. &amp;lt;!-- TODO: elaborate further --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ^^^ we keep referring to &amp;quot;the compiler&amp;quot;, when really it's separate programs. I am not sure what the name of these are --&amp;gt;&lt;br /&gt;
&amp;lt;!-- TODO:&lt;br /&gt;
===Conventional modeling vs. Radiant===&lt;br /&gt;
&lt;br /&gt;
discuss the difference between creating brushes out of triangles with Blender (or just triangles, idr what that is called) and actually creating brushes with constructive solid geometry)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using other than Radiant to create maps===&lt;br /&gt;
&lt;br /&gt;
Conventional modeling software other than Blender is outside of the scope of this document; only Blender will be discussed. &amp;lt;!-- though any enterprising wiki editors are free to change this --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While geometry other than triangles may be used during map creation, the map compilation tools can only handle brush geometry; as of now, the &amp;lt;code&amp;gt;.map&amp;lt;/code&amp;gt; exporter for Blender can only convert polygonal geometry (triangles) to brushes, and as such it would be pointless to use anything else during the construction of a map except as a placeholder. &amp;lt;!-- not sure of this: Also note that as of now, entity and light placement must be done in Radiant --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A comprehensive guide of using Blender to create map geometry ready for Radiant and the compilation tools is available from [http://www.katsbits.com/tutorials/blender/map-basics-tutorial.php katsbits].&lt;br /&gt;
&lt;br /&gt;
==Design mentality==&lt;br /&gt;
&lt;br /&gt;
This section is oriented towards those with less experience mapping.&lt;br /&gt;
&lt;br /&gt;
There are many potential pitfalls of map creation. Possibly the easiest to fall into is spending too little time on design and spending too much time on map details before even having a working base design. There is an adage that applies well here: &amp;quot;Weeks of effort will save hours of planning.&amp;quot; Before you begin creating, do not concern yourself so much with visual elements but the physical layout of the map.&lt;br /&gt;
&lt;br /&gt;
When designing a map, consider the following:&lt;br /&gt;
* What can players use to help themselves navigate the map? What would make a good landmark or how can different areas of the map be differentiated visually?&lt;br /&gt;
* Is the map partitioned well visibly? Are there any areas that may cause poor performance?&lt;br /&gt;
* Are corridors large enough to facilitate combat?&lt;br /&gt;
* Does the map provide other good locations to build in aside the defaults?&lt;br /&gt;
* Is the map biased towards one side or another?&lt;br /&gt;
&lt;br /&gt;
==Using GtkRadiant==&lt;br /&gt;
&lt;br /&gt;
===Editing brush geometry===&lt;br /&gt;
&lt;br /&gt;
* Click and drag to create a new brush.&lt;br /&gt;
* With a brush selected, click and drag the mouse cursor to change the size of the selected brushes.&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Esc&amp;lt;/span&amp;gt; to deslect everything.&lt;br /&gt;
* Press and hold &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Shift&amp;lt;/span&amp;gt; and click brushes to select them.&lt;br /&gt;
&lt;br /&gt;
===Placing entities===&lt;br /&gt;
&lt;br /&gt;
* Right-click in a 2d viewport to access the entity placement context menu. &amp;lt;!-- TODO: discuss which entities are required to place --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Navigating the views===&lt;br /&gt;
&lt;br /&gt;
====3d viewport====&lt;br /&gt;
&lt;br /&gt;
* Scroll using the mouse wheel to dolly the camera forward or back.&lt;br /&gt;
* Right-click on the viewport to look around. Using the mouse wheel to dolly the camera works while in this mode.&lt;br /&gt;
&lt;br /&gt;
====2d viewports====&lt;br /&gt;
&lt;br /&gt;
* Right-click and drag to move the views around.&lt;br /&gt;
* Change the view with the toolbar button:&lt;br /&gt;
&lt;br /&gt;
[[Image:gtkradiant_toolbar_change_views.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Size Guidelines==&lt;br /&gt;
&lt;br /&gt;
Player sizes, in quake units (qu)&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Dretch		||30&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Granger	||40&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Adv Granger	||40&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Basilisk	||36&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Adv Basilisk	||42&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Marauder	||46×46×36&lt;br /&gt;
|-&lt;br /&gt;
|Adv Marauder	||50×50×40&lt;br /&gt;
|-&lt;br /&gt;
|Dragoon	||52×52×55&lt;br /&gt;
|-&lt;br /&gt;
|Adv Dragoon	||58×58×66&lt;br /&gt;
|-&lt;br /&gt;
|Tyrant		||64×64×92&lt;br /&gt;
|-&lt;br /&gt;
|Human		||30×30×56&lt;br /&gt;
|-&lt;br /&gt;
|Crouching	||30×30×40&lt;br /&gt;
|-&lt;br /&gt;
|Battlesuit	||30×30×72&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Players will need an opening at least 1qu wider to fit through (possibly 2). In addition, player bounding boxes do not rotate, which means diagonal corridors would need to be wider (thus the majority should be axis aligned&lt;br /&gt;
&lt;br /&gt;
Map scale:&lt;br /&gt;
32qu = 1m&lt;br /&gt;
&lt;br /&gt;
Doorways should be a minimum of 3m×3m, preferably around 4m×4m. Corridors should be a minimum of 5m wide, although it is ''possible'' to use a mix of 4-5m (see Niveus for an example), and at most 8m wide. Do not create corridors more than 40m long without plenty of cover.&lt;br /&gt;
Currently large open areas and underwater areas are very human biased.&lt;br /&gt;
&lt;br /&gt;
Alien bases need cover to hide things behind, the entrances should be ~4×4m and should not be easily visible from outside other entrances.&lt;br /&gt;
&lt;br /&gt;
==New Features==&lt;br /&gt;
&lt;br /&gt;
You may be interested in the list of [[Engine features|engine features]].&lt;br /&gt;
&lt;br /&gt;
* [[Navigation Meshes]]&lt;br /&gt;
* Additional shader functions (e.g., normal mapping) have been added; please see the [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm XReal shader manual] for more information.&lt;br /&gt;
&lt;br /&gt;
==Testing maps in-game==&lt;br /&gt;
&lt;br /&gt;
For testing purposes, it is most convenient to place your compiled &amp;lt;code&amp;gt;.bsp&amp;lt;/code&amp;gt; file in the &amp;lt;code&amp;gt;main/maps/&amp;lt;/code&amp;gt; subdirectory of the [[Running_the_game#Data_locations|data location]] appropriate to your system. Once you have done that, you can load your map with either the &amp;lt;code&amp;gt;devmap&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt; commands after setting &amp;lt;code&amp;gt;sv_pure&amp;lt;/code&amp;gt; to 0. The former allows using developer mode commands (&amp;quot;cheats&amp;quot;) that make it easier to test. Additional commands are discussed on the [[testing]] page.&lt;br /&gt;
&lt;br /&gt;
==Testing maps publicly==&lt;br /&gt;
&lt;br /&gt;
You can put the map on the [http://188.40.187.142/ Map Test Server], as soon as you [[Packaging game data|packaged]] it accordingly. The server allows unfinished (alpha) versions and can get you early feedback on your design.&lt;br /&gt;
&lt;br /&gt;
==Packaging maps for distribution==&lt;br /&gt;
&lt;br /&gt;
If you want to distribute your map to the world (either for testing or as a final release), you'll have to create a [[Packaging game data|package]]. Such packages may be distributed automatically via the server download feature or other means.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
* [http://ingar.satgnu.net/gtkradiant/ Ingar's NetRadiant builds]&lt;br /&gt;
** [http://ingar.satgnu.net/gtkradiant/files/gamepacks/UnvanquishedPack.zip Unvanquished game pack]&lt;br /&gt;
* [http://www.custommapmakers.org/wiki/index.php/Main_Page Custom Map Maker's Wiki]&lt;br /&gt;
* [http://dev.xonotic.org/projects/xonotic/wiki/Mapping Xonotic mapping resources]&lt;br /&gt;
* [http://tremulous.net/forum/index.php?topic=14411.0 Useful mapping links thread on Tremulous forums]&lt;br /&gt;
* [http://tremmapping.pbworks.com/w/page/22453200/Starting%20Tremulous%20Mapping Starting Tremulous Mapping]&lt;br /&gt;
* [http://tremmapping.pbworks.com/w/page/22453205/Understanding%20Vis%20and%20Hint%20Brushes Understanding Vis and Hint Brushes]&lt;br /&gt;
* [http://q3map2.everyonelookbusy.net/shader_manual/ Quake 3 Shader Manual] (outdated; please see the XReal shader manual)&lt;br /&gt;
* [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm XReal Shader Manual]&lt;br /&gt;
* [http://q3map2.robotrenegade.com/ Q3Map2 homepage]&lt;br /&gt;
* [http://en.wikibooks.org/wiki/Q3Map2 Q3Map2 Documentation]&lt;br /&gt;
* [http://shaderlab.com/q3map2/manual/ Additional Q3Map2 Documentation]&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Testing&amp;diff=838</id>
		<title>Testing</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Testing&amp;diff=838"/>
		<updated>2012-10-01T11:05:15Z</updated>

		<summary type="html">&lt;p&gt;Devhc: \cg_drawBBOX is not a cvar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Debugging==&lt;br /&gt;
&lt;br /&gt;
To create a debug build, change &amp;lt;code&amp;gt;CMAKE_BUILD_TYPE&amp;lt;/code&amp;gt; in CMake from &amp;lt;code&amp;gt;Release&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;Debug&amp;lt;/code&amp;gt;, then [[Compiling_the_source|compile]].&lt;br /&gt;
&lt;br /&gt;
You may find it necessary to set &amp;lt;code&amp;gt;in_nograb&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; to disable pointer grabbing so that you may use your debugger.&lt;br /&gt;
&lt;br /&gt;
===Debugging with Xcode===&lt;br /&gt;
&lt;br /&gt;
With Xcode 4, even if you did not build the game with Xcode, you may still use its facilities for debugging.&lt;br /&gt;
&lt;br /&gt;
# Open any project. If necessary, create a new one. It may contain anything.&lt;br /&gt;
# Click &amp;quot;Product&amp;quot; on the menu bar and navigate to &amp;quot;Attach to Process&amp;quot;. Look for &amp;quot;daemon.i386&amp;quot; listed under &amp;quot;Applications&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
After a moment, the application will be ready for debugging.&lt;br /&gt;
&lt;br /&gt;
See the [https://developer.apple.com/library/mac/#documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/060-Debug_Your_App/debug_app.html#//apple_ref/doc/uid/TP40010215-CH3-SW1 Xcode 4 User Guide] for more information.&lt;br /&gt;
&lt;br /&gt;
==Starting a testing session==&lt;br /&gt;
&lt;br /&gt;
Start the game, and enter the following commands:&lt;br /&gt;
&lt;br /&gt;
 \sv_pure 0&lt;br /&gt;
 \devmap &amp;lt;var&amp;gt;map name&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may also load a map with the regular &amp;lt;code&amp;gt;\map&amp;lt;/code&amp;gt; command. Be aware, however, that &amp;lt;code&amp;gt;devmap&amp;lt;/code&amp;gt; enables cheats which can make it easier to test (such as being able to jump directly to stage 2 or 3 if required). Also note that with &amp;lt;code&amp;gt;devmap&amp;lt;/code&amp;gt;, the build time for buildables is zero, so the building animation(s) will not play.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
&lt;br /&gt;
===General tips===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* To stress test the engine's ability to display a large number of buildables, set &amp;lt;code&amp;gt;g_humanBuildPoints&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;g_alienBuildPoints&amp;lt;/code&amp;gt;  to as high as you wish; this will allow you to build as much as you please.&lt;br /&gt;
* To determine what file was loaded for a particular asset (e.g., to determine if files are being read from a particular &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; archive), use the &amp;lt;code&amp;gt;\which&amp;lt;/code&amp;gt; command with the relative path to the asset as an argument, such as &amp;lt;code&amp;gt;\which&amp;amp;nbsp;models/buildables/acid_tube/acid_tube.md5mesh&amp;lt;/code&amp;gt;. Note that &amp;lt;code&amp;gt;which&amp;lt;/code&amp;gt; accepts both forward- and backslashes regardless of platform.&lt;br /&gt;
&lt;br /&gt;
===Testing maps===&lt;br /&gt;
&lt;br /&gt;
* To fly around the map, use the &amp;lt;code&amp;gt;\noclip&amp;lt;/code&amp;gt; command. If you find that you are moving too slowly (or too fast), you may change the speed with &amp;lt;code&amp;gt;cg_flySpeed&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To make yourself invincible, use the &amp;lt;code&amp;gt;\god&amp;lt;/code&amp;gt; command.&lt;br /&gt;
* To stop buildables from attacking, use the &amp;lt;code&amp;gt;\notarget&amp;lt;/code&amp;gt; command.&lt;br /&gt;
* To publicly test your maps, consider uploading them to a [http://188.40.187.142/ Map Test Server].&lt;br /&gt;
&lt;br /&gt;
===Testing models===&lt;br /&gt;
&lt;br /&gt;
* If the model is a buildable, weapon, or player model that is not immediately available (i.e., not available until a later stage), you can change the stage with &amp;lt;code&amp;gt;g_alienStage&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;g_humanStage&amp;lt;/code&amp;gt;. Both of these cvars accept a single parameter, which is the zero-based index of the stage; to skip to stage 2, use 1 as a parameter, and to skip to stage 2, use 2 as a parameter (stage 1 is 0).&lt;br /&gt;
* If you do not have sufficient credits to purchase an item model you wish to test, or evos to evolve to the desired class, you may give yourself the maximum amount that you can carry with &amp;lt;code&amp;gt;\give all&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To visually inpsect a model's bounding box, which is set by its configuration file, set &amp;lt;code&amp;gt;cg_drawBBox&amp;lt;/code&amp;gt; to 1.&lt;br /&gt;
* To visually inspect the bone structure of a MD5 model, set &amp;lt;code&amp;gt;r_showSkeleton&amp;lt;/code&amp;gt; to 1. ''Note: at present there is a bug that causes bones to be displayed incorrectly. See [https://github.com/Unvanquished/Unvanquished/issues/2 Issue #2] on GitHub for more information.''&lt;br /&gt;
* To hide map geometry, set &amp;lt;code&amp;gt;r_drawworld&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Note that with this set to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, PVS will still be in effect, so it might still be difficult to view your model.&lt;br /&gt;
&lt;br /&gt;
==Reporting bugs==&lt;br /&gt;
&lt;br /&gt;
Please see the [[Bug_reporting|bug reporting]] page.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Testing&amp;diff=837</id>
		<title>Testing</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Testing&amp;diff=837"/>
		<updated>2012-10-01T11:04:28Z</updated>

		<summary type="html">&lt;p&gt;Devhc: reword&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Debugging==&lt;br /&gt;
&lt;br /&gt;
To create a debug build, change &amp;lt;code&amp;gt;CMAKE_BUILD_TYPE&amp;lt;/code&amp;gt; in CMake from &amp;lt;code&amp;gt;Release&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;Debug&amp;lt;/code&amp;gt;, then [[Compiling_the_source|compile]].&lt;br /&gt;
&lt;br /&gt;
You may find it necessary to set &amp;lt;code&amp;gt;in_nograb&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; to disable pointer grabbing so that you may use your debugger.&lt;br /&gt;
&lt;br /&gt;
===Debugging with Xcode===&lt;br /&gt;
&lt;br /&gt;
With Xcode 4, even if you did not build the game with Xcode, you may still use its facilities for debugging.&lt;br /&gt;
&lt;br /&gt;
# Open any project. If necessary, create a new one. It may contain anything.&lt;br /&gt;
# Click &amp;quot;Product&amp;quot; on the menu bar and navigate to &amp;quot;Attach to Process&amp;quot;. Look for &amp;quot;daemon.i386&amp;quot; listed under &amp;quot;Applications&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
After a moment, the application will be ready for debugging.&lt;br /&gt;
&lt;br /&gt;
See the [https://developer.apple.com/library/mac/#documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/060-Debug_Your_App/debug_app.html#//apple_ref/doc/uid/TP40010215-CH3-SW1 Xcode 4 User Guide] for more information.&lt;br /&gt;
&lt;br /&gt;
==Starting a testing session==&lt;br /&gt;
&lt;br /&gt;
Start the game, and enter the following commands:&lt;br /&gt;
&lt;br /&gt;
 \sv_pure 0&lt;br /&gt;
 \devmap &amp;lt;var&amp;gt;map name&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may also load a map with the regular &amp;lt;code&amp;gt;\map&amp;lt;/code&amp;gt; command. Be aware, however, that &amp;lt;code&amp;gt;devmap&amp;lt;/code&amp;gt; enables cheats which can make it easier to test (such as being able to jump directly to stage 2 or 3 if required). Also note that with &amp;lt;code&amp;gt;devmap&amp;lt;/code&amp;gt;, the build time for buildables is zero, so the building animation(s) will not play.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
&lt;br /&gt;
===General tips===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* To stress test the engine's ability to display a large number of buildables, set &amp;lt;code&amp;gt;g_humanBuildPoints&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;g_alienBuildPoints&amp;lt;/code&amp;gt;  to as high as you wish; this will allow you to build as much as you please.&lt;br /&gt;
* To determine what file was loaded for a particular asset (e.g., to determine if files are being read from a particular &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; archive), use the &amp;lt;code&amp;gt;\which&amp;lt;/code&amp;gt; command with the relative path to the asset as an argument, such as &amp;lt;code&amp;gt;\which&amp;amp;nbsp;models/buildables/acid_tube/acid_tube.md5mesh&amp;lt;/code&amp;gt;. Note that &amp;lt;code&amp;gt;which&amp;lt;/code&amp;gt; accepts both forward- and backslashes regardless of platform.&lt;br /&gt;
&lt;br /&gt;
===Testing maps===&lt;br /&gt;
&lt;br /&gt;
* To fly around the map, use the &amp;lt;code&amp;gt;\noclip&amp;lt;/code&amp;gt; command. If you find that you are moving too slowly (or too fast), you may change the speed with &amp;lt;code&amp;gt;cg_flySpeed&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To make yourself invincible, use the &amp;lt;code&amp;gt;\god&amp;lt;/code&amp;gt; command.&lt;br /&gt;
* To stop buildables from attacking, use the &amp;lt;code&amp;gt;\notarget&amp;lt;/code&amp;gt; command.&lt;br /&gt;
* To publicly test your maps, consider uploading them to a [http://188.40.187.142/ Map Test Server].&lt;br /&gt;
&lt;br /&gt;
===Testing models===&lt;br /&gt;
&lt;br /&gt;
* If the model is a buildable, weapon, or player model that is not immediately available (i.e., not available until a later stage), you can change the stage with &amp;lt;code&amp;gt;g_alienStage&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;g_humanStage&amp;lt;/code&amp;gt;. Both of these cvars accept a single parameter, which is the zero-based index of the stage; to skip to stage 2, use 1 as a parameter, and to skip to stage 2, use 2 as a parameter (stage 1 is 0).&lt;br /&gt;
* If you do not have sufficient credits to purchase an item model you wish to test, or evos to evolve to the desired class, you may give yourself the maximum amount that you can carry with &amp;lt;code&amp;gt;\give all&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To visually inpsect a model's bounding box, which is set by its configuration file, set &amp;lt;code&amp;gt;\cg_drawBBOX&amp;lt;/code&amp;gt; to 1.&lt;br /&gt;
* To visually inspect the bone structure of a MD5 model, set &amp;lt;code&amp;gt;r_showSkeleton&amp;lt;/code&amp;gt; to 1. ''Note: at present there is a bug that causes bones to be displayed incorrectly. See [https://github.com/Unvanquished/Unvanquished/issues/2 Issue #2] on GitHub for more information.''&lt;br /&gt;
* To hide map geometry, set &amp;lt;code&amp;gt;r_drawworld&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Note that with this set to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, PVS will still be in effect, so it might still be difficult to view your model.&lt;br /&gt;
&lt;br /&gt;
==Reporting bugs==&lt;br /&gt;
&lt;br /&gt;
Please see the [[Bug_reporting|bug reporting]] page.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Server/Map_layout&amp;diff=834</id>
		<title>Server/Map layout</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Server/Map_layout&amp;diff=834"/>
		<updated>2012-10-01T10:45:59Z</updated>

		<summary type="html">&lt;p&gt;Devhc: fix the description of &amp;quot;callvote layout&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Map layouts store alternate starting positions of buildables.&lt;br /&gt;
&lt;br /&gt;
==Saving layouts==&lt;br /&gt;
&lt;br /&gt;
Layouts are saved with the &amp;lt;code&amp;gt;layoutsave&amp;lt;/code&amp;gt; command:&lt;br /&gt;
&lt;br /&gt;
 \layoutsave &amp;lt;var&amp;gt;filename&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Layout files are written to &amp;lt;code&amp;gt;layouts/&amp;lt;var&amp;gt;mapname&amp;lt;/var&amp;gt;/&amp;lt;var&amp;gt;filename&amp;lt;/var&amp;gt;.dat&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Layout files are plain-text and have one line per buildable. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;pos&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;angles&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;origin2&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;angles2&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt; may be one of &amp;lt;code&amp;gt;eggpod&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;overmind&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;barricade&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;acid&amp;lt;/code&amp;gt;_&amp;lt;code&amp;gt;tube&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;trapper&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;booster&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hive&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;telenode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mgturret&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tesla&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;arm&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dcc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;medistat&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;reactor&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;repeater&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;var&amp;gt;pos&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;angles&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;origin2&amp;lt;/var&amp;gt;, and &amp;lt;var&amp;gt;angles2&amp;lt;/var&amp;gt; are all space-delimited triples of position or angle data, and the meaning of each is dependent on the particular buildable with the exception of &amp;lt;var&amp;gt;pos&amp;lt;/var&amp;gt;, which is the world position of the buildable.&lt;br /&gt;
&lt;br /&gt;
==Choosing a layout file==&lt;br /&gt;
&amp;lt;!-- TODO: find out about g_layoutAuto --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Layouts may be specified in map rotation files. &amp;lt;!-- TODO: explain how to do this. See G_ParseMapCommandSection() in gamelogic/game/g_maprotation.c:201 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The current selection of layouts is indicated by &amp;lt;code&amp;gt;g_layouts&amp;lt;/code&amp;gt;. &amp;lt;!-- TODO: describe behavior for switching between layouts; seems like G_LayoutSelect does it at random --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;\changemap &amp;lt;var&amp;gt;map&amp;lt;/var&amp;gt; [&amp;lt;var&amp;gt;layout&amp;lt;/var&amp;gt;]&amp;lt;/code&amp;gt;&lt;br /&gt;
Changes the map to &amp;lt;var&amp;gt;map&amp;lt;/var&amp;gt; and sets the current layouts to &amp;lt;var&amp;gt;layout&amp;lt;/var&amp;gt;. Note that with this command, only one layout may be specified.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;\callvote layout [&amp;lt;var&amp;gt;layout&amp;lt;/var&amp;gt;]&amp;lt;/code&amp;gt;&lt;br /&gt;
Calls a vote to restart the game with the layout &amp;lt;var&amp;gt;layout&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A list of layouts available for the current map may be seen with &amp;lt;code&amp;gt;\listlayouts&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Server/Map_layout&amp;diff=833</id>
		<title>Server/Map layout</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Server/Map_layout&amp;diff=833"/>
		<updated>2012-10-01T10:42:28Z</updated>

		<summary type="html">&lt;p&gt;Devhc: s/S/s/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Map layouts store alternate starting positions of buildables.&lt;br /&gt;
&lt;br /&gt;
==Saving layouts==&lt;br /&gt;
&lt;br /&gt;
Layouts are saved with the &amp;lt;code&amp;gt;layoutsave&amp;lt;/code&amp;gt; command:&lt;br /&gt;
&lt;br /&gt;
 \layoutsave &amp;lt;var&amp;gt;filename&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Layout files are written to &amp;lt;code&amp;gt;layouts/&amp;lt;var&amp;gt;mapname&amp;lt;/var&amp;gt;/&amp;lt;var&amp;gt;filename&amp;lt;/var&amp;gt;.dat&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Layout files are plain-text and have one line per buildable. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;pos&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;angles&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;origin2&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;angles2&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt; may be one of &amp;lt;code&amp;gt;eggpod&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;overmind&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;barricade&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;acid&amp;lt;/code&amp;gt;_&amp;lt;code&amp;gt;tube&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;trapper&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;booster&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hive&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;telenode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mgturret&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tesla&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;arm&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dcc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;medistat&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;reactor&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;repeater&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;var&amp;gt;pos&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;angles&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;origin2&amp;lt;/var&amp;gt;, and &amp;lt;var&amp;gt;angles2&amp;lt;/var&amp;gt; are all space-delimited triples of position or angle data, and the meaning of each is dependent on the particular buildable with the exception of &amp;lt;var&amp;gt;pos&amp;lt;/var&amp;gt;, which is the world position of the buildable.&lt;br /&gt;
&lt;br /&gt;
==Choosing a layout file==&lt;br /&gt;
&amp;lt;!-- TODO: find out about g_layoutAuto --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Layouts may be specified in map rotation files. &amp;lt;!-- TODO: explain how to do this. See G_ParseMapCommandSection() in gamelogic/game/g_maprotation.c:201 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The current selection of layouts is indicated by &amp;lt;code&amp;gt;g_layouts&amp;lt;/code&amp;gt;. &amp;lt;!-- TODO: describe behavior for switching between layouts; seems like G_LayoutSelect does it at random --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;\changemap &amp;lt;var&amp;gt;map&amp;lt;/var&amp;gt; [&amp;lt;var&amp;gt;layout&amp;lt;/var&amp;gt;]&amp;lt;/code&amp;gt;&lt;br /&gt;
Changes the map to &amp;lt;var&amp;gt;map&amp;lt;/var&amp;gt; and sets the current layouts to &amp;lt;var&amp;gt;layout&amp;lt;/var&amp;gt;. Note that with this command, only one layout may be specified.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;\callvote layout [&amp;lt;var&amp;gt;layout&amp;lt;/var&amp;gt;]&amp;lt;/code&amp;gt;&lt;br /&gt;
Forces change of the current layout to &amp;lt;var&amp;gt;layout&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A list of layouts available for the current map may be seen with &amp;lt;code&amp;gt;\listlayouts&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Old/Mapping&amp;diff=832</id>
		<title>Old/Mapping</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Old/Mapping&amp;diff=832"/>
		<updated>2012-10-01T10:35:22Z</updated>

		<summary type="html">&lt;p&gt;Devhc: reword&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
Map geometry is created using either a conventional modeling program (such as Blender) or with some variant of Radiant. Do note that if you intend on using Blender, you will need to use Radiant to perform a few final steps. This is discussed further below.&lt;br /&gt;
&lt;br /&gt;
Radiant is the name used to refer to id Software's map editing tools from Quake 3 onwards.&lt;br /&gt;
&lt;br /&gt;
* QuakeEd &amp;amp;mdash; Developed internally at id and used to create maps for Quake. Written for NextStep.&lt;br /&gt;
* QE4 &amp;amp;mdash; Developed internally at id and used to create maps for Quake II.&lt;br /&gt;
* QERadiant &amp;amp;mdash; A fork of the released QE4 source code by Robert Duffy.&lt;br /&gt;
* Q3Radiant' &amp;amp;mdash; id Software's fork of QERadiant used to create maps for Quake III. Windows-only.&lt;br /&gt;
* [http://icculus.org/gtkradiant/ GtkRadiant] &amp;amp;mdash; A port of Q3Radiant using the Gtk+ GUI toolkit, making it cross-platform (available to Linux and Mac OS X). Development stalled after 1.5 for a number of years, but has resumed with the recent release of version 1.6, which (for now) removes support for a number of games, including Tremulous.&lt;br /&gt;
* [http://dev.alientrap.org/projects/show/netradiant NetRadiant] &amp;amp;mdash; A fork of GtkRadiant (?) by Alientrap, developers of the former (FOSS) Nexuiz project. The project page for this fork is currently down, but builds are still available from noted Tremulous mapper [http://ingar.satgnu.net/gtkradiant/ Ingar's site].&lt;br /&gt;
* [http://darkradiant.sourceforge.net/ DarkRadiant] &amp;amp;mdash; A fork of GtkRadiant with the aim to improve the user interface and primarily intended to support Doom 3.&lt;br /&gt;
* [http://www.redsaurus.net/00/node/4 MacRadiant] &amp;amp;mdash; A port of GtkRadiant to Mac OS X.&lt;br /&gt;
&amp;lt;!-- TODO: provide a suggestion as to which to use --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compilation===&lt;br /&gt;
&lt;br /&gt;
Creation of a map using either method is only part of the process; before a map can be played in-game, the map must then be &amp;lt;dfn&amp;gt;compiled&amp;lt;/dfn&amp;gt;. This is a time-consuming process that can take hours even with new hardware. Compilation consists of several phases, discussed below. Note that it is not essential to understand precisely what happens in each of these phases. At a minimum, understand that compilation must occur before a map is ready to be played and that it is a highly time-consuming process.&lt;br /&gt;
&lt;br /&gt;
* '''Space partitioning'''. Map geometry is subdivided (partitioned) in half successively, effectively breaking the map down into progressively smaller chunks. The reason for this is to improve in-game render speed; this is done in such a manner that the engine can quickly determine what portions of the map the player is not facing, and therefore avoid having to render such areas. &amp;lt;!-- TODO: create a .gif showing what this might look like --&amp;gt; &amp;lt;!-- TODO: create some kind of &amp;quot;tech note&amp;quot; template with verbiage indicating that artists may safely ignore this bit --&amp;gt; The scheme &amp;lt;!-- scheme isn't really a good word, because BSP alone does not describe the algorithm for selecting good splitter planes --&amp;gt; by which this is done is referred to as [http://en.wikipedia.org/wiki/Binary_space_partitioning binary spatial partitioning], and this (as well as the data structure storing this information) is most often referred to as BSP. With each split, the compiler attempts to minimize the amount of geometry that must be cut to minimize the resulting size of the BSP. &amp;lt;!-- TODO: elaborate --&amp;gt;&lt;br /&gt;
* '''[http://en.wikipedia.org/wiki/Potentially_visible_set Potentially visible set] calculation'''. This stage of compilation takes the rendering boost that BSP provides by &amp;lt;!-- TODO: fact check this; for all I know, view cells in Quake are not related to the BSP --&amp;gt; calculating which regions of the map are visible when viewed from other areas. Each of these areas for which a potentially visible set (PVS) is calculated is referred to as a &amp;lt;dfn&amp;gt;cell&amp;lt;/dfn&amp;gt; or &amp;lt;dfn&amp;gt;portal&amp;lt;/dfn&amp;gt;. &amp;lt;!-- not sure which of &amp;quot;cell&amp;quot; or &amp;quot;portal&amp;quot; is preferred parlance in Quake-speak --&amp;gt; As an example, imagine standing in a room in a house. &amp;lt;!-- TODO: a pic would be nice --&amp;gt; Using only BSP, the game engine could very quickly determine which rooms you are not facing (as if the rooms were made of glass and every room were visible from every other room), and skip drawing them. However, while standing in that room, there are many other rooms in the house that you likely also cannot see (as the walls of the rooms are probably not glass and very much opaque). This is PVS in a nutshell: for that room, the PVS might only be an adjoining hallway and a closet (assuming that the doors are open). In a large house with many rooms, in a worst-case scenario (where both the player is facing the hallway and the closet at the same time), the engine still has very little to draw as compared to the entire house. This is discussed in greater detail on [http://fabiensanglard.net/doom3/dmap.php Fabien Sanglard's blog].&lt;br /&gt;
* '''Lightmap calculation'''. Using the position, color, and type &amp;lt;!-- there are different types of lights in Q3, right? --&amp;gt; of lights placed in the map editor, the compiler generates a static &amp;lt;dfn&amp;gt;lightmap&amp;lt;/dfn&amp;gt; which is essentially painted over (blended with) the map textures at run-time to create shadows and areas of light and dark. (Otherwise, the map would be the same brightness throughout and devoid of shadow). Note that this is not the extent of the engine's lighting capabilities; additional (dynamic) lighting is performed in real-time to create effects such as light generated from muzzle flashes. &amp;lt;!-- TODO: elaborate further --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ^^^ we keep referring to &amp;quot;the compiler&amp;quot;, when really it's separate programs. I am not sure what the name of these are --&amp;gt;&lt;br /&gt;
&amp;lt;!-- TODO:&lt;br /&gt;
===Conventional modeling vs. Radiant===&lt;br /&gt;
&lt;br /&gt;
discuss the difference between creating brushes out of triangles with Blender (or just triangles, idr what that is called) and actually creating brushes with constructive solid geometry)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using other than Radiant to create maps===&lt;br /&gt;
&lt;br /&gt;
Conventional modeling software other than Blender is outside of the scope of this document; only Blender will be discussed. &amp;lt;!-- though any enterprising wiki editors are free to change this --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While geometry other than triangles may be used during map creation, the map compilation tools can only handle brush geometry; as of now, the &amp;lt;code&amp;gt;.map&amp;lt;/code&amp;gt; exporter for Blender can only convert polygonal geometry (triangles) to brushes, and as such it would be pointless to use anything else during the construction of a map except as a placeholder. &amp;lt;!-- not sure of this: Also note that as of now, entity and light placement must be done in Radiant --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A comprehensive guide of using Blender to create map geometry ready for Radiant and the compilation tools is available from [http://www.katsbits.com/tutorials/blender/map-basics-tutorial.php katsbits].&lt;br /&gt;
&lt;br /&gt;
==Design mentality==&lt;br /&gt;
&lt;br /&gt;
This section is oriented towards those with less experience mapping.&lt;br /&gt;
&lt;br /&gt;
There are many potential pitfalls of map creation. Possibly the easiest to fall into is spending too little time on design and spending too much time on map details before even having a working base design. There is an adage that applies well here: &amp;quot;Weeks of effort will save hours of planning.&amp;quot; Before you begin creating, do not concern yourself so much with visual elements but the physical layout of the map.&lt;br /&gt;
&lt;br /&gt;
When designing a map, consider the following:&lt;br /&gt;
* What can players use to help themselves navigate the map? What would make a good landmark or how can different areas of the map be differentiated visually?&lt;br /&gt;
* Is the map partitioned well visibly? Are there any areas that may cause poor performance?&lt;br /&gt;
* Are corridors large enough to facilitate combat?&lt;br /&gt;
* Does the map provide other good locations to build in aside the defaults?&lt;br /&gt;
* Is the map biased towards one side or another?&lt;br /&gt;
&lt;br /&gt;
==Using GtkRadiant==&lt;br /&gt;
&lt;br /&gt;
===Editing brush geometry===&lt;br /&gt;
&lt;br /&gt;
* Click and drag to create a new brush.&lt;br /&gt;
* With a brush selected, click and drag the mouse cursor to change the size of the selected brushes.&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Esc&amp;lt;/span&amp;gt; to deslect everything.&lt;br /&gt;
* Press and hold &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Shift&amp;lt;/span&amp;gt; and click brushes to select them.&lt;br /&gt;
&lt;br /&gt;
===Placing entities===&lt;br /&gt;
&lt;br /&gt;
* Right-click in a 2d viewport to access the entity placement context menu. &amp;lt;!-- TODO: discuss which entities are required to place --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Navigating the views===&lt;br /&gt;
&lt;br /&gt;
====3d viewport====&lt;br /&gt;
&lt;br /&gt;
* Scroll using the mouse wheel to dolly the camera forward or back.&lt;br /&gt;
* Right-click on the viewport to look around. Using the mouse wheel to dolly the camera works while in this mode.&lt;br /&gt;
&lt;br /&gt;
====2d viewports====&lt;br /&gt;
&lt;br /&gt;
* Right-click and drag to move the views around.&lt;br /&gt;
* Change the view with the toolbar button:&lt;br /&gt;
&lt;br /&gt;
[[Image:gtkradiant_toolbar_change_views.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Size Guidelines==&lt;br /&gt;
&lt;br /&gt;
Player sizes, in quake units (qu)&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Dretch		||30&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Granger	||40&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Adv Granger	||40&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Basilisk	||36&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Adv Basilisk	||42&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Marauder	||46×46×36&lt;br /&gt;
|-&lt;br /&gt;
|Adv Marauder	||50×50×40&lt;br /&gt;
|-&lt;br /&gt;
|Dragoon	||52×52×55&lt;br /&gt;
|-&lt;br /&gt;
|Adv Dragoon	||58×58×66&lt;br /&gt;
|-&lt;br /&gt;
|Tyrant		||64×64×92&lt;br /&gt;
|-&lt;br /&gt;
|Human		||30×30×56&lt;br /&gt;
|-&lt;br /&gt;
|Crouching	||30×30×40&lt;br /&gt;
|-&lt;br /&gt;
|Battlesuit	||30×30×72&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Players will need an opening at least 1qu wider to fit through (possibly 2). In addition, player bounding boxes do not rotate, which means diagonal corridors would need to be wider (thus the majority should be axis aligned&lt;br /&gt;
&lt;br /&gt;
Map scale:&lt;br /&gt;
32qu = 1m&lt;br /&gt;
&lt;br /&gt;
Doorways should be a minimum of 3m×3m, preferably around 4m×4m. Corridors should be a minimum of 5m wide, although it is ''possible'' to use a mix of 4-5m (see Niveus for an example), and at most 8m wide. Do not create corridors more than 40m long without plenty of cover.&lt;br /&gt;
Currently large open areas and underwater areas are very human biased.&lt;br /&gt;
&lt;br /&gt;
Alien bases need cover to hide things behind, the entrances should be ~4×4m and should not be easily visible from outside other entrances.&lt;br /&gt;
&lt;br /&gt;
==New Features==&lt;br /&gt;
&lt;br /&gt;
You may be interested in the list of [[Engine features|engine features]].&lt;br /&gt;
&lt;br /&gt;
* [[Navigation Meshes]]&lt;br /&gt;
* Additional shader functions (e.g., normal mapping) have been added; please see the [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm XReal shader manual] for more information.&lt;br /&gt;
&lt;br /&gt;
==Testing maps in-game==&lt;br /&gt;
&lt;br /&gt;
For testing purposes, it is most convenient to place your compiled &amp;lt;code&amp;gt;.bsp&amp;lt;/code&amp;gt; file in the &amp;lt;code&amp;gt;main/maps/&amp;lt;/code&amp;gt; subdirectory of the [[Running_the_game#Data_locations|data location]] appropriate to your system. Once you have done that, you may load your map with either the &amp;lt;code&amp;gt;devmap&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt; commands after setting &amp;lt;code&amp;gt;sv_pure 0&amp;lt;/code&amp;gt;. The former allows using cheats that make it easier to test. Additional commands are discussed on the [[testing]] page.&lt;br /&gt;
&lt;br /&gt;
==Testing maps publicly==&lt;br /&gt;
&lt;br /&gt;
You can put the map on the [http://188.40.187.142/ Map Test Server], as soon as you [[Packaging game data|packaged]] it accordingly. The server allows unfinished (alpha) versions and can get you early feedback on your design.&lt;br /&gt;
&lt;br /&gt;
==Packaging maps for distribution==&lt;br /&gt;
&lt;br /&gt;
If you want to distribute your map to the world (either for testing or as a final release), you'll have to create a [[Packaging game data|package]]. Such packages may be distributed automatically via the server download feature or other means.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
* [http://ingar.satgnu.net/gtkradiant/ Ingar's NetRadiant builds]&lt;br /&gt;
** [http://ingar.satgnu.net/gtkradiant/files/gamepacks/UnvanquishedPack.zip Unvanquished game pack]&lt;br /&gt;
* [http://www.custommapmakers.org/wiki/index.php/Main_Page Custom Map Maker's Wiki]&lt;br /&gt;
* [http://dev.xonotic.org/projects/xonotic/wiki/Mapping Xonotic mapping resources]&lt;br /&gt;
* [http://tremulous.net/forum/index.php?topic=14411.0 Useful mapping links thread on Tremulous forums]&lt;br /&gt;
* [http://tremmapping.pbworks.com/w/page/22453200/Starting%20Tremulous%20Mapping Starting Tremulous Mapping]&lt;br /&gt;
* [http://tremmapping.pbworks.com/w/page/22453205/Understanding%20Vis%20and%20Hint%20Brushes Understanding Vis and Hint Brushes]&lt;br /&gt;
* [http://q3map2.everyonelookbusy.net/shader_manual/ Quake 3 Shader Manual] (outdated; please see the XReal shader manual)&lt;br /&gt;
* [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm XReal Shader Manual]&lt;br /&gt;
* [http://q3map2.robotrenegade.com/ Q3Map2 homepage]&lt;br /&gt;
* [http://en.wikibooks.org/wiki/Q3Map2 Q3Map2 Documentation]&lt;br /&gt;
* [http://shaderlab.com/q3map2/manual/ Additional Q3Map2 Documentation]&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Technical_Documentation&amp;diff=831</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Technical_Documentation&amp;diff=831"/>
		<updated>2012-10-01T10:32:07Z</updated>

		<summary type="html">&lt;p&gt;Devhc: s/engine/game/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Currently, this page isn't of much help, but you can change that by editing it!&lt;br /&gt;
&lt;br /&gt;
==Source code &amp;amp; data structure==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;main/&amp;lt;/code&amp;gt; Data associated with the game.&lt;br /&gt;
** &amp;lt;code&amp;gt;def/&amp;lt;/code&amp;gt; Entity definitions for [[Mapping|Radiant]].&lt;br /&gt;
** &amp;lt;code&amp;gt;fonts/&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;gfx/&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;glsl/&amp;lt;/code&amp;gt; OpenGL shader code.&lt;br /&gt;
** &amp;lt;code&amp;gt;lights/&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;models/&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;sound/&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;translation/&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ui/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;engine/&amp;lt;/code&amp;gt; Engine source code.&lt;br /&gt;
*** &amp;lt;code&amp;gt;asm/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;client/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;null/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;qcommon/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;renderer/&amp;lt;/code&amp;gt; Vanilla (fixed-function pipeline) renderer&lt;br /&gt;
*** &amp;lt;code&amp;gt;rendererGL/&amp;lt;/code&amp;gt; Modern XReal-based renderer&lt;br /&gt;
*** &amp;lt;code&amp;gt;server/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;sys/&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;gamelogic/&amp;lt;/code&amp;gt; Code that falls outside the scope of the core engine. These are all run in separate [[virtual machines]].&lt;br /&gt;
*** &amp;lt;code&amp;gt;cgame/&amp;lt;/code&amp;gt; Client-side game code.&lt;br /&gt;
*** &amp;lt;code&amp;gt;game/&amp;lt;/code&amp;gt; Server-side game code.&lt;br /&gt;
*** &amp;lt;code&amp;gt;ui/&amp;lt;/code&amp;gt; User interface code.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Looking at the Quake 3 Source&amp;quot;&lt;br /&gt;
** [http://element61.blogspot.com/2005/08/looking-at-quake-3-source-part-1.html Part 1]&lt;br /&gt;
** [http://element61.blogspot.com/2005/08/looking-at-quake-3-source-part-2.html Part 2]&lt;br /&gt;
** [http://element61.blogspot.com/2005/09/looking-at-quake-3-source-part-3.html Part 3]&lt;br /&gt;
* [http://www.quakewiki.net/archives/code3arena/ Code3Arena]&lt;br /&gt;
* [http://www.modwiki.net/wiki/MD5_(file_format) MD5 file format]&lt;br /&gt;
* [http://tfc.duke.free.fr/coding/md5-specs-en.html Another MD5 format article]&lt;br /&gt;
* [http://fabiensanglard.net/quake3/index.php Quake 3 Source Code Review]&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Exporting_models&amp;diff=676</id>
		<title>Tutorials/Exporting models</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Exporting_models&amp;diff=676"/>
		<updated>2012-08-26T18:41:12Z</updated>

		<summary type="html">&lt;p&gt;Devhc: Undo revision 670 by Velociostrich (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modeling]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
''Notice: This guide was written for Blender 2.61. Most of this guide should apply for other versions of Blender, but this is not guaranteed.''&lt;br /&gt;
&lt;br /&gt;
Getting a finished model out of Blender and into the game is a relatively involved process with a number of possible pitfalls. This guide aims to describe the process in as much detail as possible to assist users who have not done it before, or those who have exported models for other games and would like to know what (if anything) is different.&lt;br /&gt;
&lt;br /&gt;
At present, this guide primarily describes the process for exporting models to the MD5 format. While the engine supports both MD3 and MD5, the latter is preferred.&lt;br /&gt;
&lt;br /&gt;
Before a model may be exported and used in-game, it must be adequately prepared:&lt;br /&gt;
&lt;br /&gt;
* [[Exporting_Models#Engine_Limitations|Engine limitations]] must be adhered to.&lt;br /&gt;
* The model must have a texture applied to it. This texture is not automagically applied to the model after it is exported and loaded in-game, this is only necessary to satisfy the MD5 exporter.&lt;br /&gt;
* The model must be a mesh and must have an armature modifier applied to it.&lt;br /&gt;
* The armature's bones all must have at least one keyframe.&lt;br /&gt;
&lt;br /&gt;
The actual process of exporting a model is straightforward:&lt;br /&gt;
&lt;br /&gt;
# After ensuring that the above requirements are met, the mesh itself is exported.&lt;br /&gt;
# Each animation is exported separately.&lt;br /&gt;
# A configuration file specifying data such as the bounding box size and vertical offset is written. This may include information that is specific to the particular type of model (i.e., buildable or player model).&lt;br /&gt;
# A shader is written that determines how the model is textured in-game.&lt;br /&gt;
# Finally, everything is compressed into a .pk3 archive, properly named, and placed in the correct folder to ensure that it is loaded and may be tested in-game.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages of the MD5 format==&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
&lt;br /&gt;
* Unlike MD3, MD5 is bone-based, meaning that instead of storing an entire mesh for each frame of animation, there is only one mesh file. This single mesh file is deformed using a vertex shader.&lt;br /&gt;
* Because there is only one mesh, only one VBO (vertex buffer object) needs to be created for each MD5 model. The deformation is performed entirely on the GPU, so it is (theoretically) faster than MD3, and uses less memory.&lt;br /&gt;
* Because the format is in plain-text, it can be easily verified for sanity (i.e., to ensure that it was exported correctly and not corrupted in some way).&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
&lt;br /&gt;
* Some forms of motion are more difficult to achieve.&lt;br /&gt;
* Because the Blender 2.5/2.6 MD5 exporter can only export models animated only with bones, certain animation techniques (such as lattices) are not usable.&lt;br /&gt;
* Because the format is in plain-text, it takes up more space than it needs to, though this is negligible and a MD5 model will typically be smaller than the same model in MD3 format.&lt;br /&gt;
&lt;br /&gt;
==Engine Limitations==&lt;br /&gt;
&lt;br /&gt;
The engine places certain limitations on the fidelity of your models. These are:&lt;br /&gt;
&lt;br /&gt;
* There may not be more than 128 bones. (Note: this was increased from 64.)&lt;br /&gt;
* There may not be more than 100,000 vertices.&lt;br /&gt;
* There may not be more than 10,000 triangles.&lt;br /&gt;
* No vertex may belong to more than four vertex groups (i.e., one vertex may not be controlled by more than four bones). An error message will be displayed in-game if this requirement is not met. See [[Exporting_Models#.22R_LoadMD5:_vertex_.25i_requires_more_than_.25i_weights_on_surface_.28.25i.29_in_model_.27.25s.27.22|this]] for more information. This is a limitation of the vertex shader ([https://github.com/Unvanquished/Unvanquished/blob/master/main/glsl/vertexSkinning_vp.glsl main/glsl/vertexSkinning_vp.glsl]) that deforms the base mesh.&lt;br /&gt;
&lt;br /&gt;
==Limitations of the MD5 format==&lt;br /&gt;
&lt;br /&gt;
The MD5 format only supports bones. You may not&lt;br /&gt;
&lt;br /&gt;
* Use lattices or any other means of deformation.&lt;br /&gt;
* Scale bones.&lt;br /&gt;
* Use keyframes on anything other than bone poses. You may, however, set keyframes on bone constraint influences or anything else that would affect a bone's position or rotation.&lt;br /&gt;
&lt;br /&gt;
Note that you do not have to have a parent/child relationship between bones. In fact, in some instances, avoiding a parent/child relationship is necessary to acheive certain effects, such as moving bones around.&lt;br /&gt;
&lt;br /&gt;
==Acquiring and installing the exporter==&lt;br /&gt;
&lt;br /&gt;
You can download the exporter from [http://www.katsbits.com/smforum/index.php?topic=178.0 this thread on katsbits.com]. Installation instructions are in the thread.&lt;br /&gt;
&lt;br /&gt;
Please be aware that there are [[Exporting_Models#All_or_part_of_the_mesh_appears_to_be_sucked_to_the_center|issues]] with certain versions of the exporter with certain versions of Blender.&lt;br /&gt;
&lt;br /&gt;
As of 15 May 2012, there is another MD5 exporter available for Blender 2.63+, available on [http://www.katsbits.com/smforum/index.php?topic=404.0 katsbits]. This is largely untested by the Unvanquished development team, although we are evaluating its use at present. The instructions in this guide currently apply only to the older exporter.&lt;br /&gt;
&lt;br /&gt;
==Exporting the mesh==&lt;br /&gt;
&lt;br /&gt;
''Please be aware that there are issues with the exporter and the current version of Blender. See [[Exporting_Models#All_or_part_of_the_mesh_appears_to_be_sucked_to_the_center|the troubleshooting section]] below for more information.''&lt;br /&gt;
&lt;br /&gt;
# Select the armature and the mesh. The order in which you select the two does not matter.&lt;br /&gt;
# Go to File &amp;amp;rarr; Export &amp;amp;rarr; Quake&amp;amp;nbsp;Model&amp;amp;nbsp;5&amp;amp;nbsp;(.md5)&lt;br /&gt;
# On the left shelf that appears in the file prompt, change the Exports combo box to &amp;quot;Mesh only.&amp;quot; Don't worry about the scale or name fields.&lt;br /&gt;
# Hit &amp;quot;Export MD5&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you must manually edit the mesh file (the one with a &amp;lt;code&amp;gt;.md5mesh&amp;lt;/code&amp;gt; extension) to specify the correct shader to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- snip ---&lt;br /&gt;
mesh {&lt;br /&gt;
	shader &amp;quot;models/buildables/medistat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	numverts 4&lt;br /&gt;
	vert 0 ( 1.000000 0.000000 ) 0 1&lt;br /&gt;
	vert 1 ( 0.000000 0.000000 ) 1 1&lt;br /&gt;
--- snip ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;code&amp;gt;models/buildables/medistat&amp;lt;/code&amp;gt; is '''not''' a file path to a shader; it is the name (again, not filename) of the shader to use. That is, a shader with the matching name will be used for this model.&lt;br /&gt;
&lt;br /&gt;
To avoid having to do this every time you export the mesh, set the name of the material applied to the object in Blender to the same as you edited the md5mesh.&lt;br /&gt;
&lt;br /&gt;
Note that for buildables and weapons, the filename of the exported mesh is dictated by the corresponding [[Exporting_Models#Configuring_the_model|configuration file]]. All player models, however, are hardcoded to look for &amp;lt;code&amp;gt;body.md5mesh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exporting the animations==&lt;br /&gt;
&lt;br /&gt;
===MD3===&lt;br /&gt;
&lt;br /&gt;
Exported MD3 animations require a configuration file that specifies which frames of the animation correspond to which actions the game will display.&lt;br /&gt;
&lt;br /&gt;
This varies slightly by the type (i.e., weapon or buildable) of model.&lt;br /&gt;
&lt;br /&gt;
===MD5===&lt;br /&gt;
&lt;br /&gt;
''Please be aware that there are issues with the exporter and the current version of Blender. See [[Exporting_Models#All_or_part_of_the_mesh_appears_to_be_sucked_to_the_center|this]] for more information.''&lt;br /&gt;
&lt;br /&gt;
The procedure for exporting animations is the same as for exporting the mesh with regard to selecting the mesh and the armature. Before using the exporter, however, you must be certain to set the start and end frames to encompass only the particular animation that you wish to export; each animation must be exported separately.&lt;br /&gt;
&lt;br /&gt;
[[Image:Md5_export_timeline.png|frame|center|The timeline view in Blender, which is used to set which frames of animation to export. Here, only one frame of animation (frame 180) is being exported.]]&lt;br /&gt;
&lt;br /&gt;
At the export file prompt, choose &amp;quot;Anim only.&amp;quot; from the &amp;quot;Exports&amp;quot; combo box. Enter as the filename the name of the particular animation that you are exporting; the correct names to use are given below.&lt;br /&gt;
&lt;br /&gt;
===Weapon animation names===&lt;br /&gt;
&lt;br /&gt;
For more information, see the &amp;lt;code&amp;gt;CG_ParseWeaponFile()&amp;lt;/code&amp;gt; function in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/cgame/cg_weapons.c src/gamelogic/gpp/src/cgame/cg_weapons.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Developers: weapon state constants are enumerated in the &amp;lt;code&amp;gt;weaponstate_t&amp;lt;/code&amp;gt; enum in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/game/bg_public.h src/gamelogic/gpp/src/game/bg_public.h]&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
Artists may safely ignore this table.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Constant&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_READY&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_RAISING&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_DROPPING&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_FIRING&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_RELOADING&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_NEEDS_RESET&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that for both MD3 and MD5 models, there may be separate models for first- and third-person views. Please see &amp;quot;[[Exporting_Models#Weapons|Configuring the model]]&amp;quot; for more information regarding how to specify separate models.&lt;br /&gt;
&lt;br /&gt;
====MD3====&lt;br /&gt;
&lt;br /&gt;
MD3 does not use separate files for separate animations. Instead, a configuration file specifies what frames of a single MD3 animation are used for each in-game animation.&lt;br /&gt;
&lt;br /&gt;
''TODO: Find out how barrel spin is handled by the engine. Is it animated into the barrel model or is it done procedurally?''&lt;br /&gt;
&lt;br /&gt;
In addition to the base weapon mesh, there may be as many as three additional MD3 meshes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Search string&lt;br /&gt;
! Tag&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_flash.md3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;tag_flash&amp;lt;/code&amp;gt;&lt;br /&gt;
| The weapon's muzzle flash.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_barrel.md3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;tag_barrel&amp;lt;/code&amp;gt;&lt;br /&gt;
| The weapon's barrel.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_hand.md3&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| Hands holding the weapon model. Note: this is not used for third person models.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For non-programmers, the &amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt; string is replaced by the parameter given to the &amp;lt;code&amp;gt;weaponModel&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;weaponModel3rdPerson&amp;lt;/code&amp;gt; keyword.&lt;br /&gt;
&lt;br /&gt;
The tag &amp;lt;code&amp;gt;tag_weapon&amp;lt;/code&amp;gt; is used on the main weapon model to align the third person weapon model to the third person player model.&lt;br /&gt;
&lt;br /&gt;
====MD5====&lt;br /&gt;
&lt;br /&gt;
Note that each animation filename must have the &amp;lt;code&amp;gt;.md5anim&amp;lt;/code&amp;gt; extension.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Animation name&lt;br /&gt;
! Engine constant&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_IDLE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Animation played when a weapon is not fired&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_lower&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_DROP&amp;lt;/code&amp;gt;&lt;br /&gt;
| Animation palyed when a weapon is switched from?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_reload&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_RELOAD&amp;lt;/code&amp;gt;&lt;br /&gt;
| Weapon reload animation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_raise&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_RAISE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Animation played when a weapon is switched to?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_fire&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Default attack animation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK2&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | Not sure what these are used for&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK3&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK4&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK5&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK6&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK7&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK8&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Buildable animation names===&lt;br /&gt;
&lt;br /&gt;
====MD3====&lt;br /&gt;
&lt;br /&gt;
As always, MD3 buildable models require a separate configuration file that specifies which frames of the animation correspond to actions displayed by the game. This file is parsed by &amp;lt;code&amp;gt;CG_ParseBuildableAnimationFile()&amp;lt;/code&amp;gt; in [https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/cgame/cg_buildable.c src/gamelogic/gpp/src/cgame/cg_buildable.c].&lt;br /&gt;
&lt;br /&gt;
Each line in the configuration file corresponds to a single animation. Those animations are in the same order as in the table for MD5 animation names below.&lt;br /&gt;
&lt;br /&gt;
The order that animations appear in the configuration file must match this order exactly. Animations may not be omitted.&lt;br /&gt;
&lt;br /&gt;
The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;var&amp;gt;firstFrame&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;numFrames&amp;lt;/var&amp;gt; [&amp;lt;var&amp;gt;loopFrames&amp;lt;/var&amp;gt; [&amp;lt;var&amp;gt;fps&amp;lt;/var&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;var&amp;gt;firstFrame&amp;lt;/var&amp;gt; &amp;amp;mdash; Specifies the initial frame of the animation.&lt;br /&gt;
* &amp;lt;var&amp;gt;numFrames&amp;lt;/var&amp;gt; &amp;amp;mdash; Specifies the number of frames following the initial frame that comprise that animation.&lt;br /&gt;
* &amp;lt;var&amp;gt;loopFrames&amp;lt;/var&amp;gt; &amp;amp;mdash; (''Optional'')&lt;br /&gt;
* &amp;lt;var&amp;gt;fps&amp;lt;/var&amp;gt; &amp;amp;mdash; (''Optional, may only be used if loopFrames is specified'') Specifies the framerate of the animation. If not specified, defaults to 1.&lt;br /&gt;
&lt;br /&gt;
C and C++ style comments (i.e., &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/* */&amp;lt;/code&amp;gt;) are permitted past the last argument.&lt;br /&gt;
&lt;br /&gt;
====MD5====&lt;br /&gt;
&lt;br /&gt;
As with weapon animations, each animation filename must have the &amp;lt;code&amp;gt;.md5anim&amp;lt;/code&amp;gt; extension.&lt;br /&gt;
&lt;br /&gt;
These animation constants are in the &amp;lt;code&amp;gt;buildableAnimNumber_t&amp;lt;/code&amp;gt; enumeration in [https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/game/bg_public.c src/gamelogic/gpp/src/game/bg_public.c].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Animation name&lt;br /&gt;
! Engine constant&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;construct&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_CONSTRUCT1&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Construction animation, shown when the buildable is being built.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;construct2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_CONSTRUCT2&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_IDLE1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Idle animation, shown when the buildable is not doing anything.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;idle2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_IDLE2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Used for the unshrink animation for the barricade.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;idle3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_IDLE3&amp;lt;/code&amp;gt;&lt;br /&gt;
| Just another idle? (need to check this)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_ATTACK1&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Animation played when a buidlable is attacking.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_ATTACK1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_SPAWN1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Used only by spawn points (the telenode and the egg) when someone is spawning from them.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;spawn2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_SPAWN2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Not used&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pain&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_PAIN1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pain animation, used when a buildable is damaged in any way.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pain2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_PAIN2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pain animation used for the barricade when it is damaged and shrunk.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;destroy&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_DESTROY1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Played when a buildable is killed or destroyed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;destroy2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_DESTROY2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Not used as far as I can tell&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;destroyed&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_DESTROYED&amp;lt;/code&amp;gt;&lt;br /&gt;
| The animation played after the buildable's destroy animation finishes playing but before it blows up; essentially, the buildable in a dead state.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Player animation names===&lt;br /&gt;
&lt;br /&gt;
As with weapon animations, each animation filename must have the &amp;lt;code&amp;gt;.md5anim&amp;lt;/code&amp;gt; extension.&lt;br /&gt;
&lt;br /&gt;
Items in italics need to be double-checked.&lt;br /&gt;
&lt;br /&gt;
Note that at present, some of these strings do not match the constants.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Animation name&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Engine constant&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Humans?&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Aliens?&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Assumed Correct&lt;br /&gt;
! Actual (Humans)&lt;br /&gt;
! Actual (Aliens)&lt;br /&gt;
! Humans&lt;br /&gt;
! Aliens&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TORSO_ATTACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_ATTACK1&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack2&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TORSO_ATTACK2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_ATTACK2&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack3&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack3&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_ATTACK3&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;charge&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;charge&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_CHARGE&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Tyrant charge animation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_IDLECR&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch_backward&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch_forward&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_BACKCR&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch_forward&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch_forward&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_WALKCR&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;die&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;die&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;die&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BOTH_DEATH1&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_DEATH1&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gesture&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gesture&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gesture&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TORSO_GESTURE&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_GESTURE&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_IDLE&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| Human idle animation. It seems as though NSPA_STAND (&amp;quot;stand&amp;quot;) is used as the idle animation for aliens.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;jump&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;jump&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;jump&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_JUMP&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_JUMP&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;jump_back&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;jump&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;jump_back&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_JUMPB&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_JUMPBACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Evidently although humans have a separate constant for jumping backwards, they use the same animation file as for jumping forwards.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;land&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;land&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;land&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_LAND&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_LAND&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;land_back&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;land&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;land_back&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_LANDB&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_LANDBACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Like with jumping, humans evidently use the same animation for both LEGS_LAND and LEGS_LANDB.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pain1&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;pain1&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_PAIN1&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Humans evidently do not have a pain animation?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pain2&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;pain2&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_PAIN2&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_RUN&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_RUN&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;run_backwards&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; (?)&lt;br /&gt;
| &amp;lt;code&amp;gt;run_backwards&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_BACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_RUNBACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Note: Not sure if this is correct for the humans&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;run_left&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;run_left&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_RUNLEFT&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;run_right&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;run_right&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_RUNLEFT&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stand&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;stand&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_STAND&amp;lt;/code&amp;gt;&lt;br /&gt;
| ''No''&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| TORSO_STAND is in the code, but I didn't see an animation loaded for the humans&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stand2&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TORSO_STAND2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| ''No''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;step&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;step&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_TURN&amp;lt;/code&amp;gt;?&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| ''No''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;swim&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;swim&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;swim&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_SWIM&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_SWIM&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;turn&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;step&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_TURN&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;walk&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;walk&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;walk&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_WALK&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_WALK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_backwards&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;walk&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_backwards&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_BACKWALK&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_WALKBACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_left&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_left&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_WALKLEFT&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_right&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_right&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_WALKLEFT&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- other animation constants seen that aren't in the table:&lt;br /&gt;
LEGS_WALKCR_BACK&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Writing shaders==&lt;br /&gt;
&lt;br /&gt;
As was implied before, the texture(s) used by a model are not stored in the md5mesh or md5anim files; they are specified by a separate shader file that is placed in the &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
Shaders are a very large topic and are outside the scope of this guide. The [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm XReal shader guide] explains shaders in detail. However, the following shader should do for most purposes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
models/buildables/trapper&lt;br /&gt;
{&lt;br /&gt;
	diffuseMap models/buildables/trapper/trapper.tga&lt;br /&gt;
	bumpMap models/buildables/trapper/trapper_n.tga&lt;br /&gt;
	specularMap models/buildables/trapper/trapper_s.tga&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do take note that&lt;br /&gt;
* &amp;lt;code&amp;gt;models/buildables/trapper&amp;lt;/code&amp;gt; is NOT a path, it is merely a string that matches the shader specified by the &amp;lt;code&amp;gt;.md5mesh&amp;lt;/code&amp;gt;, and&lt;br /&gt;
* &amp;lt;code&amp;gt;bumpMap&amp;lt;/code&amp;gt; actually refers to a normal map.&lt;br /&gt;
&lt;br /&gt;
==Configuring the model==&lt;br /&gt;
&lt;br /&gt;
Aside from the textures used by a model, the scale, vertical position, and bounding box size of the model must be specified. This is done with a configuration file. These were formerly placed in &amp;lt;code&amp;gt;overrides/buildables/&amp;lt;/code&amp;gt; (for buildables) or &amp;lt;code&amp;gt;overrides/classes/&amp;lt;/code&amp;gt; (for player models), but are now placed in &amp;lt;code&amp;gt;configs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Player models===&lt;br /&gt;
&lt;br /&gt;
Reading the configuration file for player models is handled by the &amp;lt;code&amp;gt;CG_ParseCharacterFile()&amp;lt;/code&amp;gt; function in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/cgame/cg_players.c src/gamelogic/gpp/src/cgame/cg_players.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The configuration file may use the following keywords:&lt;br /&gt;
&lt;br /&gt;
''Note: this list is incomplete''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;headoffset &amp;lt;var&amp;gt;x&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;y&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;z&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;sex &amp;lt;var&amp;gt;gender&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sets the gender of the model. Options are &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neuter. Any other character is interpreted as male.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;fixedlegs&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;fixedtorso&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;firstTorsoBoneName&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;footsteps&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;flesh&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;metal&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;splash&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;lastTorsoBoneName&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;torsoControlBoneName&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;neckControlBoneName&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;modelScale&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name        &amp;quot;Basilisk&amp;quot;&lt;br /&gt;
model       level1&lt;br /&gt;
modelScale  1.0&lt;br /&gt;
skin        default&lt;br /&gt;
shadowScale 1.0&lt;br /&gt;
hud         alien_general_hud&lt;br /&gt;
mins        -18 -18 -18&lt;br /&gt;
maxs        18 18 18&lt;br /&gt;
crouchMaxs  18 18 18&lt;br /&gt;
deadMins    -18 -18 -4&lt;br /&gt;
deadMaxs    18 18 4&lt;br /&gt;
zOffset     0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
Weapon configuration files are parsed with &amp;lt;code&amp;gt;CG_ParseWeaponConfig()&amp;lt;/code&amp;gt; function in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/base/src/cgame/cg_weapons.c src/gamelogic/base/src/cgame/cg_weapons.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The configuration file may use the following keywords:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;weaponModel &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;weaponModel3rdPerson &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;idleSound &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;icon &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;crosshair &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;disableIn3rdPerson&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After those keywords, one of the following keywords must be used, followed by an opening curly brace (&amp;lt;code&amp;gt;{&amp;lt;/code&amp;gt;), more commands, and a final closing curly brace (&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;primary&amp;lt;/code&amp;gt; (engine constant: &amp;lt;code&amp;gt;WPM_PRIMARY&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;secondary&amp;lt;/code&amp;gt; (engine constant: &amp;lt;code&amp;gt;WPM_SECONDARY&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;tertiary&amp;lt;/code&amp;gt; (engine constant: &amp;lt;code&amp;gt;WPM_TERTIARY&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
The configuration between the curly braces is handled by &amp;lt;code&amp;gt;CG_ParseWeaponModeSection&amp;lt;/code&amp;gt;, in the same file. It accepts the following keywords:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileModel &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileSprite &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;shader&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt; &amp;amp;mdash; The size of the missile sprite. If this value is negative, it is made zero.&lt;br /&gt;
* &amp;lt;var&amp;gt;shader&amp;lt;/var&amp;gt; &amp;amp;mdash; The shader describing the missile sprite.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileRotates&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileAnimates &amp;lt;var&amp;gt;startFrame&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;numFrames&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;frameRate&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;looping&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileParticleSystem &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileTrailSystem &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;muzzleParticleSystem &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;impactParticleSystem &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;impactMark &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;shader&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;impactSound &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;amp;mdash; The index of the sound file, clamped to the range [0,3]; up to four impact sounds may be defined with this keyword.&lt;br /&gt;
* &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt; &amp;amp;mdash; The file path of the sound file to use.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;impactFleshSound &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;amp;mdash; The index of the sound file, clamped to the range [0,3]; up to four impact sounds may be defined with this keyword.&lt;br /&gt;
* &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt; &amp;amp;mdash; The file path of the sound file to use.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;alwaysImpact&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;flashDLightColor &amp;lt;var&amp;gt;red&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;green&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;blue&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Specifies the color of the muzzle flash &amp;lt;!-- didn't actually double check this --&amp;gt; dynamic lighting.&amp;lt;/p&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;red&amp;lt;/var&amp;gt; &amp;amp;mdash; The red color component as a floating point number in the range [0,1].&lt;br /&gt;
* &amp;lt;var&amp;gt;green&amp;lt;/var&amp;gt; &amp;amp;mdash; The green color component as a floating point number in the range [0,1].&lt;br /&gt;
* &amp;lt;var&amp;gt;blue&amp;lt;/var&amp;gt; &amp;amp;mdash; The blue color component as a floating point number in the range [0,1].&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;continuousFlash&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileDlightColor &amp;lt;var&amp;gt;red&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;green&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;blue&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;red&amp;lt;/var&amp;gt; &amp;amp;mdash; The red color component as a floating point number in the range [0,1].&lt;br /&gt;
* &amp;lt;var&amp;gt;green&amp;lt;/var&amp;gt; &amp;amp;mdash; The green color component as a floating point number in the range [0,1].&lt;br /&gt;
* &amp;lt;var&amp;gt;blue&amp;lt;/var&amp;gt; &amp;amp;mdash; The blue color component as a floating point number in the range [0,1].&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileDlight &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt; &amp;amp;mdash; If this value is negative, it is made zero.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;firingSound &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileSound &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;flashSound &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;amp;mdash; The index of the sound file, clamped to the range [0,3]; up to four impact sounds may be defined with this keyword.&lt;br /&gt;
* &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt; &amp;amp;mdash; The file path of the sound file to use.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As an example, this is the configuration for the chaingun (&amp;lt;code&amp;gt;models/weapons/chaingun/weapon.cfg&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
weaponModel       models/weapons/chaingun/chaingun.md3&lt;br /&gt;
&lt;br /&gt;
icon              icons/iconw_chaingun&lt;br /&gt;
crosshair         48 gfx/2d/crosshair-chaingun_s&lt;br /&gt;
&lt;br /&gt;
primary&lt;br /&gt;
{&lt;br /&gt;
  flashDlightColor      1.0 1.0 0.0&lt;br /&gt;
  flashSound            0 models/weapons/chaingun/flash0.wav&lt;br /&gt;
  flashSound            1 models/weapons/chaingun/flash1.wav&lt;br /&gt;
  flashSound            2 models/weapons/chaingun/flash2.wav&lt;br /&gt;
  flashSound            3 models/weapons/chaingun/flash3.wav&lt;br /&gt;
&lt;br /&gt;
  impactMark            8 gfx/marks/bullet_mrk&lt;br /&gt;
&lt;br /&gt;
  impactSound           0 models/weapons/chaingun/impact0.wav&lt;br /&gt;
&lt;br /&gt;
  impactParticleSystem  models/weapons/rifle/impactPS&lt;br /&gt;
  muzzleParticleSystem  models/weapons/chaingun/muzzlePS&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Buildables===&lt;br /&gt;
&lt;br /&gt;
Reading the configuration file for buildables is handled by the &amp;lt;code&amp;gt;BG_ParseBuildableFile()&amp;lt;/code&amp;gt; function in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/game/bg_misc.c src/gamelogic/gpp/src/game/bg_misc.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The configuration file may use the following keywords:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;model &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; Some models may actually have several different model files (not sure why); this argument specifies which. Clamped to the range [0,3] (which should actually be [0, MAX_BUILDABLE_MODELS]), which means that you may use as many as four models per buildable. This is only used by the machine gun turret, which is composed of different parts.&lt;br /&gt;
* &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt; The file path where the model file is located. Note that for MD5 models, an extension of &amp;lt;code&amp;gt;.md3&amp;lt;/code&amp;gt; is still to be used; it will automatically be changed by the engine.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;modelScale &amp;lt;var&amp;gt;scale&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Scales the model linearly.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;mins &amp;lt;var&amp;gt;minX&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;minY&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;minZ&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The coordinates passed to this and &amp;lt;code&amp;gt;maxs&amp;lt;/code&amp;gt; define the bounding box for the model that is used for collision. The bounding box is always aligned to the global coordinate axes regardless of the orientation of the model, which is something to keep in mind when defining these values. You will likely have to debug these values by enabling drawing the bounding boxes. Load a map in developer mode with &amp;lt;code&amp;gt;\devmap&amp;lt;/code&amp;gt; and set &amp;lt;code&amp;gt;\cg_drawBBOX&amp;lt;/code&amp;gt; to 1. The three arguments combined form the coordinate of one corner of the bounding box, and &amp;lt;code&amp;gt;maxs&amp;lt;/code&amp;gt; the opposite corner.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;maxs &amp;lt;var&amp;gt;minX&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;minY&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;minZ&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Defines the opposite corner of the AABB. (See above.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;zOffset &amp;lt;var&amp;gt;offset&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Sets the vertical offset of the model; in other words, how far off the ground it is.&amp;lt;/p&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;offset&amp;lt;/var&amp;gt; The offset as a floating point (decimal) value.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
model       0 models/buildables/trapper/trapper.md3&lt;br /&gt;
modelScale  0.8&lt;br /&gt;
mins        -15 -15 -15&lt;br /&gt;
maxs        15 15 15&lt;br /&gt;
zOffset     -15&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that at present, you do not have to change the filename extension of the model to match what it actually is; that is, if the model is actually an md5, you may leave the extension as &amp;quot;.md3&amp;quot; and not &amp;quot;.md5mesh&amp;quot; or whatever.&lt;br /&gt;
&lt;br /&gt;
==Directory overview==&lt;br /&gt;
&lt;br /&gt;
This section provides an overview of the subset of the directory structure used by models; directories used for other purposes have been omitted.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;armor/&amp;lt;/code&amp;gt; Location of configurations for the three armor types (i.e., light, helmet, and battlesuit). You should not have to edit these.&lt;br /&gt;
* &amp;lt;code&amp;gt;configs/&amp;lt;/code&amp;gt; Location of configuration files for various models.&lt;br /&gt;
** &amp;lt;code&amp;gt;buildables/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gfx/&amp;lt;/code&amp;gt; Location of various 2d effect textures, such as those used for weapons.&lt;br /&gt;
** ''Subdirectories omitted for brevity''&lt;br /&gt;
* &amp;lt;code&amp;gt;models/&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ammo/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;tesla/&amp;lt;/code&amp;gt; Contains a single image used for the tesla sparks. Not sure why it's located here.&lt;br /&gt;
** &amp;lt;code&amp;gt;buildables/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;acid_tube/&amp;lt;/code&amp;gt; Acid tube&lt;br /&gt;
*** &amp;lt;code&amp;gt;arm/&amp;lt;/code&amp;gt; Armory&lt;br /&gt;
*** &amp;lt;code&amp;gt;barricade/&amp;lt;/code&amp;gt; Barricade&lt;br /&gt;
*** &amp;lt;code&amp;gt;booster/&amp;lt;/code&amp;gt; Booster&lt;br /&gt;
*** &amp;lt;code&amp;gt;dcc/&amp;lt;/code&amp;gt; Defense Computer&lt;br /&gt;
*** &amp;lt;code&amp;gt;eggpod/&amp;lt;/code&amp;gt; Egg&lt;br /&gt;
*** &amp;lt;code&amp;gt;hive/&amp;lt;/code&amp;gt; Hive&lt;br /&gt;
*** &amp;lt;code&amp;gt;hovel/&amp;lt;/code&amp;gt; Hovel&lt;br /&gt;
*** &amp;lt;code&amp;gt;medistat/&amp;lt;/code&amp;gt; Medistation&lt;br /&gt;
*** &amp;lt;code&amp;gt;mgturret/&amp;lt;/code&amp;gt; Machinegun Turret&lt;br /&gt;
*** &amp;lt;code&amp;gt;overmind/&amp;lt;/code&amp;gt; Overmind&lt;br /&gt;
*** &amp;lt;code&amp;gt;reactor/&amp;lt;/code&amp;gt; Reactor&lt;br /&gt;
*** &amp;lt;code&amp;gt;repeater/&amp;lt;/code&amp;gt; Repeater&lt;br /&gt;
*** &amp;lt;code&amp;gt;telenode/&amp;lt;/code&amp;gt; Telenode&lt;br /&gt;
*** &amp;lt;code&amp;gt;tesla/&amp;lt;/code&amp;gt; Tesla generator&lt;br /&gt;
*** &amp;lt;code&amp;gt;trapper/&amp;lt;/code&amp;gt; Trapper&lt;br /&gt;
** &amp;lt;code&amp;gt;players/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;builder/&amp;lt;/code&amp;gt; Human builder model.&lt;br /&gt;
*** &amp;lt;code&amp;gt;human_base/&amp;lt;/code&amp;gt; Unarmored human model. Also includes the jetpack and battery pack.&lt;br /&gt;
*** &amp;lt;code&amp;gt;human_bsuit/&amp;lt;/code&amp;gt; Battlesuit model.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level0/&amp;lt;/code&amp;gt; Dretch.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level1/&amp;lt;/code&amp;gt; Basilisk and advanced basilisk. (The advanced basilisk uses the same model as the regular dragoon, but a different texture.)&lt;br /&gt;
*** &amp;lt;code&amp;gt;level2/&amp;lt;/code&amp;gt; Marauder and advanced marauder. (Same as basilisk with regard to advanced model.)&lt;br /&gt;
*** &amp;lt;code&amp;gt;level3/&amp;lt;/code&amp;gt; Dragoon and advanced dragoon. (Same as basilisk with regard to advanced model.)&lt;br /&gt;
*** &amp;lt;code&amp;gt;level4/&amp;lt;/code&amp;gt; Tyrant.&lt;br /&gt;
** &amp;lt;code&amp;gt;weapons/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;abuild/&amp;lt;/code&amp;gt; As there is no weapon model for the granger, the only thing in this directory is a config to hide the (nonexistant) weapon model in third person (a hack, I guess).&lt;br /&gt;
*** &amp;lt;code&amp;gt;abuildupg/&amp;lt;/code&amp;gt; Advanced granger weapon. Same as above, except the config file specifies sounds for the attack sounds (which are also located in this directory).&lt;br /&gt;
*** &amp;lt;code&amp;gt;ackit/&amp;lt;/code&amp;gt; Advanced construction kit.&lt;br /&gt;
*** &amp;lt;code&amp;gt;blaster/&amp;lt;/code&amp;gt; Blaster.&lt;br /&gt;
*** &amp;lt;code&amp;gt;chaingun/&amp;lt;/code&amp;gt; Chaingun.&lt;br /&gt;
*** &amp;lt;code&amp;gt;ckit/&amp;lt;/code&amp;gt; Construction kit.&lt;br /&gt;
*** &amp;lt;code&amp;gt;flamer/&amp;lt;/code&amp;gt; Flamethrower.&lt;br /&gt;
*** &amp;lt;code&amp;gt;grenade/&amp;lt;/code&amp;gt; Grenade.&lt;br /&gt;
*** &amp;lt;code&amp;gt;hive/&amp;lt;/code&amp;gt; Sprites, configuration file, and sound file for the hive.&lt;br /&gt;
*** &amp;lt;code&amp;gt;lcannon/&amp;lt;/code&amp;gt; Lucifer cannon.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level0/&amp;lt;/code&amp;gt; Dretch configuration and attack sound file.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level1/&amp;lt;/code&amp;gt; Basilisk configuration and attack sound files (hit and miss).&lt;br /&gt;
*** &amp;lt;code&amp;gt;level1upg/&amp;lt;/code&amp;gt; Advanced Basilisk configuration and added gas attack sound file.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level2/&amp;lt;/code&amp;gt; Marauder configuration and attack sound files (hit and miss).&lt;br /&gt;
*** &amp;lt;code&amp;gt;level2upg/&amp;lt;/code&amp;gt; Advanced Marauder configuration and added electric attack sound file.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level3/&amp;lt;/code&amp;gt; Dragoon configuration and attack sound files (hit, miss, and pounce).&lt;br /&gt;
*** &amp;lt;code&amp;gt;level3upg/&amp;lt;/code&amp;gt; Advanced Dragoon configuration and added barb sound files and model.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level4/&amp;lt;/code&amp;gt; Tyrant configuration and attack sound files (hit and miss).&lt;br /&gt;
*** &amp;lt;code&amp;gt;lgun/&amp;lt;/code&amp;gt; Lasgun&lt;br /&gt;
*** &amp;lt;code&amp;gt;lockblob/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;mdriver/&amp;lt;/code&amp;gt; Mass Driver&lt;br /&gt;
*** &amp;lt;code&amp;gt;mgturret/&amp;lt;/code&amp;gt; Machinegun turret '''''FIXME: why does this show up twice?'''''&lt;br /&gt;
*** &amp;lt;code&amp;gt;prifle/&amp;lt;/code&amp;gt; Plasma rifle&lt;br /&gt;
*** &amp;lt;code&amp;gt;psaw/&amp;lt;/code&amp;gt; Painsaw&lt;br /&gt;
*** &amp;lt;code&amp;gt;rifle/&amp;lt;/code&amp;gt; Rifle&lt;br /&gt;
*** &amp;lt;code&amp;gt;shells/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;shotgun/&amp;lt;/code&amp;gt; Shotgun&lt;br /&gt;
*** &amp;lt;code&amp;gt;teslagen/&amp;lt;/code&amp;gt; Tesla generator '''''FIXME: why does this show up twice?'''''&lt;br /&gt;
* &amp;lt;code&amp;gt;overrides/&amp;lt;/code&amp;gt; Depreciated directory for model configuration files. Use &amp;lt;code&amp;gt;configs/&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
** &amp;lt;code&amp;gt;buildables/&amp;lt;/code&amp;gt; Depreceated location for buildable model configs.&lt;br /&gt;
** &amp;lt;code&amp;gt;classes/&amp;lt;/code&amp;gt; Depreceated location for character model configs.&lt;br /&gt;
* &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt; Location for shaders.&lt;br /&gt;
&lt;br /&gt;
==Getting the model in game==&lt;br /&gt;
&lt;br /&gt;
There are two approaches to test your model in-game. The model and related files may be in actual folders, or the engine can load them from a &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; file, which is really just a zip-compressed archive with the extension changed.&lt;br /&gt;
&lt;br /&gt;
The engine always prioritizes files in &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; archives over files and folders at the same priority. The priority from highest to lowest is as follows:&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_homepath/fs_game&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_basepath/fs_game&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;$PWD/fs_game&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_homepath/fs_basegame&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_basepath/fs_basegame&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;$PWD/fs_basegame&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_homepath/BASEGAME&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_basepath/BASEGAME&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;$PWD/BASEGAME&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;BASEGAME&amp;lt;/code&amp;gt; is a preprocessor macro (for non-programmers, a constant; i.e., this cannot be changed at runtime) set to &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; in Unvanquished. &amp;lt;code&amp;gt;$PWD&amp;lt;/code&amp;gt; is the directory that Unvanquished was started from.&lt;br /&gt;
&lt;br /&gt;
Programmers may be interested in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/engine/qcommon/files.c src/engine/qcommon/files.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The default locations for &amp;lt;code&amp;gt;fs_basepath&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;fs_homepath&amp;lt;/code&amp;gt; are as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;fs_basepath&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;fs_homepath&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows&lt;br /&gt;
| TODO&lt;br /&gt;
| TODO&lt;br /&gt;
|-&lt;br /&gt;
| Linux&lt;br /&gt;
| $HOME/.Unvanquished&lt;br /&gt;
| The directory in which Unvanquished is installed.&lt;br /&gt;
|-&lt;br /&gt;
| Mac OS X&lt;br /&gt;
| TODO&lt;br /&gt;
| TODO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Basically, the process to get data in-game is to create a temporary directory somewhere and copy the model, shader(s) and configuration file to that directory (creating sub-directories as necessary), then compress the temporary directory as a &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt; archive. Change the extension of the &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt; archive to &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; and move it into whichever directory you please, knowing that higher priority files will be used over lesser priority files. An example directory structure might look like this:&lt;br /&gt;
&lt;br /&gt;
* tmp&lt;br /&gt;
** configs&lt;br /&gt;
*** buildables&lt;br /&gt;
**** acid_tube.cfg&lt;br /&gt;
** models&lt;br /&gt;
*** buildables&lt;br /&gt;
**** acid_tube&lt;br /&gt;
***** acid_tube.md5mesh&lt;br /&gt;
***** acid_tube.tga&lt;br /&gt;
***** acid_tube_g.tga&lt;br /&gt;
***** acid_tube_n.tga&lt;br /&gt;
***** acid_tube_s.tga&lt;br /&gt;
***** idle.md5anim&lt;br /&gt;
***** ''other animations omitted for brevity''&lt;br /&gt;
** scripts&lt;br /&gt;
*** acid_tube.shader&lt;br /&gt;
&lt;br /&gt;
Please note that the exact name of the textures used is not strictly defined; these may be whatever you please and are specified by the shader file. See [[Exporting_Models#Writing_shaders|Writing shaders]] for more information.&lt;br /&gt;
&lt;br /&gt;
==Testing the model==&lt;br /&gt;
&lt;br /&gt;
Once you have the model exported, the shader and configuration written, and everything packaged into a .pk3 file and in place, you are ready to test.&lt;br /&gt;
&lt;br /&gt;
===Testing externally===&lt;br /&gt;
&lt;br /&gt;
Rather than testing the exported model in-game, you may also test the model with a stand-alone MD5 viewer. At present, there is a viewer for Windows available [http://www.katsbits.com/files/md5/modelviewer_0.93a.zip here].&lt;br /&gt;
&lt;br /&gt;
===Testing in game===&lt;br /&gt;
&lt;br /&gt;
Start the game, and enter the following commands:&lt;br /&gt;
&lt;br /&gt;
 \sv_pure 0&lt;br /&gt;
 \devmap atcshd&lt;br /&gt;
&lt;br /&gt;
You may also load a map with the regular &amp;lt;code&amp;gt;\map&amp;lt;/code&amp;gt; command. Be aware, however, that &amp;lt;code&amp;gt;devmap&amp;lt;/code&amp;gt; enables cheats which can make it easier to test (such as being able to jump directly to stage 2 or 3 if required). Also note that with &amp;lt;code&amp;gt;devmap&amp;lt;/code&amp;gt;, the build time for buildables is zero, so the building animation(s) will not play.&lt;br /&gt;
&lt;br /&gt;
====Tips====&lt;br /&gt;
&lt;br /&gt;
* If the model is a buildable, weapon, or player model that is not immediately available (i.e., not available until a later stage), you can change the stage with &amp;lt;code&amp;gt;g_alienStage&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;g_humanStage&amp;lt;/code&amp;gt;. Both of these cvars accept a single parameter, which is the zero-based index of the stage; to skip to stage 2, use 1 as a parameter, and to skip to stage 2, use 2 as a parameter (stage 1 is 0).&lt;br /&gt;
* If you do not have sufficient credits to purchase an item model you wish to test, or evos to evolve to the desired class, you may give yourself the maximum amount that you can carry with &amp;lt;code&amp;gt;\give all&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To make yourself invincible, use the &amp;lt;code&amp;gt;\god&amp;lt;/code&amp;gt; command.&lt;br /&gt;
* To stop buildables from attacking, use the &amp;lt;code&amp;gt;\notarget&amp;lt;/code&amp;gt; command.&lt;br /&gt;
* To stress test the engine's ability to display a large number of buildables, set &amp;lt;code&amp;gt;g_humanBuildPoints&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;g_alienBuildPoints&amp;lt;/code&amp;gt;  to as high as you wish; this will allow you to build as much as you please.&lt;br /&gt;
&lt;br /&gt;
====Debugging the model====&lt;br /&gt;
&lt;br /&gt;
* To determine what file was loaded for a particular asset (e.g., to determine if files are being read from a particular &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; archive), use the &amp;lt;code&amp;gt;\which&amp;lt;/code&amp;gt; command with the relative path to the asset as an argument, such as &amp;lt;code&amp;gt;\which&amp;amp;nbsp;models/buildables/acid_tube/acid_tube.md5mesh&amp;lt;/code&amp;gt;. Note that &amp;lt;code&amp;gt;which&amp;lt;/code&amp;gt; accepts both forward- and backslashes regardless of platform.&lt;br /&gt;
* To visually inpsect a model's bounding box, which is set by its configuration file, set &amp;lt;code&amp;gt;\cg_drawBBOX&amp;lt;/code&amp;gt; to 1.&lt;br /&gt;
* To visually inspect the bone structure of a MD5 model, set &amp;lt;code&amp;gt;r_showSkeleton&amp;lt;/code&amp;gt; to 1. ''Note: at present there is a bug that causes bones to be displayed incorrectly. See [https://github.com/Unvanquished/Unvanquished/issues/2 Issue #2] on GitHub for more information.''&lt;br /&gt;
* To hide map geometry, set &amp;lt;code&amp;gt;r_drawworld&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Note that with this set to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, PVS will still be in effect, so it might still be difficult to view your model.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Error while exporting from Blender with the MD5 exporter===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Md5_export_error_no_armature.png]]&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | This error displays when the selected object does not have an armature modifier. Any object exported as an md5 needs bones, even if it is static. If you are unsure of how to create a static object with md5, just add an armature, set the playback start and end frame to 1, and add a location or rotation keyframe at frame 1.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Md5_export_error_no_animation.png]]&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | This error displays when there are no keyframes. Follow the abov instructions for exporting a static object with md5.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Md5_export_error_no_material.png]]&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | This error displays when the object does not have a material applied to it. This is required by the script, even though it really does not affect the exported result.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Appearance problems in-game===&lt;br /&gt;
&lt;br /&gt;
====All or part of the mesh appears to be sucked to the center====&lt;br /&gt;
&lt;br /&gt;
''Please note that as of 2012-02-27, the MD5 exporter does not work properly in several more recent versions of Blender. Use Blender 2.59 until this is fixed. See [http://www.katsbits.com/smforum/index.php?topic=167.msg2135#msg2135 the MD5 exporter thread] for more information.''&lt;br /&gt;
&lt;br /&gt;
This can happen for a number of reasons:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There are vertices without weights.&lt;br /&gt;
&amp;lt;p&amp;gt;''Solution'': apply weights to vertices that do not have them. If those verts are not to be animated, weight them to a bone that does not move.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You are using Blender 2.61 and you have bones that have animated positions.&lt;br /&gt;
&amp;lt;p&amp;gt;''Solution'': Use an earlier version of blender until this is fixed in the exporter.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You are using Blender 2.62 and you have bones that are not located at the origin and do not have a parent or have animated positions.&lt;br /&gt;
&amp;lt;p&amp;gt;''Solution'': Again, use an earlier version of blender until this is fixed in the exporter.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;R_LoadMD5: vertex %i requires more than %i weights on surface (%i) in model '%s'&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
This error is displayed in the console in game when a vertex belongs to too many groups.&lt;br /&gt;
&lt;br /&gt;
You can use this script to check your model for this before exporting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Copyright 2012 Nicholas De Cicco. &amp;lt;velociostrich@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
# you may not use this file except in compliance with the License.&lt;br /&gt;
# You may obtain a copy of the License at&lt;br /&gt;
#&lt;br /&gt;
#	http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
#&lt;br /&gt;
# Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
# distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
# See the License for the specific language governing permissions and&lt;br /&gt;
# limitations under the License.&lt;br /&gt;
&lt;br /&gt;
import bpy, math&lt;br /&gt;
from bpy.props import *&lt;br /&gt;
&lt;br /&gt;
MAX_GROUPS_PER_VERT = 4&lt;br /&gt;
&lt;br /&gt;
# Switch to object mode for vertex selection to work&lt;br /&gt;
bpy.ops.object.mode_set(mode='OBJECT')&lt;br /&gt;
&lt;br /&gt;
for obj in bpy.context.selected_objects:&lt;br /&gt;
	# Check to see that the object is a mesh.&lt;br /&gt;
	if obj.type != 'MESH':&lt;br /&gt;
		continue&lt;br /&gt;
&lt;br /&gt;
	# Select verts that belong to too many groups&lt;br /&gt;
	for vertex in obj.data.vertices:&lt;br /&gt;
		if len(vertex.groups) &amp;gt; MAX_GROUPS_PER_VERT:&lt;br /&gt;
			vertex.select = True&lt;br /&gt;
		else:&lt;br /&gt;
			vertex.select = False&lt;br /&gt;
&lt;br /&gt;
# Switch back to edit mode so the user can see any selected verts&lt;br /&gt;
bpy.ops.object.mode_set(mode='EDIT')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Using the Script====&lt;br /&gt;
&lt;br /&gt;
# Select the mesh (or meshes) that you would like to check.&lt;br /&gt;
# Create a new text editor window and text data block.&lt;br /&gt;
# Copy and paste the script into the text editor.&lt;br /&gt;
# Hit &amp;quot;Run Script&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once the script has ran, the 3d view will switch to edit mode and any offending vertices will be selected. A handy tip: clicking an individual vertex will reveal which groups it is a member of in the properties shelf.&lt;br /&gt;
&lt;br /&gt;
[[Image:Properties_shelf_vertex_groups.png|frame|center|The vertex group section of the properties shelf]]&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
* [http://www.modwiki.net/wiki/MD5_%28file_format%29 MD5 file format documentation]&lt;br /&gt;
* [http://www.katsbits.com/tools/# Tools for MD5 and other file formats]&lt;br /&gt;
* [http://download.blender.org/release/ Older versions of Blender]&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Wiki_project_resources&amp;diff=662</id>
		<title>Wiki project resources</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Wiki_project_resources&amp;diff=662"/>
		<updated>2012-08-26T02:14:05Z</updated>

		<summary type="html">&lt;p&gt;Devhc: untwiddle a sentence&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At present, the wiki needs a lot of work.&lt;br /&gt;
&lt;br /&gt;
At the time of this writing, most article writers need to learn about web design ergonomics.&lt;br /&gt;
&lt;br /&gt;
Various contents, including ToDo lists, screenshots, release data files, large text messages, and other shared files are hosted at foreign websites. They should be moved to unvanquished.net, for which sufficient serving functionality should be installed. The priorities for these are based on the ease of installation, for example, the removal (or the moving) of ''web browsing analytics'' is of high priority.&lt;br /&gt;
&lt;br /&gt;
==Pages in need of work==&lt;br /&gt;
&lt;br /&gt;
Aside from these pages, please also see the [[Special:WantedPages|the list of wanted pages]].&lt;br /&gt;
&lt;br /&gt;
===Technical documentation===&lt;br /&gt;
&lt;br /&gt;
* [[List of cvars]] and their documentation&lt;br /&gt;
* [[Creating custom keybinds]]&lt;br /&gt;
* [[Mapping]]&lt;br /&gt;
* [[Modeling Guide]]&lt;br /&gt;
* [[Music and sounds]]&lt;br /&gt;
&lt;br /&gt;
===Gameplay===&lt;br /&gt;
&lt;br /&gt;
* [[Aliens]]&lt;br /&gt;
** Buildables:&lt;br /&gt;
*** [[Egg]]&lt;br /&gt;
*** [[Overmind]]&lt;br /&gt;
*** [[Acid Tube]]&lt;br /&gt;
*** [[Hive]]&lt;br /&gt;
*** [[Trapper]]&lt;br /&gt;
*** [[Barricade]]&lt;br /&gt;
** Classes:&lt;br /&gt;
*** [[Dretch]]&lt;br /&gt;
*** [[Granger]]&lt;br /&gt;
*** [[Basilisk]]&lt;br /&gt;
*** [[Marauder]]&lt;br /&gt;
*** [[Dragoon]]&lt;br /&gt;
*** [[Tyrant]]&lt;br /&gt;
* [[Humans]]&lt;br /&gt;
** Upgrades/Armor:&lt;br /&gt;
*** [[Jetpack]]&lt;br /&gt;
*** [[Helmet]]&lt;br /&gt;
*** [[Battery Pack]]&lt;br /&gt;
*** [[Battlesuit]]&lt;br /&gt;
** Weapons:&lt;br /&gt;
*** [[Construction Kit]]&lt;br /&gt;
*** [[Blaster]]&lt;br /&gt;
*** [[Rifle]]&lt;br /&gt;
*** [[Pain Saw]]&lt;br /&gt;
*** [[Shotgun]]&lt;br /&gt;
*** [[Las Gun]]&lt;br /&gt;
*** [[Mass Driver]]&lt;br /&gt;
*** [[Chaingun]]&lt;br /&gt;
*** [[Plasma Rifle]]&lt;br /&gt;
*** [[Lucifer Cannon]]&lt;br /&gt;
** Buildables:&lt;br /&gt;
*** [[Telenode]]&lt;br /&gt;
*** [[Reactor]]&lt;br /&gt;
*** [[Machinegun Turret]]&lt;br /&gt;
*** [[Armory]]&lt;br /&gt;
*** [[Medistation]]&lt;br /&gt;
*** [[Defense Computer]]&lt;br /&gt;
*** [[Tesla Generator]]&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Exporting_models&amp;diff=661</id>
		<title>Tutorials/Exporting models</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Exporting_models&amp;diff=661"/>
		<updated>2012-08-26T01:32:28Z</updated>

		<summary type="html">&lt;p&gt;Devhc: use general computer driving terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modeling]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
''Notice: This guide was written for Blender 2.61. Most of this guide should apply for other versions of Blender, but this is not guaranteed.''&lt;br /&gt;
&lt;br /&gt;
Getting a finished model out of Blender and into the game is a relatively involved process with a number of possible pitfalls. This guide aims to describe the process in as much detail as possible to assist users who have not done it before, or those who have exported models for other games and would like to know what (if anything) is different.&lt;br /&gt;
&lt;br /&gt;
At present, this guide primarily describes the process for exporting models to the MD5 format. While the engine supports both MD3 and MD5, the latter is preferred.&lt;br /&gt;
&lt;br /&gt;
Before a model may be exported and used in-game, it must be adequately prepared:&lt;br /&gt;
&lt;br /&gt;
* [[Exporting_Models#Engine_Limitations|Engine limitations]] must be adhered to.&lt;br /&gt;
* The model must have a texture applied to it. This texture is not automagically applied to the model after it is exported and loaded in-game, this is only necessary to satisfy the MD5 exporter.&lt;br /&gt;
* The model must be a mesh and must have an armature modifier applied to it.&lt;br /&gt;
* The armature's bones all must have at least one keyframe.&lt;br /&gt;
&lt;br /&gt;
The actual process of exporting a model is straightforward:&lt;br /&gt;
&lt;br /&gt;
# After ensuring that the above requirements are met, the mesh itself is exported.&lt;br /&gt;
# Each animation is exported separately.&lt;br /&gt;
# A configuration file specifying data such as the bounding box size and vertical offset is written. This may include information that is specific to the particular type of model (i.e., buildable or player model).&lt;br /&gt;
# A shader is written that determines how the model is textured in-game.&lt;br /&gt;
# Finally, everything is compressed into a .pk3 archive, properly named, and placed in the correct folder to ensure that it is loaded and may be tested in-game.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages of the MD5 format==&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
&lt;br /&gt;
* Unlike MD3, MD5 is bone-based, meaning that instead of storing an entire mesh for each frame of animation, there is only one mesh file. This single mesh file is deformed using a vertex shader.&lt;br /&gt;
* Because there is only one mesh, only one VBO (vertex buffer object) needs to be created for each MD5 model. The deformation is performed entirely on the GPU, so it is (theoretically) faster than MD3, and uses less memory.&lt;br /&gt;
* Because the format is in plain-text, it can be easily verified for sanity (i.e., to ensure that it was exported correctly and not corrupted in some way).&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
&lt;br /&gt;
* Some forms of motion are more difficult to achieve.&lt;br /&gt;
* Because the Blender 2.5/2.6 MD5 exporter can only export models animated only with bones, certain animation techniques (such as lattices) are not usable.&lt;br /&gt;
* Because the format is in plain-text, it takes up more space than it needs to, though this is negligible and a MD5 model will typically be smaller than the same model in MD3 format.&lt;br /&gt;
&lt;br /&gt;
==Engine Limitations==&lt;br /&gt;
&lt;br /&gt;
The engine places certain limitations on the fidelity of your models. These are:&lt;br /&gt;
&lt;br /&gt;
* There may not be more than 128 bones. (Note: this was increased from 64.)&lt;br /&gt;
* There may not be more than 100,000 vertices.&lt;br /&gt;
* There may not be more than 10,000 triangles.&lt;br /&gt;
* No vertex may belong to more than four vertex groups (i.e., one vertex may not be controlled by more than four bones). An error message will be displayed in-game if this requirement is not met. See [[Exporting_Models#.22R_LoadMD5:_vertex_.25i_requires_more_than_.25i_weights_on_surface_.28.25i.29_in_model_.27.25s.27.22|this]] for more information. This is a limitation of the vertex shader ([https://github.com/Unvanquished/Unvanquished/blob/master/main/glsl/vertexSkinning_vp.glsl main/glsl/vertexSkinning_vp.glsl]) that deforms the base mesh.&lt;br /&gt;
&lt;br /&gt;
==Limitations of the MD5 format==&lt;br /&gt;
&lt;br /&gt;
The MD5 format only supports bones. You may not&lt;br /&gt;
&lt;br /&gt;
* Use lattices or any other means of deformation.&lt;br /&gt;
* Scale bones.&lt;br /&gt;
* Use keyframes on anything other than bone poses. You may, however, set keyframes on bone constraint influences or anything else that would affect a bone's position or rotation.&lt;br /&gt;
&lt;br /&gt;
Note that you do not have to have a parent/child relationship between bones. In fact, in some instances, avoiding a parent/child relationship is necessary to acheive certain effects, such as moving bones around.&lt;br /&gt;
&lt;br /&gt;
==Acquiring and installing the exporter==&lt;br /&gt;
&lt;br /&gt;
You can download the exporter from [http://www.katsbits.com/smforum/index.php?topic=178.0 this thread on katsbits.com]. Installation instructions are in the thread.&lt;br /&gt;
&lt;br /&gt;
Please be aware that there are [[Exporting_Models#All_or_part_of_the_mesh_appears_to_be_sucked_to_the_center|issues]] with certain versions of the exporter with certain versions of Blender.&lt;br /&gt;
&lt;br /&gt;
As of 15 May 2012, there is another MD5 exporter available for Blender 2.63+, available on [http://www.katsbits.com/smforum/index.php?topic=404.0 katsbits]. This is largely untested by the Unvanquished development team, although we are evaluating its use at present. The instructions in this guide currently apply only to the older exporter.&lt;br /&gt;
&lt;br /&gt;
==Exporting the mesh==&lt;br /&gt;
&lt;br /&gt;
''Please be aware that there are issues with the exporter and the current version of Blender. See [[Exporting_Models#All_or_part_of_the_mesh_appears_to_be_sucked_to_the_center|the troubleshooting section]] below for more information.''&lt;br /&gt;
&lt;br /&gt;
# Select the armature and the mesh. The order in which you select the two does not matter.&lt;br /&gt;
# Go to File &amp;amp;rarr; Export &amp;amp;rarr; Quake&amp;amp;nbsp;Model&amp;amp;nbsp;5&amp;amp;nbsp;(.md5)&lt;br /&gt;
# On the left shelf that appears in the file prompt, change the Exports combo box to &amp;quot;Mesh only.&amp;quot; Don't worry about the scale or name fields.&lt;br /&gt;
# Hit &amp;quot;Export MD5&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you must manually edit the mesh file (the one with a &amp;lt;code&amp;gt;.md5mesh&amp;lt;/code&amp;gt; extension) to specify the correct shader to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- snip ---&lt;br /&gt;
mesh {&lt;br /&gt;
	shader &amp;quot;models/buildables/medistat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	numverts 4&lt;br /&gt;
	vert 0 ( 1.000000 0.000000 ) 0 1&lt;br /&gt;
	vert 1 ( 0.000000 0.000000 ) 1 1&lt;br /&gt;
--- snip ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;code&amp;gt;models/buildables/medistat&amp;lt;/code&amp;gt; is '''not''' a file path to a shader; it is the name (again, not filename) of the shader to use. That is, a shader with the matching name will be used for this model.&lt;br /&gt;
&lt;br /&gt;
To avoid having to do this every time you export the mesh, set the name of the material applied to the object in Blender to the same as you edited the md5mesh.&lt;br /&gt;
&lt;br /&gt;
Note that for buildables and weapons, the filename of the exported mesh is dictated by the corresponding [[Exporting_Models#Configuring_the_model|configuration file]]. All player models, however, are hardcoded to look for &amp;lt;code&amp;gt;body.md5mesh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exporting the animations==&lt;br /&gt;
&lt;br /&gt;
===MD3===&lt;br /&gt;
&lt;br /&gt;
Exported MD3 animations require a configuration file that specifies which frames of the animation correspond to which actions the game will display.&lt;br /&gt;
&lt;br /&gt;
This varies slightly by the type (i.e., weapon or buildable) of model.&lt;br /&gt;
&lt;br /&gt;
===MD5===&lt;br /&gt;
&lt;br /&gt;
''Please be aware that there are issues with the exporter and the current version of Blender. See [[Exporting_Models#All_or_part_of_the_mesh_appears_to_be_sucked_to_the_center|this]] for more information.''&lt;br /&gt;
&lt;br /&gt;
The procedure for exporting animations is the same as for exporting the mesh with regard to selecting the mesh and the armature. Before using the exporter, however, you must be certain to set the start and end frames to encompass only the particular animation that you wish to export; each animation must be exported separately.&lt;br /&gt;
&lt;br /&gt;
[[Image:Md5_export_timeline.png|frame|center|The timeline view in Blender, which is used to set which frames of animation to export. Here, only one frame of animation (frame 180) is being exported.]]&lt;br /&gt;
&lt;br /&gt;
At the export file prompt, choose &amp;quot;Anim only.&amp;quot; from the &amp;quot;Exports&amp;quot; combo box. Enter as the filename the name of the particular animation that you are exporting; the correct names to use are given below.&lt;br /&gt;
&lt;br /&gt;
===Weapon animation names===&lt;br /&gt;
&lt;br /&gt;
For more information, see the &amp;lt;code&amp;gt;CG_ParseWeaponFile()&amp;lt;/code&amp;gt; function in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/cgame/cg_weapons.c src/gamelogic/gpp/src/cgame/cg_weapons.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Developers: weapon state constants are enumerated in the &amp;lt;code&amp;gt;weaponstate_t&amp;lt;/code&amp;gt; enum in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/game/bg_public.h src/gamelogic/gpp/src/game/bg_public.h]&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
Artists may safely ignore this table.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Constant&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_READY&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_RAISING&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_DROPPING&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_FIRING&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_RELOADING&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_NEEDS_RESET&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that for both MD3 and MD5 models, there may be separate models for first- and third-person views. Please see &amp;quot;[[Exporting_Models#Weapons|Configuring the model]]&amp;quot; for more information regarding how to specify separate models.&lt;br /&gt;
&lt;br /&gt;
====MD3====&lt;br /&gt;
&lt;br /&gt;
MD3 does not use separate files for separate animations. Instead, a configuration file specifies what frames of a single MD3 animation are used for each in-game animation.&lt;br /&gt;
&lt;br /&gt;
''TODO: Find out how barrel spin is handled by the engine. Is it animated into the barrel model or is it done procedurally?''&lt;br /&gt;
&lt;br /&gt;
In addition to the base weapon mesh, there may be as many as three additional MD3 meshes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Search string&lt;br /&gt;
! Tag&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_flash.md3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;tag_flash&amp;lt;/code&amp;gt;&lt;br /&gt;
| The weapon's muzzle flash.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_barrel.md3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;tag_barrel&amp;lt;/code&amp;gt;&lt;br /&gt;
| The weapon's barrel.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_hand.md3&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| Hands holding the weapon model. Note: this is not used for third person models.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For non-programmers, the &amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt; string is replaced by the parameter given to the &amp;lt;code&amp;gt;weaponModel&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;weaponModel3rdPerson&amp;lt;/code&amp;gt; keyword.&lt;br /&gt;
&lt;br /&gt;
The tag &amp;lt;code&amp;gt;tag_weapon&amp;lt;/code&amp;gt; is used on the main weapon model to align the third person weapon model to the third person player model.&lt;br /&gt;
&lt;br /&gt;
====MD5====&lt;br /&gt;
&lt;br /&gt;
Note that each animation filename must have the &amp;lt;code&amp;gt;.md5anim&amp;lt;/code&amp;gt; extension.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Animation name&lt;br /&gt;
! Engine constant&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_IDLE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Animation played when a weapon is not fired&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_lower&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_DROP&amp;lt;/code&amp;gt;&lt;br /&gt;
| Animation palyed when a weapon is switched from?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_reload&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_RELOAD&amp;lt;/code&amp;gt;&lt;br /&gt;
| Weapon reload animation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_raise&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_RAISE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Animation played when a weapon is switched to?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_fire&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Default attack animation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK2&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | Not sure what these are used for&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK3&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK4&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK5&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK6&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK7&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK8&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Buildable animation names===&lt;br /&gt;
&lt;br /&gt;
====MD3====&lt;br /&gt;
&lt;br /&gt;
As always, MD3 buildable models require a separate configuration file that specifies which frames of the animation correspond to actions displayed by the game. This file is parsed by &amp;lt;code&amp;gt;CG_ParseBuildableAnimationFile()&amp;lt;/code&amp;gt; in [https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/cgame/cg_buildable.c src/gamelogic/gpp/src/cgame/cg_buildable.c].&lt;br /&gt;
&lt;br /&gt;
Each line in the configuration file corresponds to a single animation. Those animations are in the same order as in the table for MD5 animation names below.&lt;br /&gt;
&lt;br /&gt;
The order that animations appear in the configuration file must match this order exactly. Animations may not be omitted.&lt;br /&gt;
&lt;br /&gt;
The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;var&amp;gt;firstFrame&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;numFrames&amp;lt;/var&amp;gt; [&amp;lt;var&amp;gt;loopFrames&amp;lt;/var&amp;gt; [&amp;lt;var&amp;gt;fps&amp;lt;/var&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;var&amp;gt;firstFrame&amp;lt;/var&amp;gt; &amp;amp;mdash; Specifies the initial frame of the animation.&lt;br /&gt;
* &amp;lt;var&amp;gt;numFrames&amp;lt;/var&amp;gt; &amp;amp;mdash; Specifies the number of frames following the initial frame that comprise that animation.&lt;br /&gt;
* &amp;lt;var&amp;gt;loopFrames&amp;lt;/var&amp;gt; &amp;amp;mdash; (''Optional'')&lt;br /&gt;
* &amp;lt;var&amp;gt;fps&amp;lt;/var&amp;gt; &amp;amp;mdash; (''Optional, may only be used if loopFrames is specified'') Specifies the framerate of the animation. If not specified, defaults to 1.&lt;br /&gt;
&lt;br /&gt;
C and C++ style comments (i.e., &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/* */&amp;lt;/code&amp;gt;) are permitted past the last argument.&lt;br /&gt;
&lt;br /&gt;
====MD5====&lt;br /&gt;
&lt;br /&gt;
As with weapon animations, each animation filename must have the &amp;lt;code&amp;gt;.md5anim&amp;lt;/code&amp;gt; extension.&lt;br /&gt;
&lt;br /&gt;
These animation constants are in the &amp;lt;code&amp;gt;buildableAnimNumber_t&amp;lt;/code&amp;gt; enumeration in [https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/game/bg_public.c src/gamelogic/gpp/src/game/bg_public.c].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Animation name&lt;br /&gt;
! Engine constant&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;construct&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_CONSTRUCT1&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Construction animation, shown when the buildable is being built.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;construct2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_CONSTRUCT2&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_IDLE1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Idle animation, shown when the buildable is not doing anything.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;idle2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_IDLE2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Used for the unshrink animation for the barricade.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;idle3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_IDLE3&amp;lt;/code&amp;gt;&lt;br /&gt;
| Just another idle? (need to check this)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_ATTACK1&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Animation played when a buidlable is attacking.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_ATTACK1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_SPAWN1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Used only by spawn points (the telenode and the egg) when someone is spawning from them.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;spawn2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_SPAWN2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Not used&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pain&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_PAIN1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pain animation, used when a buildable is damaged in any way.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pain2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_PAIN2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pain animation used for the barricade when it is damaged and shrunk.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;destroy&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_DESTROY1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Played when a buildable is killed or destroyed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;destroy2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_DESTROY2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Not used as far as I can tell&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;destroyed&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_DESTROYED&amp;lt;/code&amp;gt;&lt;br /&gt;
| The animation played after the buildable's destroy animation finishes playing but before it blows up; essentially, the buildable in a dead state.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Player animation names===&lt;br /&gt;
&lt;br /&gt;
As with weapon animations, each animation filename must have the &amp;lt;code&amp;gt;.md5anim&amp;lt;/code&amp;gt; extension.&lt;br /&gt;
&lt;br /&gt;
Items in italics need to be double-checked.&lt;br /&gt;
&lt;br /&gt;
Note that at present, some of these strings do not match the constants.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Animation name&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Engine constant&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Humans?&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Aliens?&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Assumed Correct&lt;br /&gt;
! Actual (Humans)&lt;br /&gt;
! Actual (Aliens)&lt;br /&gt;
! Humans&lt;br /&gt;
! Aliens&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TORSO_ATTACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_ATTACK1&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack2&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TORSO_ATTACK2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_ATTACK2&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack3&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack3&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_ATTACK3&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;charge&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;charge&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_CHARGE&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Tyrant charge animation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_IDLECR&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch_backward&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch_forward&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_BACKCR&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch_forward&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch_forward&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_WALKCR&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;die&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;die&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;die&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BOTH_DEATH1&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_DEATH1&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gesture&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gesture&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gesture&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TORSO_GESTURE&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_GESTURE&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_IDLE&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| Human idle animation. It seems as though NSPA_STAND (&amp;quot;stand&amp;quot;) is used as the idle animation for aliens.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;jump&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;jump&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;jump&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_JUMP&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_JUMP&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;jump_back&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;jump&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;jump_back&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_JUMPB&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_JUMPBACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Evidently although humans have a separate constant for jumping backwards, they use the same animation file as for jumping forwards.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;land&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;land&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;land&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_LAND&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_LAND&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;land_back&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;land&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;land_back&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_LANDB&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_LANDBACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Like with jumping, humans evidently use the same animation for both LEGS_LAND and LEGS_LANDB.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pain1&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;pain1&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_PAIN1&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Humans evidently do not have a pain animation?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pain2&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;pain2&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_PAIN2&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_RUN&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_RUN&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;run_backwards&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; (?)&lt;br /&gt;
| &amp;lt;code&amp;gt;run_backwards&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_BACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_RUNBACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Note: Not sure if this is correct for the humans&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;run_left&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;run_left&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_RUNLEFT&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;run_right&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;run_right&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_RUNLEFT&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stand&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;stand&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_STAND&amp;lt;/code&amp;gt;&lt;br /&gt;
| ''No''&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| TORSO_STAND is in the code, but I didn't see an animation loaded for the humans&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stand2&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TORSO_STAND2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| ''No''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;step&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;step&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_TURN&amp;lt;/code&amp;gt;?&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| ''No''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;swim&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;swim&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;swim&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_SWIM&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_SWIM&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;turn&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;step&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_TURN&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;walk&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;walk&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;walk&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_WALK&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_WALK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_backwards&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;walk&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_backwards&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_BACKWALK&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_WALKBACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_left&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_left&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_WALKLEFT&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_right&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_right&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_WALKLEFT&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- other animation constants seen that aren't in the table:&lt;br /&gt;
LEGS_WALKCR_BACK&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Writing shaders==&lt;br /&gt;
&lt;br /&gt;
As was implied before, the texture(s) used by a model are not stored in the md5mesh or md5anim files; they are specified by a separate shader file that is placed in the &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
Shaders are a very large topic and are outside the scope of this guide. The [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm XReal shader guide] explains shaders in detail. However, the following shader should do for most purposes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
models/buildables/trapper&lt;br /&gt;
{&lt;br /&gt;
	diffuseMap models/buildables/trapper/trapper.tga&lt;br /&gt;
	bumpMap models/buildables/trapper/trapper_n.tga&lt;br /&gt;
	specularMap models/buildables/trapper/trapper_s.tga&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do take note that&lt;br /&gt;
* &amp;lt;code&amp;gt;models/buildables/trapper&amp;lt;/code&amp;gt; is NOT a path, it is merely a string that matches the shader specified by the &amp;lt;code&amp;gt;.md5mesh&amp;lt;/code&amp;gt;, and&lt;br /&gt;
* &amp;lt;code&amp;gt;bumpMap&amp;lt;/code&amp;gt; actually refers to a normal map.&lt;br /&gt;
&lt;br /&gt;
==Configuring the model==&lt;br /&gt;
&lt;br /&gt;
Aside from the textures used by a model, the scale, vertical position, and bounding box size of the model must be specified. This is done with a configuration file. These were formerly placed in &amp;lt;code&amp;gt;overrides/buildables/&amp;lt;/code&amp;gt; (for buildables) or &amp;lt;code&amp;gt;overrides/classes/&amp;lt;/code&amp;gt; (for player models), but are now placed in &amp;lt;code&amp;gt;configs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Player models===&lt;br /&gt;
&lt;br /&gt;
Reading the configuration file for player models is handled by the &amp;lt;code&amp;gt;CG_ParseCharacterFile()&amp;lt;/code&amp;gt; function in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/cgame/cg_players.c src/gamelogic/gpp/src/cgame/cg_players.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The configuration file may use the following keywords:&lt;br /&gt;
&lt;br /&gt;
''Note: this list is incomplete''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;headoffset &amp;lt;var&amp;gt;x&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;y&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;z&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;sex &amp;lt;var&amp;gt;gender&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sets the gender of the model. Options are &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neuter. Any other character is interpreted as male.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;fixedlegs&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;fixedtorso&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;firstTorsoBoneName&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;footsteps&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;flesh&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;metal&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;splash&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;lastTorsoBoneName&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;torsoControlBoneName&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;neckControlBoneName&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;modelScale&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name        &amp;quot;Basilisk&amp;quot;&lt;br /&gt;
model       level1&lt;br /&gt;
modelScale  1.0&lt;br /&gt;
skin        default&lt;br /&gt;
shadowScale 1.0&lt;br /&gt;
hud         alien_general_hud&lt;br /&gt;
mins        -18 -18 -18&lt;br /&gt;
maxs        18 18 18&lt;br /&gt;
crouchMaxs  18 18 18&lt;br /&gt;
deadMins    -18 -18 -4&lt;br /&gt;
deadMaxs    18 18 4&lt;br /&gt;
zOffset     0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
Weapon configuration files are parsed with &amp;lt;code&amp;gt;CG_ParseWeaponConfig()&amp;lt;/code&amp;gt; function in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/base/src/cgame/cg_weapons.c src/gamelogic/base/src/cgame/cg_weapons.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The configuration file may use the following keywords:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;weaponModel &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;weaponModel3rdPerson &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;idleSound &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;icon &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;crosshair &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;disableIn3rdPerson&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After those keywords, one of the following keywords must be used, followed by an opening curly brace (&amp;lt;code&amp;gt;{&amp;lt;/code&amp;gt;), more commands, and a final closing curly brace (&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;primary&amp;lt;/code&amp;gt; (engine constant: &amp;lt;code&amp;gt;WPM_PRIMARY&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;secondary&amp;lt;/code&amp;gt; (engine constant: &amp;lt;code&amp;gt;WPM_SECONDARY&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;tertiary&amp;lt;/code&amp;gt; (engine constant: &amp;lt;code&amp;gt;WPM_TERTIARY&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
The configuration between the curly braces is handled by &amp;lt;code&amp;gt;CG_ParseWeaponModeSection&amp;lt;/code&amp;gt;, in the same file. It accepts the following keywords:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileModel &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileSprite &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;shader&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt; &amp;amp;mdash; The size of the missile sprite. If this value is negative, it is made zero.&lt;br /&gt;
* &amp;lt;var&amp;gt;shader&amp;lt;/var&amp;gt; &amp;amp;mdash; The shader describing the missile sprite.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileRotates&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileAnimates &amp;lt;var&amp;gt;startFrame&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;numFrames&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;frameRate&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;looping&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileParticleSystem &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileTrailSystem &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;muzzleParticleSystem &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;impactParticleSystem &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;impactMark &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;shader&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;impactSound &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;amp;mdash; The index of the sound file, clamped to the range [0,3]; up to four impact sounds may be defined with this keyword.&lt;br /&gt;
* &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt; &amp;amp;mdash; The file path of the sound file to use.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;impactFleshSound &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;amp;mdash; The index of the sound file, clamped to the range [0,3]; up to four impact sounds may be defined with this keyword.&lt;br /&gt;
* &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt; &amp;amp;mdash; The file path of the sound file to use.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;alwaysImpact&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;flashDLightColor &amp;lt;var&amp;gt;red&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;green&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;blue&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Specifies the color of the muzzle flash &amp;lt;!-- didn't actually double check this --&amp;gt; dynamic lighting.&amp;lt;/p&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;red&amp;lt;/var&amp;gt; &amp;amp;mdash; The red color component as a floating point number in the range [0,1].&lt;br /&gt;
* &amp;lt;var&amp;gt;green&amp;lt;/var&amp;gt; &amp;amp;mdash; The green color component as a floating point number in the range [0,1].&lt;br /&gt;
* &amp;lt;var&amp;gt;blue&amp;lt;/var&amp;gt; &amp;amp;mdash; The blue color component as a floating point number in the range [0,1].&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;continuousFlash&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileDlightColor &amp;lt;var&amp;gt;red&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;green&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;blue&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;red&amp;lt;/var&amp;gt; &amp;amp;mdash; The red color component as a floating point number in the range [0,1].&lt;br /&gt;
* &amp;lt;var&amp;gt;green&amp;lt;/var&amp;gt; &amp;amp;mdash; The green color component as a floating point number in the range [0,1].&lt;br /&gt;
* &amp;lt;var&amp;gt;blue&amp;lt;/var&amp;gt; &amp;amp;mdash; The blue color component as a floating point number in the range [0,1].&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileDlight &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt; &amp;amp;mdash; If this value is negative, it is made zero.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;firingSound &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileSound &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;flashSound &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;amp;mdash; The index of the sound file, clamped to the range [0,3]; up to four impact sounds may be defined with this keyword.&lt;br /&gt;
* &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt; &amp;amp;mdash; The file path of the sound file to use.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As an example, this is the configuration for the chaingun (&amp;lt;code&amp;gt;models/weapons/chaingun/weapon.cfg&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
weaponModel       models/weapons/chaingun/chaingun.md3&lt;br /&gt;
&lt;br /&gt;
icon              icons/iconw_chaingun&lt;br /&gt;
crosshair         48 gfx/2d/crosshair-chaingun_s&lt;br /&gt;
&lt;br /&gt;
primary&lt;br /&gt;
{&lt;br /&gt;
  flashDlightColor      1.0 1.0 0.0&lt;br /&gt;
  flashSound            0 models/weapons/chaingun/flash0.wav&lt;br /&gt;
  flashSound            1 models/weapons/chaingun/flash1.wav&lt;br /&gt;
  flashSound            2 models/weapons/chaingun/flash2.wav&lt;br /&gt;
  flashSound            3 models/weapons/chaingun/flash3.wav&lt;br /&gt;
&lt;br /&gt;
  impactMark            8 gfx/marks/bullet_mrk&lt;br /&gt;
&lt;br /&gt;
  impactSound           0 models/weapons/chaingun/impact0.wav&lt;br /&gt;
&lt;br /&gt;
  impactParticleSystem  models/weapons/rifle/impactPS&lt;br /&gt;
  muzzleParticleSystem  models/weapons/chaingun/muzzlePS&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Buildables===&lt;br /&gt;
&lt;br /&gt;
Reading the configuration file for buildables is handled by the &amp;lt;code&amp;gt;BG_ParseBuildableFile()&amp;lt;/code&amp;gt; function in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/game/bg_misc.c src/gamelogic/gpp/src/game/bg_misc.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The configuration file may use the following keywords:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;model &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; Some models may actually have several different model files (not sure why); this argument specifies which. Clamped to the range [0,3] (which should actually be [0, MAX_BUILDABLE_MODELS]), which means that you may use as many as four models per buildable. This is only used by the machine gun turret, which is composed of different parts.&lt;br /&gt;
* &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt; The file path where the model file is located. Note that for MD5 models, an extension of &amp;lt;code&amp;gt;.md3&amp;lt;/code&amp;gt; is still to be used; it will automatically be changed by the engine.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;modelScale &amp;lt;var&amp;gt;scale&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Scales the model linearly.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;mins &amp;lt;var&amp;gt;minX&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;minY&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;minZ&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The coordinates passed to this and &amp;lt;code&amp;gt;maxs&amp;lt;/code&amp;gt; define the bounding box for the model that is used for collision. The bounding box is always aligned to the global coordinate axes regardless of the orientation of the model, which is something to keep in mind when defining these values. You will likely have to debug these values by enabling drawing the bounding boxes. Load a map in developer mode with &amp;lt;code&amp;gt;\devmap&amp;lt;/code&amp;gt; and set &amp;lt;code&amp;gt;\cg_drawBBOX&amp;lt;/code&amp;gt; to 1. The three arguments combined form the coordinate of one corner of the bounding box, and &amp;lt;code&amp;gt;maxs&amp;lt;/code&amp;gt; the opposite corner.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;maxs &amp;lt;var&amp;gt;minX&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;minY&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;minZ&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Defines the opposite corner of the AABB. (See above.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;zOffset &amp;lt;var&amp;gt;offset&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Sets the vertical offset of the model; in other words, how far off the ground it is.&amp;lt;/p&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;offset&amp;lt;/var&amp;gt; The offset as a floating point (decimal) value.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
model       0 models/buildables/trapper/trapper.md3&lt;br /&gt;
modelScale  0.8&lt;br /&gt;
mins        -15 -15 -15&lt;br /&gt;
maxs        15 15 15&lt;br /&gt;
zOffset     -15&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that at present, you do not have to change the filename extension of the model to match what it actually is; that is, if the model is actually an md5, you may leave the extension as &amp;quot;.md3&amp;quot; and not &amp;quot;.md5mesh&amp;quot; or whatever.&lt;br /&gt;
&lt;br /&gt;
==Directory overview==&lt;br /&gt;
&lt;br /&gt;
This section provides an overview of the subset of the directory structure used by models; directories used for other purposes have been omitted.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;armor/&amp;lt;/code&amp;gt; Location of configurations for the three armor types (i.e., light, helmet, and battlesuit). You should not have to edit these.&lt;br /&gt;
* &amp;lt;code&amp;gt;configs/&amp;lt;/code&amp;gt; Location of configuration files for various models.&lt;br /&gt;
** &amp;lt;code&amp;gt;buildables/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gfx/&amp;lt;/code&amp;gt; Location of various 2d effect textures, such as those used for weapons.&lt;br /&gt;
** ''Subdirectories omitted for brevity''&lt;br /&gt;
* &amp;lt;code&amp;gt;models/&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ammo/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;tesla/&amp;lt;/code&amp;gt; Contains a single image used for the tesla sparks. Not sure why it's located here.&lt;br /&gt;
** &amp;lt;code&amp;gt;buildables/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;acid_tube/&amp;lt;/code&amp;gt; Acid tube&lt;br /&gt;
*** &amp;lt;code&amp;gt;arm/&amp;lt;/code&amp;gt; Armory&lt;br /&gt;
*** &amp;lt;code&amp;gt;barricade/&amp;lt;/code&amp;gt; Barricade&lt;br /&gt;
*** &amp;lt;code&amp;gt;booster/&amp;lt;/code&amp;gt; Booster&lt;br /&gt;
*** &amp;lt;code&amp;gt;dcc/&amp;lt;/code&amp;gt; Defense Computer&lt;br /&gt;
*** &amp;lt;code&amp;gt;eggpod/&amp;lt;/code&amp;gt; Egg&lt;br /&gt;
*** &amp;lt;code&amp;gt;hive/&amp;lt;/code&amp;gt; Hive&lt;br /&gt;
*** &amp;lt;code&amp;gt;hovel/&amp;lt;/code&amp;gt; Hovel&lt;br /&gt;
*** &amp;lt;code&amp;gt;medistat/&amp;lt;/code&amp;gt; Medistation&lt;br /&gt;
*** &amp;lt;code&amp;gt;mgturret/&amp;lt;/code&amp;gt; Machinegun Turret&lt;br /&gt;
*** &amp;lt;code&amp;gt;overmind/&amp;lt;/code&amp;gt; Overmind&lt;br /&gt;
*** &amp;lt;code&amp;gt;reactor/&amp;lt;/code&amp;gt; Reactor&lt;br /&gt;
*** &amp;lt;code&amp;gt;repeater/&amp;lt;/code&amp;gt; Repeater&lt;br /&gt;
*** &amp;lt;code&amp;gt;telenode/&amp;lt;/code&amp;gt; Telenode&lt;br /&gt;
*** &amp;lt;code&amp;gt;tesla/&amp;lt;/code&amp;gt; Tesla generator&lt;br /&gt;
*** &amp;lt;code&amp;gt;trapper/&amp;lt;/code&amp;gt; Trapper&lt;br /&gt;
** &amp;lt;code&amp;gt;players/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;builder/&amp;lt;/code&amp;gt; Human builder model.&lt;br /&gt;
*** &amp;lt;code&amp;gt;human_base/&amp;lt;/code&amp;gt; Unarmored human model. Also includes the jetpack and battery pack.&lt;br /&gt;
*** &amp;lt;code&amp;gt;human_bsuit/&amp;lt;/code&amp;gt; Battlesuit model.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level0/&amp;lt;/code&amp;gt; Dretch.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level1/&amp;lt;/code&amp;gt; Basilisk and advanced basilisk. (The advanced basilisk uses the same model as the regular dragoon, but a different texture.)&lt;br /&gt;
*** &amp;lt;code&amp;gt;level2/&amp;lt;/code&amp;gt; Marauder and advanced marauder. (Same as basilisk with regard to advanced model.)&lt;br /&gt;
*** &amp;lt;code&amp;gt;level3/&amp;lt;/code&amp;gt; Dragoon and advanced dragoon. (Same as basilisk with regard to advanced model.)&lt;br /&gt;
*** &amp;lt;code&amp;gt;level4/&amp;lt;/code&amp;gt; Tyrant.&lt;br /&gt;
** &amp;lt;code&amp;gt;weapons/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;abuild/&amp;lt;/code&amp;gt; As there is no weapon model for the granger, the only thing in this directory is a config to hide the (nonexistant) weapon model in third person (a hack, I guess).&lt;br /&gt;
*** &amp;lt;code&amp;gt;abuildupg/&amp;lt;/code&amp;gt; Advanced granger weapon. Same as above, except the config file specifies sounds for the attack sounds (which are also located in this directory).&lt;br /&gt;
*** &amp;lt;code&amp;gt;ackit/&amp;lt;/code&amp;gt; Advanced construction kit.&lt;br /&gt;
*** &amp;lt;code&amp;gt;blaster/&amp;lt;/code&amp;gt; Blaster.&lt;br /&gt;
*** &amp;lt;code&amp;gt;chaingun/&amp;lt;/code&amp;gt; Chaingun.&lt;br /&gt;
*** &amp;lt;code&amp;gt;ckit/&amp;lt;/code&amp;gt; Construction kit.&lt;br /&gt;
*** &amp;lt;code&amp;gt;flamer/&amp;lt;/code&amp;gt; Flamethrower.&lt;br /&gt;
*** &amp;lt;code&amp;gt;grenade/&amp;lt;/code&amp;gt; Grenade.&lt;br /&gt;
*** &amp;lt;code&amp;gt;hive/&amp;lt;/code&amp;gt; Sprites, configuration file, and sound file for the hive.&lt;br /&gt;
*** &amp;lt;code&amp;gt;lcannon/&amp;lt;/code&amp;gt; Lucifer cannon.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level0/&amp;lt;/code&amp;gt; Dretch configuration and attack sound file.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level1/&amp;lt;/code&amp;gt; Basilisk configuration and attack sound files (hit and miss).&lt;br /&gt;
*** &amp;lt;code&amp;gt;level1upg/&amp;lt;/code&amp;gt; Advanced Basilisk configuration and added gas attack sound file.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level2/&amp;lt;/code&amp;gt; Marauder configuration and attack sound files (hit and miss).&lt;br /&gt;
*** &amp;lt;code&amp;gt;level2upg/&amp;lt;/code&amp;gt; Advanced Marauder configuration and added electric attack sound file.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level3/&amp;lt;/code&amp;gt; Dragoon configuration and attack sound files (hit, miss, and pounce).&lt;br /&gt;
*** &amp;lt;code&amp;gt;level3upg/&amp;lt;/code&amp;gt; Advanced Dragoon configuration and added barb sound files and model.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level4/&amp;lt;/code&amp;gt; Tyrant configuration and attack sound files (hit and miss).&lt;br /&gt;
*** &amp;lt;code&amp;gt;lgun/&amp;lt;/code&amp;gt; Lasgun&lt;br /&gt;
*** &amp;lt;code&amp;gt;lockblob/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;mdriver/&amp;lt;/code&amp;gt; Mass Driver&lt;br /&gt;
*** &amp;lt;code&amp;gt;mgturret/&amp;lt;/code&amp;gt; Machinegun turret '''''FIXME: why does this show up twice?'''''&lt;br /&gt;
*** &amp;lt;code&amp;gt;prifle/&amp;lt;/code&amp;gt; Plasma rifle&lt;br /&gt;
*** &amp;lt;code&amp;gt;psaw/&amp;lt;/code&amp;gt; Painsaw&lt;br /&gt;
*** &amp;lt;code&amp;gt;rifle/&amp;lt;/code&amp;gt; Rifle&lt;br /&gt;
*** &amp;lt;code&amp;gt;shells/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;shotgun/&amp;lt;/code&amp;gt; Shotgun&lt;br /&gt;
*** &amp;lt;code&amp;gt;teslagen/&amp;lt;/code&amp;gt; Tesla generator '''''FIXME: why does this show up twice?'''''&lt;br /&gt;
* &amp;lt;code&amp;gt;overrides/&amp;lt;/code&amp;gt; Depreciated directory for model configuration files. Use &amp;lt;code&amp;gt;configs/&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
** &amp;lt;code&amp;gt;buildables/&amp;lt;/code&amp;gt; Depreceated location for buildable model configs.&lt;br /&gt;
** &amp;lt;code&amp;gt;classes/&amp;lt;/code&amp;gt; Depreceated location for character model configs.&lt;br /&gt;
* &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt; Location for shaders.&lt;br /&gt;
&lt;br /&gt;
==Getting the model in game==&lt;br /&gt;
&lt;br /&gt;
There are two approaches to test your model in-game. The model and related files may be in actual folders, or the engine can load them from a &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; file, which is really just a zip-compressed archive with the extension changed.&lt;br /&gt;
&lt;br /&gt;
The engine always prioritizes files in &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; archives over files and folders at the same priority. The priority from highest to lowest is as follows:&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_homepath/fs_game&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_basepath/fs_game&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;$PWD/fs_game&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_homepath/fs_basegame&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_basepath/fs_basegame&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;$PWD/fs_basegame&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_homepath/BASEGAME&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_basepath/BASEGAME&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;$PWD/BASEGAME&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;BASEGAME&amp;lt;/code&amp;gt; is a preprocessor macro (for non-programmers, a constant; i.e., this cannot be changed at runtime) set to &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; in Unvanquished. &amp;lt;code&amp;gt;$PWD&amp;lt;/code&amp;gt; is the directory that Unvanquished was started from.&lt;br /&gt;
&lt;br /&gt;
Programmers may be interested in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/engine/qcommon/files.c src/engine/qcommon/files.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The default locations for &amp;lt;code&amp;gt;fs_basepath&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;fs_homepath&amp;lt;/code&amp;gt; are as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;fs_basepath&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;fs_homepath&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows&lt;br /&gt;
| TODO&lt;br /&gt;
| TODO&lt;br /&gt;
|-&lt;br /&gt;
| Linux&lt;br /&gt;
| $HOME/.Unvanquished&lt;br /&gt;
| The directory in which Unvanquished is installed.&lt;br /&gt;
|-&lt;br /&gt;
| Mac OS X&lt;br /&gt;
| TODO&lt;br /&gt;
| TODO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Basically, the process to get data in-game is to create a temporary directory somewhere and copy the model, shader(s) and configuration file to that directory (creating sub-directories as necessary), then compress the temporary directory as a &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt; archive. Change the extension of the &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt; archive to &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; and move it into whichever directory you please, knowing that higher priority files will be used over lesser priority files. An example directory structure might look like this:&lt;br /&gt;
&lt;br /&gt;
* tmp&lt;br /&gt;
** configs&lt;br /&gt;
*** buildables&lt;br /&gt;
**** acid_tube.cfg&lt;br /&gt;
** models&lt;br /&gt;
*** buildables&lt;br /&gt;
**** acid_tube&lt;br /&gt;
***** acid_tube.md5mesh&lt;br /&gt;
***** acid_tube.tga&lt;br /&gt;
***** acid_tube_g.tga&lt;br /&gt;
***** acid_tube_n.tga&lt;br /&gt;
***** acid_tube_s.tga&lt;br /&gt;
***** idle.md5anim&lt;br /&gt;
***** ''other animations omitted for brevity''&lt;br /&gt;
** scripts&lt;br /&gt;
*** acid_tube.shader&lt;br /&gt;
&lt;br /&gt;
Please note that the exact name of the textures used is not strictly defined; these may be whatever you please and are specified by the shader file. See [[Exporting_Models#Writing_shaders|Writing shaders]] for more information.&lt;br /&gt;
&lt;br /&gt;
==Testing the model==&lt;br /&gt;
&lt;br /&gt;
Once you have the model exported, the shader and configuration written, and everything packaged into a .pk3 file and in place, you are ready to test.&lt;br /&gt;
&lt;br /&gt;
===Testing externally===&lt;br /&gt;
&lt;br /&gt;
Rather than testing the exported model in-game, you may also test the model with a stand-alone MD5 viewer. At present, there is a viewer for Windows available [http://www.katsbits.com/files/md5/modelviewer_0.93a.zip here].&lt;br /&gt;
&lt;br /&gt;
===Testing in game===&lt;br /&gt;
&lt;br /&gt;
Start the game, and enter the following commands:&lt;br /&gt;
&lt;br /&gt;
 \sv_pure 0&lt;br /&gt;
 \devmap atcshd&lt;br /&gt;
&lt;br /&gt;
You may also load a map with the regular &amp;lt;code&amp;gt;\map&amp;lt;/code&amp;gt; command. Be aware, however, that &amp;lt;code&amp;gt;devmap&amp;lt;/code&amp;gt; enables cheats which can make it easier to test (such as being able to jump directly to stage 2 or 3 if required). Also note that with &amp;lt;code&amp;gt;devmap&amp;lt;/code&amp;gt;, the build time for buildables is zero, so the building animation(s) will not play.&lt;br /&gt;
&lt;br /&gt;
====Tips====&lt;br /&gt;
&lt;br /&gt;
* If the model is a buildable, weapon, or player model that is not immediately available (i.e., not available until a later stage), you can change the stage with &amp;lt;code&amp;gt;g_alienStage&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;g_humanStage&amp;lt;/code&amp;gt;. Both of these cvars accept a single parameter, which is the zero-based index of the stage; to skip to stage 2, use 1 as a parameter, and to skip to stage 2, use 2 as a parameter (stage 1 is 0).&lt;br /&gt;
* If you do not have sufficient credits to purchase an item model you wish to test, or evos to evolve to the desired class, you may give yourself the maximum amount that you can carry with &amp;lt;code&amp;gt;\give all&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To make yourself invincible, use the &amp;lt;code&amp;gt;\god&amp;lt;/code&amp;gt; command.&lt;br /&gt;
* To stop buildables from attacking, use the &amp;lt;code&amp;gt;\notarget&amp;lt;/code&amp;gt; command.&lt;br /&gt;
* To stress test the engine's ability to display a large number of buildables, set &amp;lt;code&amp;gt;g_humanBuildPoints&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;g_alienBuildPoints&amp;lt;/code&amp;gt;  to as high as you wish; this will allow you to build as much as you please.&lt;br /&gt;
&lt;br /&gt;
====Debugging the model====&lt;br /&gt;
&lt;br /&gt;
* To determine what file was loaded for a particular asset (e.g., to determine if files are being read from a particular &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; archive), use the &amp;lt;code&amp;gt;\which&amp;lt;/code&amp;gt; command with the relative path to the asset as an argument, such as &amp;lt;code&amp;gt;\which&amp;amp;nbsp;models/buildables/acid_tube/acid_tube.md5mesh&amp;lt;/code&amp;gt;. Note that &amp;lt;code&amp;gt;which&amp;lt;/code&amp;gt; accepts both forward- and backslashes regardless of platform.&lt;br /&gt;
* To visually inpsect a model's bounding box, which is set by its configuration file, set &amp;lt;code&amp;gt;\cg_drawBBOX&amp;lt;/code&amp;gt; to 1.&lt;br /&gt;
* To visually inspect the bone structure of a MD5 model, set &amp;lt;code&amp;gt;r_showSkeleton&amp;lt;/code&amp;gt; to 1. ''Note: at present there is a bug that causes bones to be displayed incorrectly. See [https://github.com/Unvanquished/Unvanquished/issues/2 Issue #2] on GitHub for more information.''&lt;br /&gt;
* To hide map geometry, set &amp;lt;code&amp;gt;r_drawworld&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Note that with this set to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, PVS will still be in effect, so it might still be difficult to view your model.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Error while exporting from Blender with the MD5 exporter===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Md5_export_error_no_armature.png]]&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | This error displays when the selected object does not have an armature modifier. Any object exported as an md5 needs bones, even if it is static. If you are unsure of how to create a static object with md5, just add an armature, set the playback start and end frame to 1, and add a location or rotation keyframe at frame 1.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Md5_export_error_no_animation.png]]&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | This error displays when there are no keyframes. Follow the abov instructions for exporting a static object with md5.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Md5_export_error_no_material.png]]&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | This error displays when the object does not have a material applied to it. This is required by the script, even though it really does not affect the exported result.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Appearance problems in-game===&lt;br /&gt;
&lt;br /&gt;
====All or part of the mesh appears to be sucked to the center====&lt;br /&gt;
&lt;br /&gt;
''Please note that as of 2012-02-27, the MD5 exporter does not work properly in several more recent versions of Blender. Use Blender 2.59 until this is fixed. See [http://www.katsbits.com/smforum/index.php?topic=167.msg2135#msg2135 the MD5 exporter thread] for more information.''&lt;br /&gt;
&lt;br /&gt;
This can happen for a number of reasons:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There are vertices without weights.&lt;br /&gt;
&amp;lt;p&amp;gt;''Solution'': apply weights to vertices that do not have them. If those verts are not to be animated, weight them to a bone that does not move.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You are using Blender 2.61 and you have bones that have animated positions.&lt;br /&gt;
&amp;lt;p&amp;gt;''Solution'': Use an earlier version of blender until this is fixed in the exporter.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You are using Blender 2.62 and you have bones that are not located at the origin and do not have a parent or have animated positions.&lt;br /&gt;
&amp;lt;p&amp;gt;''Solution'': Again, use an earlier version of blender until this is fixed in the exporter.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;R_LoadMD5: vertex %i requires more than %i weights on surface (%i) in model '%s'&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
This error is displayed in the console in game when a vertex belongs to too many groups.&lt;br /&gt;
&lt;br /&gt;
You can use this script to check your model for this before exporting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Copyright 2012 Nicholas De Cicco. &amp;lt;velociostrich@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
# you may not use this file except in compliance with the License.&lt;br /&gt;
# You may obtain a copy of the License at&lt;br /&gt;
#&lt;br /&gt;
#	http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
#&lt;br /&gt;
# Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
# distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
# See the License for the specific language governing permissions and&lt;br /&gt;
# limitations under the License.&lt;br /&gt;
&lt;br /&gt;
import bpy, math&lt;br /&gt;
from bpy.props import *&lt;br /&gt;
&lt;br /&gt;
MAX_GROUPS_PER_VERT = 4&lt;br /&gt;
&lt;br /&gt;
# Switch to object mode for vertex selection to work&lt;br /&gt;
bpy.ops.object.mode_set(mode='OBJECT')&lt;br /&gt;
&lt;br /&gt;
for obj in bpy.context.selected_objects:&lt;br /&gt;
	# Check to see that the object is a mesh.&lt;br /&gt;
	if obj.type != 'MESH':&lt;br /&gt;
		continue&lt;br /&gt;
&lt;br /&gt;
	# Select verts that belong to too many groups&lt;br /&gt;
	for vertex in obj.data.vertices:&lt;br /&gt;
		if len(vertex.groups) &amp;gt; MAX_GROUPS_PER_VERT:&lt;br /&gt;
			vertex.select = True&lt;br /&gt;
		else:&lt;br /&gt;
			vertex.select = False&lt;br /&gt;
&lt;br /&gt;
# Switch back to edit mode so the user can see any selected verts&lt;br /&gt;
bpy.ops.object.mode_set(mode='EDIT')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Using the Script====&lt;br /&gt;
&lt;br /&gt;
# Select the mesh (or meshes) that you would like to check.&lt;br /&gt;
# Create a new text editor window and text data block.&lt;br /&gt;
# Copy and paste the script into the text editor.&lt;br /&gt;
# Hit &amp;quot;Run Script&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once the script has ran, the 3d view will switch to edit mode and any offending vertices will be selected. A handy tip: clicking an individual vertex will reveal which groups it is a member of in the properties shelf.&lt;br /&gt;
&lt;br /&gt;
[[Image:Properties_shelf_vertex_groups.png|frame|center|The vertex group section of the properties shelf]]&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
* [http://www.modwiki.net/wiki/MD5_%28file_format%29 MD5 file format documentation]&lt;br /&gt;
* [http://www.katsbits.com/tools/# Tools for MD5 and other file formats]&lt;br /&gt;
* [http://download.blender.org/release/ Older versions of Blender]&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=659</id>
		<title>Getting the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=659"/>
		<updated>2012-08-26T01:25:29Z</updated>

		<summary type="html">&lt;p&gt;Devhc: use general computer driving terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Unvanquished/Unvanquished Unvanquished source code] is hosted on GitHub. You can either download a snapshot of the source code in [https://github.com/Unvanquished/Unvanquished/zipball/master ZIP archive form], or you can use Git to clone the repository.&lt;br /&gt;
&lt;br /&gt;
==Installing Git==&lt;br /&gt;
&lt;br /&gt;
If you already have Git installed, you can skip this step.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
Windows users can acquire Git from the [http://code.google.com/p/msysgit/ MSysGit project]. If you would prefer a graphical front-end, there is [http://code.google.com/p/tortoisegit/ TortoiseGit], but MSysGit must be installed regardless.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
Apple has included Git with Xcode since version 4. You may download [https://developer.apple.com/xcode/ Xcode] from  Apple's developer website. Please note that while XCode 4 was available for a very brief time for 32-bit and Snow Leopard users for a small price ($5 from the Mac App Store), this is no longer the case; it is now free, but available only to 64-bit Lion users. Snow Leopard (10.6) users and prior may now only use XCode 3, which does not include Git. If you are one of these users, you may [http://git-scm.com/download/mac acquire a copy of Git] from its site. A [http://git-scm.com/download/gui/mac selection of GUIs for Git] is also available.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
====Debian &amp;amp; Ubuntu====&lt;br /&gt;
&lt;br /&gt;
Install Git using the package manager:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install git&lt;br /&gt;
&lt;br /&gt;
====Gentoo====&lt;br /&gt;
&lt;br /&gt;
The ebuilds for Unvanquished (games-fps/unvanquished) and the assets (games-fps/unvanquished-data) are available from the [https://github.com/hasufell/hasufell-overlay ''hasufell''] overlay.&lt;br /&gt;
If you don't have layman installed, you can install it with&lt;br /&gt;
&lt;br /&gt;
 $ emerge layman&lt;br /&gt;
&lt;br /&gt;
Then, adding the overlay and installing should be trivial.&lt;br /&gt;
&lt;br /&gt;
 $ layman -a hasufell&lt;br /&gt;
 $ emerge unvanquished&lt;br /&gt;
&lt;br /&gt;
See [https://bugs.gentoo.org/show_bug.cgi?id=419421 the entry on bugs.gentoo.org] for additional comments about the ebuilds.&lt;br /&gt;
&lt;br /&gt;
==Downloading the source==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
Use the following command line:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
This will create a directory called ''Unvanquished''.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
&lt;br /&gt;
Acquiring the source code using the command line is the same as on Linux. Open a Terminal (/Applications/Utilities/Terminal) window and clone the source code like so:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
====Xcode 4====&lt;br /&gt;
&lt;br /&gt;
# Start Xcode.&lt;br /&gt;
# Open the Organizer window (Window &amp;amp;rarr; Organizer or &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Shift&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Command&amp;amp;nbsp;&amp;amp;#x2318;&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;)&lt;br /&gt;
# Hit the &amp;quot;Repositories&amp;quot; button on the top bar.&lt;br /&gt;
# Hit the &amp;quot;+&amp;quot; button in the lower-left corner, and choose &amp;quot;Checkout or Clone Repository&amp;amp;hellip;&amp;quot;.&lt;br /&gt;
# In the rollout sheet that appears, enter &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt; into the &amp;quot;Location&amp;quot; field, and hit &amp;quot;Next&amp;quot;.&lt;br /&gt;
# Enter &amp;quot;Unvanquished&amp;quot; into the &amp;quot;Name&amp;quot; field, ensure that the &amp;quot;Type&amp;quot; combo box is set to &amp;quot;Git&amp;quot;, and hit &amp;quot;Clone&amp;quot;.&lt;br /&gt;
# You will be prompted where to save the repository. Choose a location and hit &amp;quot;Clone&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====TortoiseGIT====&lt;br /&gt;
&lt;br /&gt;
# Make and enter a new folder to store the source code in&lt;br /&gt;
# Right click the inside of the folder &amp;amp;rarr; Git Clone...&lt;br /&gt;
# In the Url textbox enter: &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt;&lt;br /&gt;
# Hit OK.&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
Open the MsysGit terminal and input:&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
==Compiling==&lt;br /&gt;
&lt;br /&gt;
After getting the source code, you can [[Compiling the source|compile]] it.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=658</id>
		<title>Compiling the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=658"/>
		<updated>2012-08-26T01:24:03Z</updated>

		<summary type="html">&lt;p&gt;Devhc: use general computer driving terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mac OS X==&lt;br /&gt;
&lt;br /&gt;
The preferred way of building Unvanquished on Mac OS X is to use Apple's [https://developer.apple.com/xcode/ XCode] along with [http://www.cmake.org/cmake/resources/software.html CMake]; CMake is used to generate an XCode project file that is then used to compile the code. Note: Xcode currently does not build QVMs due to [https://github.com/Unvanquished/Unvanquished/issues/101 issue 101].&lt;br /&gt;
&lt;br /&gt;
First, you need to [[Getting_the_source|acquire the source code]].&lt;br /&gt;
&lt;br /&gt;
You will also need to build the libraries from source.&lt;br /&gt;
&lt;br /&gt;
Unvanquished requires the following libraries:&lt;br /&gt;
* The jpeg library, version 8 or higher. (Version 6 was known to have problems)&lt;br /&gt;
* Simple DirectMedia Layer (The binary provided by libsdl.org causes graphical corruptions. Compile from source or use homebrew/macports)&lt;br /&gt;
* OpenGL Extension Wrangler Library&lt;br /&gt;
* CuRL&lt;br /&gt;
* GMP&lt;br /&gt;
&lt;br /&gt;
Optional libraries:&lt;br /&gt;
* WebP&lt;br /&gt;
* Theora&lt;br /&gt;
* Speex&lt;br /&gt;
* XVid&lt;br /&gt;
* Vorbis&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
You only need to use one of the following methods (HomeBrew or compiling by hand). Please try and avoid mixing methods as this may produce unexpected results.&lt;br /&gt;
&lt;br /&gt;
====HomeBrew====&lt;br /&gt;
Install [http://mxcl.github.com/homebrew/ HomeBrew] and then run the following command&lt;br /&gt;
&lt;br /&gt;
 $ brew install nettle libjpeg curl sdl webp xvid gmp glew speex libvorbis theora&lt;br /&gt;
&lt;br /&gt;
All the necessary libraries should now have been installed.&lt;br /&gt;
&lt;br /&gt;
====Compiling by hand====&lt;br /&gt;
The following are shell scripts that download, compile, and install various libraries. This is more time consuming then other methods but might be useful if you need more control over your libraries&lt;br /&gt;
&lt;br /&gt;
=====JPEG=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.ijg.org/files/jpegsrc.v8d.tar.gz &amp;gt; jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ tar xvzf jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ cd jpeg-8d&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====The OpenGL Extension Wrangler Library (GLEW)=====&lt;br /&gt;
&lt;br /&gt;
 $ curl -L https://sourceforge.net/projects/glew/files/glew/1.7.0/glew-1.7.0.tgz/download &amp;gt; glew-1.7.0.tgz&lt;br /&gt;
 $ tar xvzf glew-1.7.0.tgz&lt;br /&gt;
 $ cd glew-1.7.0&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Simple DirectMedia Layer (SDL)=====&lt;br /&gt;
&lt;br /&gt;
Do not use the binaries provided by libsdl.org, as these are known to cause issues with gamma and color display. Instead, compile your own:&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15.tar.gz &amp;gt; SDL-1.2.15.tar.gz&lt;br /&gt;
 $ tar xvzf SDL-1.2.15.tar.gz&lt;br /&gt;
 $ cd SDL-1.2.15&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====The GNU MP Bignum Library (libgmp)=====&lt;br /&gt;
&lt;br /&gt;
 $ curl ftp://ftp.gmplib.org/pub/gmp-5.0.5/gmp-5.0.5.tar.bz2 &amp;gt; gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ tar xvjf gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ cd gmp-5.0.5&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Ogg=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz &amp;gt; libogg-1.3.0.tar.gz&lt;br /&gt;
 $ tar xvzf libogg-1.3.0.tar.gz&lt;br /&gt;
 $ cd libogg-1.3.0&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Vorbis=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz &amp;gt; libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ tar xvzf libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ cd libvorbis-1.3.3&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
===Configuring with CMake===&lt;br /&gt;
&lt;br /&gt;
# Run CMake.&lt;br /&gt;
# Enter the location of the source code.&lt;br /&gt;
# Enter the location in which you would like to build the source code. This should be a different directory.&lt;br /&gt;
# Hit &amp;quot;Configure&amp;quot;. You will be prompted as to which generator you would like to use. If you have Xcode installed, choose that. Wait while the configuration process runs. You may have to set the following:&lt;br /&gt;
## If CMake did not find your jpeg headers for some reason, set &amp;lt;code&amp;gt;JPEG_INCLUDE_DIR&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/path/to/Unvanquished/src/libs/jpeg&amp;lt;/code&amp;gt;.&lt;br /&gt;
## You may safely disable &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; to avoid having to compile the library. (At present, the format is not used by any game assets.)&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; to avoid having to compile nettle and hogweed.&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; to avoid having to compile Speex.&lt;br /&gt;
## Uncheck &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; to avoid having to compile Theora or Xvid. (At present, there are not cutscenes or any such that require it.)&lt;br /&gt;
## '''You will probably not be able to compile with the GLSL optimizer enabled; uncheck &amp;lt;code&amp;gt;USE_GLSL_OPTIMIZER&amp;lt;/code&amp;gt;'''&lt;br /&gt;
## If you have selected to generate XCode project files, make the &amp;lt;code&amp;gt;SDLMAIN_LIBRARY&amp;lt;/code&amp;gt; field blank. This option is not available if you have the generator set to Unix makefiles.&lt;br /&gt;
# Hit &amp;quot;Generate&amp;quot;.&lt;br /&gt;
# You may now close XCode.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
====With XCode====&lt;br /&gt;
# Either start XCode and open the project file (in the build directory you specified) or double-click the project file in Finder.&lt;br /&gt;
# Open the project file created by CMake, which should be in the build directory you specified.&lt;br /&gt;
# Change the active target to &amp;quot;ALL_BUILD&amp;quot; and click Product&amp;amp;rarr;Build.&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Terminal (Applications &amp;amp;rarr; Utilities &amp;amp;rarr; Terminal).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Input the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are on a multi-core or multi-processor machine, you may speed up the process by passing the &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; argument followed by the number of available cores to &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;; e.g., &amp;lt;code&amp;gt;make -j4&amp;lt;/code&amp;gt;. Note that doing so makes reading error messages more difficult, as multiple instances of the compiler will print to the screen at once, causing information to appear out of order.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing the build===&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
After compiling, you'll have to place the data files in the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; directory in your build directory. [[#Acquiring the Game Files|For download instructions, see below.]]&lt;br /&gt;
&lt;br /&gt;
Your file structure should look as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:Build_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
You may now start the application as such:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386&lt;br /&gt;
&lt;br /&gt;
Note that older machines will not support the new OpenGL 3 renderer, and must be started specifying the &amp;quot;vanilla&amp;quot; (aka &amp;quot;GL&amp;quot;) renderer:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386 +set cl_renderer GL&lt;br /&gt;
&lt;br /&gt;
===Bundling the Application===&lt;br /&gt;
&lt;br /&gt;
====With CPack====&lt;br /&gt;
&lt;br /&gt;
CPack is able to create standalone bundles (as well as many other types of installers). However you must generate the files using Unix Makefiles instead of XCode.&lt;br /&gt;
&lt;br /&gt;
 $ cd /path/to/Unvanquished-build&lt;br /&gt;
 $ cpack -G Bundle&lt;br /&gt;
&lt;br /&gt;
Some warnings will be printed however these can be safely ignored. There should be a file called Unvanquished.dmg in the Unvanquished-build folder.&lt;br /&gt;
&lt;br /&gt;
====Manually====&lt;br /&gt;
&lt;br /&gt;
You'll find the Mac [http://macdylibbundler.sourceforge.net/ dynamic library bundler] to be quite useful (you must generate the files using Unix Makefiles instead of XCode):&lt;br /&gt;
&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/macdylibbundler/files/macdylibbundler/0.4.1/dylibbundler0.4.1.zip/download &amp;gt; dylibbundler0.4.1.zip&lt;br /&gt;
 $ unzip dylibbundler0.4.1.zip&lt;br /&gt;
 $ cd dylibbundler&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
Once you've done that, you can proceed to create the application bundle. Note that these steps assume that you have downloaded the data files to &amp;lt;code&amp;gt;main/&amp;lt;/code&amp;gt; as shown above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git=/path/to/Unvanquished-git-repo&lt;br /&gt;
$ build=/path/to/Unvanquished-build-dir&lt;br /&gt;
$ mkdir -pv Unvanquished.app/Contents/{libs,MacOS,Resources,Frameworks}&lt;br /&gt;
$ cp -r $build/main Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ sips -s format tiff $git/debian/unvanquished.png --out temp.tiff&lt;br /&gt;
$ tiff2icns temp.tiff Unvanquished.app/Contents/Resources/Unvanquished.icns&lt;br /&gt;
$ rm temp.tiff&lt;br /&gt;
$ cp $build/daemon{,ded}.i386 $build/*.dylib Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ cp -r /Library/Frameworks/SDL.framework Unvanquished.app/Contents/Frameworks&lt;br /&gt;
$ install_name_tool -id @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/Frameworks/SDL.framework/Versions/A/SDL&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGLi386.dylib&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGL3i386.dylib&lt;br /&gt;
$ for binary in Unvanquished.app/Contents/MacOS/*.{i386,dylib}; do dylibbundler -b -x $binary -d $dest/Unvanquished.app/Contents/libs/; done&lt;br /&gt;
$ cp /usr/lib/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ chmod +w ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -id @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -change /usr/lib/libGLEW.1.7.0.dylib @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ cat &amp;gt; Unvanquished.app/Contents/Info.plist&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dict&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleDisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleExecutable&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;daemon.i386&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIconFile&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished.icns&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;net.Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleInfoDictionaryVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;6.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundlePackageType&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;APPL&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleShortVersionString&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt;&lt;br /&gt;
^d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;code&amp;gt;^d&amp;lt;/code&amp;gt; indicates pressing &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Ctrl&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;D&amp;lt;/span&amp;gt; on the keyboard.&lt;br /&gt;
&lt;br /&gt;
The contents of the completed application bundle should look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Bundle_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
'''Note''': If you compiled SDL from source, you will not see a directory titled &amp;lt;code&amp;gt;SDL.framework&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&lt;br /&gt;
===Visual Studio===&lt;br /&gt;
&lt;br /&gt;
CMake can generate Visual Studio projects for unvanquished however this feature is relatively new and may have some bugs.&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
# Double click on Visual_Studio32.bat&lt;br /&gt;
# Open build-32/Daemon.sln in Visual Studio 2010.&lt;br /&gt;
# In the two text boxes in the toolbar, select &amp;quot;Release&amp;quot; or &amp;quot;Debug&amp;quot; in the first one and Win32 in the second one&lt;br /&gt;
# Press F5 to build solution and run application, or just use Build &amp;amp;rarr; Build Solution to compile the code.&lt;br /&gt;
&lt;br /&gt;
====Important Notes====&lt;br /&gt;
&lt;br /&gt;
* LLVM is disabled and does not work correctly with CMake generated Visual Studio projects.&lt;br /&gt;
* ncurses is not supported under Visual Studio.&lt;br /&gt;
* The path to the build folder must not have any spaces otherwise generation of QVMs will fail. See [https://github.com/Unvanquished/Unvanquished/issues/102 issue 102]&lt;br /&gt;
* Due to limitations with cmake neither the startup project nor the working directory can be specified. These must be manually set to the following values for debugging the client under Visual Studio&lt;br /&gt;
** Right click on client and select &amp;quot;Set as StartUp project&amp;quot;.&lt;br /&gt;
** Right click on client, select properties, select Debugging and set &amp;quot;Working Directory&amp;quot; to $(TargetPath)\..&lt;br /&gt;
&lt;br /&gt;
===MinGW===&lt;br /&gt;
Unvanquished is supported under MinGW. The build process should be fairly similar to the Linux instructions.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: this may be incomplete --&amp;gt;&lt;br /&gt;
====Debian/Ubuntu====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libcurl4-gnutls-dev libfreetype6-dev libglew1.5-dev \&lt;br /&gt;
   libgmp3-dev libjpeg8-dev libncurses5-dev libogg-dev libopenal-dev \&lt;br /&gt;
   libpng12-dev libsdl1.2-dev libvorbis-dev zlib1g-dev nettle-dev \&lt;br /&gt;
   libwebp-dev libspeexdsp-dev libtheora-dev&lt;br /&gt;
&lt;br /&gt;
Actual dev package names may vary, e.g. libgmp-dev instead of libgmp3-dev and libglew-dev or libglew1.7-dev instead of libglew1.5-dev.&lt;br /&gt;
&lt;br /&gt;
Since we have a debian directory in the source, you can also to check what's needed then install the listed packages (choosing from alternatives as needed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ dpkg-checkbuilddeps&lt;br /&gt;
 …&lt;br /&gt;
 $ sudo apt-get install &amp;lt;var&amp;gt;package(s)&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If dpkg-checkbuilddeps produces no output, you have all necessary build dependencies. Also, debhelper's only needed if you're building .debs.&lt;br /&gt;
&lt;br /&gt;
====Gentoo====&lt;br /&gt;
&lt;br /&gt;
 $ emerge curl freetype glew gmp jpeg ncurses libogg openal libpng libsdl libvorbis zlib&lt;br /&gt;
&lt;br /&gt;
===Configuring the code with CMake===&lt;br /&gt;
&lt;br /&gt;
After you have [[Getting the source|acquired the source code]], you can proceed to compile. Unvanquished uses CMake, so you must have that installed. &lt;br /&gt;
&lt;br /&gt;
====Using ccmake (curses-based front-end)====&lt;br /&gt;
&lt;br /&gt;
On Debian or Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-curses-gui&lt;br /&gt;
&lt;br /&gt;
On Gentoo you should set the '''ncurses''' USE flag either globally or individually, just for cmake.&lt;br /&gt;
To add the USE flag globally, edit the USE array in /etc/make.conf for it to include '''ncurses'''.&lt;br /&gt;
To only install cmake with ncurses functionality, you could do the following:&lt;br /&gt;
&lt;br /&gt;
 $ echo 'dev-util/cmake ncurses' &amp;gt;&amp;gt; /etc/portage/package.use &amp;amp;&amp;amp; emerge cmake&lt;br /&gt;
&lt;br /&gt;
Note that in Ubuntu, &amp;lt;code&amp;gt;cmake-curses-gui&amp;lt;/code&amp;gt; is in Universe, which you may have to enable with &amp;lt;code&amp;gt;software-properties-gtk&amp;lt;/code&amp;gt;. Make sure to reload the software sources with &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt; afterwards.&lt;br /&gt;
&lt;br /&gt;
Next, configure the codebase.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir build&lt;br /&gt;
 $ cd build&lt;br /&gt;
 $ ccmake ..&lt;br /&gt;
&lt;br /&gt;
Or, in Debian or Ubuntu, you can build a package (but you'll need to have devscripts and fakeroot installed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ fakeroot dpkg-buildpackage -b -uc&lt;br /&gt;
 $ sudo dpkg -i &amp;lt;var&amp;gt;../unvanquished_*.deb&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once in &amp;lt;code&amp;gt;ccmake&amp;lt;/code&amp;gt;, use the following keys:&lt;br /&gt;
&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt; to configure. If an error occurs during this phase, make note of it and press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;e&amp;lt;/span&amp;gt; to dismiss it.&lt;br /&gt;
* Use the up and down arrow keys to navigate the compilation options.&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to enable or disable boolean options (i.e., on/off) or to edit textual options.&lt;br /&gt;
** Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Esc&amp;lt;/span&amp;gt; when editing a textual option to cancel the change.&lt;br /&gt;
&lt;br /&gt;
Once you have finished the configuration process, press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; again, then &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the makefile.&lt;br /&gt;
&lt;br /&gt;
====Using cmake-qt-gui (graphical front-end)====&lt;br /&gt;
&lt;br /&gt;
This graphical front end for cmake has its own package you must install:&lt;br /&gt;
&lt;br /&gt;
=====Debian/Ubuntu=====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-qt-gui&lt;br /&gt;
&lt;br /&gt;
=====Gentoo=====&lt;br /&gt;
&lt;br /&gt;
With the '''qt4''' USE flag enabled:&lt;br /&gt;
&lt;br /&gt;
 $ emerge cmake&lt;br /&gt;
&lt;br /&gt;
Once installed, run with &amp;lt;code&amp;gt;cmake-gui&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cmake-qt-gui.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
# Set the path where you have the source code downloaded.&lt;br /&gt;
# Set the path where you would like to build the engine. This may be the same directory if you wish.&lt;br /&gt;
# Click 'Configure'.&lt;br /&gt;
# Click 'Generate'.&lt;br /&gt;
&lt;br /&gt;
====Unnecessary libraries====&lt;br /&gt;
&lt;br /&gt;
Regardless of which front-end to cmake you use, you may want to disable some libraries that are not strictly necessary:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; &amp;amp;mdash; Some maps use WebP to store their textures. Currently this should have little impact on gameplay but more maps will likely use this format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_OPENAL&amp;lt;/code&amp;gt; &amp;amp;mdash; If this is disabled, SDL is used instead for sound.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CODEC_VORBIS&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause certain sound effects (those using the &amp;lt;code&amp;gt;.ogg&amp;lt;/code&amp;gt; format) not to play. At present, this has only a minor impact on gameplay, but more and more sounds will likely use the format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CURSES&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause the external (not in-game) console to not use curses; it will not be scrollable and will be similar to the console in the original Tremulous. This does in no way affect gameplay.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Theora.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Xvid.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_VOIP&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this removes VOIP support. Alternatively enabling &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; will use the libraries distributed with Unvanquished for VoIP&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; &amp;amp;mdash; Enable this to use the crypto libraries provided by Unvanquished.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ make -j4&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; switch to make allows you to speed up the compilation process by running it in multiple threads; set the number following this to the number of cores your processor(s) have.&lt;br /&gt;
&lt;br /&gt;
===Acquiring the Game Files===&lt;br /&gt;
&lt;br /&gt;
The game files are not in the Git repository, and must be downloaded separately.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ cd main&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak0.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak1.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak2.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak3.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak4.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Map%20Pack/maps.7z/download&lt;br /&gt;
&lt;br /&gt;
On FreeBSD, use &amp;lt;code&amp;gt;fetch -r&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt;. You can also get the pak files in this way (requires cURL):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir -p ~/.Unvanquished/main&lt;br /&gt;
 $ ./download-pk3.sh ~/.Unvanquished/main&lt;br /&gt;
&lt;br /&gt;
The maps archive file isn't strictly necessary: if you don't have a particular map, the game will, by default, download missing files for you.&lt;br /&gt;
&lt;br /&gt;
Now you can proceed to [[running the game]].&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
===CMake cannot locate Newton===&lt;br /&gt;
&lt;br /&gt;
If CMake cannot find Newton, you'll need to set it up yourself.&lt;br /&gt;
&lt;br /&gt;
It should be in &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;/path/to/Unvanquished&amp;lt;/var&amp;gt;/src/libs/libnewton/libs/&amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt;/libNewton.so&amp;lt;/code&amp;gt;.&lt;br /&gt;
Be sure to replace &amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt; with the proper directory name.&lt;br /&gt;
&lt;br /&gt;
Use CMake as before to change the &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt; build setting to the said path:&lt;br /&gt;
&lt;br /&gt;
# Start the CMake configurator:&amp;lt;pre&amp;gt;$ ccmake ..&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Scroll down and highlight &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to begin editing and input in the path.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; to configure and &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the new makefiles.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Q&amp;lt;/span&amp;gt; to quit.&lt;br /&gt;
# Recompile the source:&amp;lt;pre&amp;gt;$ make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The C Compiler is not able to compile a simple test program===&lt;br /&gt;
&lt;br /&gt;
When attempting to generate a solution for Xcode CMake fails with the following error&lt;br /&gt;
  -- Check for working C compiler using: Xcode -- broken&lt;br /&gt;
  CMake Error at /Applications/CMake 2.8-8.app/Contents/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):&lt;br /&gt;
   The C compiler &amp;quot;/usr/bin/gcc&amp;quot; is not able to compile a simple test program.&lt;br /&gt;
  &lt;br /&gt;
    It fails with the following output:&lt;br /&gt;
  &lt;br /&gt;
     Change Dir: /Users/danielmaloney/Documents/Unvanquished/build-xcode/CMakeFiles/CMakeTmp&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &lt;br /&gt;
    Run Build Command:/Applications/CMake\ 2.8-8.app/Contents/bin/cmakexbuild&lt;br /&gt;
    -project CMAKE_TRY_COMPILE.xcodeproj build -target&lt;br /&gt;
    cmTryCompileExec1400153232 -configuration Debug&lt;br /&gt;
  &lt;br /&gt;
    Error: No developer directory found at /Developer.  Run&lt;br /&gt;
    /usr/bin/xcode-select to update the developer directory path.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
    CMake will not be able to correctly generate this project.&lt;br /&gt;
  Call Stack (most recent call first):&lt;br /&gt;
    CMakeLists.txt:19 (project)&lt;br /&gt;
&lt;br /&gt;
This is due to Xcode 4.3 having a different directory structure to previous versions. Simply running the following command will correct this error:&lt;br /&gt;
 sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Exporting_models&amp;diff=657</id>
		<title>Tutorials/Exporting models</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Tutorials/Exporting_models&amp;diff=657"/>
		<updated>2012-08-26T01:23:22Z</updated>

		<summary type="html">&lt;p&gt;Devhc: use general computer driving terminology&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modeling]]&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
''Notice: This guide was written for Blender 2.61. Most of this guide should apply for other versions of Blender, but this is not guaranteed.''&lt;br /&gt;
&lt;br /&gt;
Getting a finished model out of Blender and into the game is a relatively involved process with a number of possible pitfalls. This guide aims to describe the process in as much detail as possible to assist users who have not done it before, or those who have exported models for other games and would like to know what (if anything) is different.&lt;br /&gt;
&lt;br /&gt;
At present, this guide primarily describes the process for exporting models to the MD5 format. While the engine supports both MD3 and MD5, the latter is preferred.&lt;br /&gt;
&lt;br /&gt;
Before a model may be exported and used in-game, it must be adequately prepared:&lt;br /&gt;
&lt;br /&gt;
* [[Exporting_Models#Engine_Limitations|Engine limitations]] must be adhered to.&lt;br /&gt;
* The model must have a texture applied to it. This texture is not automagically applied to the model after it is exported and loaded in-game, this is only necessary to satisfy the MD5 exporter.&lt;br /&gt;
* The model must be a mesh and must have an armature modifier applied to it.&lt;br /&gt;
* The armature's bones all must have at least one keyframe.&lt;br /&gt;
&lt;br /&gt;
The actual process of exporting a model is straightforward:&lt;br /&gt;
&lt;br /&gt;
# After ensuring that the above requirements are met, the mesh itself is exported.&lt;br /&gt;
# Each animation is exported separately.&lt;br /&gt;
# A configuration file specifying data such as the bounding box size and vertical offset is written. This may include information that is specific to the particular type of model (i.e., buildable or player model).&lt;br /&gt;
# A shader is written that determines how the model is textured in-game.&lt;br /&gt;
# Finally, everything is compressed into a .pk3 archive, properly named, and placed in the correct folder to ensure that it is loaded and may be tested in-game.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages of the MD5 format==&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
&lt;br /&gt;
* Unlike MD3, MD5 is bone-based, meaning that instead of storing an entire mesh for each frame of animation, there is only one mesh file. This single mesh file is deformed using a vertex shader.&lt;br /&gt;
* Because there is only one mesh, only one VBO (vertex buffer object) needs to be created for each MD5 model. The deformation is performed entirely on the GPU, so it is (theoretically) faster than MD3, and uses less memory.&lt;br /&gt;
* Because the format is in plain-text, it can be easily verified for sanity (i.e., to ensure that it was exported correctly and not corrupted in some way).&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
&lt;br /&gt;
* Some forms of motion are more difficult to achieve.&lt;br /&gt;
* Because the Blender 2.5/2.6 MD5 exporter can only export models animated only with bones, certain animation techniques (such as lattices) are not usable.&lt;br /&gt;
* Because the format is in plain-text, it takes up more space than it needs to, though this is negligible and a MD5 model will typically be smaller than the same model in MD3 format.&lt;br /&gt;
&lt;br /&gt;
==Engine Limitations==&lt;br /&gt;
&lt;br /&gt;
The engine places certain limitations on the fidelity of your models. These are:&lt;br /&gt;
&lt;br /&gt;
* There may not be more than 128 bones. (Note: this was increased from 64.)&lt;br /&gt;
* There may not be more than 100,000 vertices.&lt;br /&gt;
* There may not be more than 10,000 triangles.&lt;br /&gt;
* No vertex may belong to more than four vertex groups (i.e., one vertex may not be controlled by more than four bones). An error message will be displayed in-game if this requirement is not met. See [[Exporting_Models#.22R_LoadMD5:_vertex_.25i_requires_more_than_.25i_weights_on_surface_.28.25i.29_in_model_.27.25s.27.22|this]] for more information. This is a limitation of the vertex shader ([https://github.com/Unvanquished/Unvanquished/blob/master/main/glsl/vertexSkinning_vp.glsl main/glsl/vertexSkinning_vp.glsl]) that deforms the base mesh.&lt;br /&gt;
&lt;br /&gt;
==Limitations of the MD5 format==&lt;br /&gt;
&lt;br /&gt;
The MD5 format only supports bones. You may not&lt;br /&gt;
&lt;br /&gt;
* Use lattices or any other means of deformation.&lt;br /&gt;
* Scale bones.&lt;br /&gt;
* Use keyframes on anything other than bone poses. You may, however, set keyframes on bone constraint influences or anything else that would affect a bone's position or rotation.&lt;br /&gt;
&lt;br /&gt;
Note that you do not have to have a parent/child relationship between bones. In fact, in some instances, avoiding a parent/child relationship is necessary to acheive certain effects, such as moving bones around.&lt;br /&gt;
&lt;br /&gt;
==Acquiring and installing the exporter==&lt;br /&gt;
&lt;br /&gt;
You can download the exporter from [http://www.katsbits.com/smforum/index.php?topic=178.0 this thread on katsbits.com]. Installation instructions are in the thread.&lt;br /&gt;
&lt;br /&gt;
Please be aware that there are [[Exporting_Models#All_or_part_of_the_mesh_appears_to_be_sucked_to_the_center|issues]] with certain versions of the exporter with certain versions of Blender.&lt;br /&gt;
&lt;br /&gt;
As of 15 May 2012, there is another MD5 exporter available for Blender 2.63+, available on [http://www.katsbits.com/smforum/index.php?topic=404.0 katsbits]. This is largely untested by the Unvanquished development team, although we are evaluating its use at present. The instructions in this guide currently apply only to the older exporter.&lt;br /&gt;
&lt;br /&gt;
==Exporting the mesh==&lt;br /&gt;
&lt;br /&gt;
''Please be aware that there are issues with the exporter and the current version of Blender. See [[Exporting_Models#All_or_part_of_the_mesh_appears_to_be_sucked_to_the_center|the troubleshooting section]] below for more information.''&lt;br /&gt;
&lt;br /&gt;
# Select the armature and the mesh. The order in which you select the two does not matter.&lt;br /&gt;
# Go to File &amp;amp;rarr; Export &amp;amp;rarr; Quake&amp;amp;nbsp;Model&amp;amp;nbsp;5&amp;amp;nbsp;(.md5)&lt;br /&gt;
# On the left shelf that appears in the file prompt, change the Exports combo box to &amp;quot;Mesh only.&amp;quot; Don't worry about the scale or name fields.&lt;br /&gt;
# Hit &amp;quot;Export MD5&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once this has been completed, you must manually edit the mesh file (the one with a &amp;lt;code&amp;gt;.md5mesh&amp;lt;/code&amp;gt; extension) to specify the correct shader to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- snip ---&lt;br /&gt;
mesh {&lt;br /&gt;
	shader &amp;quot;models/buildables/medistat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	numverts 4&lt;br /&gt;
	vert 0 ( 1.000000 0.000000 ) 0 1&lt;br /&gt;
	vert 1 ( 0.000000 0.000000 ) 1 1&lt;br /&gt;
--- snip ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;code&amp;gt;models/buildables/medistat&amp;lt;/code&amp;gt; is '''not''' a file path to a shader; it is the name (again, not filename) of the shader to use. That is, a shader with the matching name will be used for this model.&lt;br /&gt;
&lt;br /&gt;
To avoid having to do this every time you export the mesh, set the name of the material applied to the object in Blender to the same as you edited the md5mesh.&lt;br /&gt;
&lt;br /&gt;
Note that for buildables and weapons, the filename of the exported mesh is dictated by the corresponding [[Exporting_Models#Configuring_the_model|configuration file]]. All player models, however, are hardcoded to look for &amp;lt;code&amp;gt;body.md5mesh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exporting the animations==&lt;br /&gt;
&lt;br /&gt;
===MD3===&lt;br /&gt;
&lt;br /&gt;
Exported MD3 animations require a configuration file that specifies which frames of the animation correspond to which actions the game will display.&lt;br /&gt;
&lt;br /&gt;
This varies slightly by the type (i.e., weapon or buildable) of model.&lt;br /&gt;
&lt;br /&gt;
===MD5===&lt;br /&gt;
&lt;br /&gt;
''Please be aware that there are issues with the exporter and the current version of Blender. See [[Exporting_Models#All_or_part_of_the_mesh_appears_to_be_sucked_to_the_center|this]] for more information.''&lt;br /&gt;
&lt;br /&gt;
The procedure for exporting animations is the same as for exporting the mesh with regard to selecting the mesh and the armature. Before using the exporter, however, you must be certain to set the start and end frames to encompass only the particular animation that you wish to export; each animation must be exported separately.&lt;br /&gt;
&lt;br /&gt;
[[Image:Md5_export_timeline.png|frame|center|The timeline view in Blender, which is used to set which frames of animation to export. Here, only one frame of animation (frame 180) is being exported.]]&lt;br /&gt;
&lt;br /&gt;
At the export file prompt, choose &amp;quot;Anim only.&amp;quot; from the &amp;quot;Exports&amp;quot; combo box. Enter as the filename the name of the particular animation that you are exporting; the correct names to use are given below.&lt;br /&gt;
&lt;br /&gt;
===Weapon animation names===&lt;br /&gt;
&lt;br /&gt;
For more information, see the &amp;lt;code&amp;gt;CG_ParseWeaponFile()&amp;lt;/code&amp;gt; function in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/cgame/cg_weapons.c src/gamelogic/gpp/src/cgame/cg_weapons.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Developers: weapon state constants are enumerated in the &amp;lt;code&amp;gt;weaponstate_t&amp;lt;/code&amp;gt; enum in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/game/bg_public.h src/gamelogic/gpp/src/game/bg_public.h]&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
Artists may safely ignore this table.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Constant&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_READY&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_RAISING&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_DROPPING&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_FIRING&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_RELOADING&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WEAPON_NEEDS_RESET&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that for both MD3 and MD5 models, there may be separate models for first- and third-person views. Please see &amp;quot;[[Exporting_Models#Weapons|Configuring the model]]&amp;quot; for more information regarding how to specify separate models.&lt;br /&gt;
&lt;br /&gt;
====MD3====&lt;br /&gt;
&lt;br /&gt;
MD3 does not use separate files for separate animations. Instead, a configuration file specifies what frames of a single MD3 animation are used for each in-game animation.&lt;br /&gt;
&lt;br /&gt;
''TODO: Find out how barrel spin is handled by the engine. Is it animated into the barrel model or is it done procedurally?''&lt;br /&gt;
&lt;br /&gt;
In addition to the base weapon mesh, there may be as many as three additional MD3 meshes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Search string&lt;br /&gt;
! Tag&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_flash.md3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;tag_flash&amp;lt;/code&amp;gt;&lt;br /&gt;
| The weapon's muzzle flash.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_barrel.md3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;tag_barrel&amp;lt;/code&amp;gt;&lt;br /&gt;
| The weapon's barrel.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_hand.md3&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| Hands holding the weapon model. Note: this is not used for third person models.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For non-programmers, the &amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt; string is replaced by the parameter given to the &amp;lt;code&amp;gt;weaponModel&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;weaponModel3rdPerson&amp;lt;/code&amp;gt; keyword.&lt;br /&gt;
&lt;br /&gt;
The tag &amp;lt;code&amp;gt;tag_weapon&amp;lt;/code&amp;gt; is used on the main weapon model to align the third person weapon model to the third person player model.&lt;br /&gt;
&lt;br /&gt;
====MD5====&lt;br /&gt;
&lt;br /&gt;
Note that each animation filename must have the &amp;lt;code&amp;gt;.md5anim&amp;lt;/code&amp;gt; extension.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Animation name&lt;br /&gt;
! Engine constant&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_IDLE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Animation played when a weapon is not fired&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_lower&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_DROP&amp;lt;/code&amp;gt;&lt;br /&gt;
| Animation palyed when a weapon is switched from?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_reload&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_RELOAD&amp;lt;/code&amp;gt;&lt;br /&gt;
| Weapon reload animation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_raise&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_RAISE&amp;lt;/code&amp;gt;&lt;br /&gt;
| Animation played when a weapon is switched to?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%s_view_fire&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Default attack animation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK2&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | Not sure what these are used for&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK3&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK4&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK5&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK6&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK7&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;WANIM_ATTACK8&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Buildable animation names===&lt;br /&gt;
&lt;br /&gt;
====MD3====&lt;br /&gt;
&lt;br /&gt;
As always, MD3 buildable models require a separate configuration file that specifies which frames of the animation correspond to actions displayed by the game. This file is parsed by &amp;lt;code&amp;gt;CG_ParseBuildableAnimationFile()&amp;lt;/code&amp;gt; in [https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/cgame/cg_buildable.c src/gamelogic/gpp/src/cgame/cg_buildable.c].&lt;br /&gt;
&lt;br /&gt;
Each line in the configuration file corresponds to a single animation. Those animations are in the same order as in the table for MD5 animation names below.&lt;br /&gt;
&lt;br /&gt;
The order that animations appear in the configuration file must match this order exactly. Animations may not be omitted.&lt;br /&gt;
&lt;br /&gt;
The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;var&amp;gt;firstFrame&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;numFrames&amp;lt;/var&amp;gt; [&amp;lt;var&amp;gt;loopFrames&amp;lt;/var&amp;gt; [&amp;lt;var&amp;gt;fps&amp;lt;/var&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;var&amp;gt;firstFrame&amp;lt;/var&amp;gt; &amp;amp;mdash; Specifies the initial frame of the animation.&lt;br /&gt;
* &amp;lt;var&amp;gt;numFrames&amp;lt;/var&amp;gt; &amp;amp;mdash; Specifies the number of frames following the initial frame that comprise that animation.&lt;br /&gt;
* &amp;lt;var&amp;gt;loopFrames&amp;lt;/var&amp;gt; &amp;amp;mdash; (''Optional'')&lt;br /&gt;
* &amp;lt;var&amp;gt;fps&amp;lt;/var&amp;gt; &amp;amp;mdash; (''Optional, may only be used if loopFrames is specified'') Specifies the framerate of the animation. If not specified, defaults to 1.&lt;br /&gt;
&lt;br /&gt;
C and C++ style comments (i.e., &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/* */&amp;lt;/code&amp;gt;) are permitted past the last argument.&lt;br /&gt;
&lt;br /&gt;
====MD5====&lt;br /&gt;
&lt;br /&gt;
As with weapon animations, each animation filename must have the &amp;lt;code&amp;gt;.md5anim&amp;lt;/code&amp;gt; extension.&lt;br /&gt;
&lt;br /&gt;
These animation constants are in the &amp;lt;code&amp;gt;buildableAnimNumber_t&amp;lt;/code&amp;gt; enumeration in [https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/game/bg_public.c src/gamelogic/gpp/src/game/bg_public.c].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Animation name&lt;br /&gt;
! Engine constant&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;construct&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_CONSTRUCT1&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Construction animation, shown when the buildable is being built.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;construct2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_CONSTRUCT2&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_IDLE1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Idle animation, shown when the buildable is not doing anything.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;idle2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_IDLE2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Used for the unshrink animation for the barricade.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;idle3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_IDLE3&amp;lt;/code&amp;gt;&lt;br /&gt;
| Just another idle? (need to check this)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_ATTACK1&amp;lt;/code&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Animation played when a buidlable is attacking.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_ATTACK1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_SPAWN1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Used only by spawn points (the telenode and the egg) when someone is spawning from them.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;spawn2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_SPAWN2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Not used&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pain&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_PAIN1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pain animation, used when a buildable is damaged in any way.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pain2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_PAIN2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pain animation used for the barricade when it is damaged and shrunk.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;destroy&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_DESTROY1&amp;lt;/code&amp;gt;&lt;br /&gt;
| Played when a buildable is killed or destroyed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;destroy2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_DESTROY2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Not used as far as I can tell&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;destroyed&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BANIM_DESTROYED&amp;lt;/code&amp;gt;&lt;br /&gt;
| The animation played after the buildable's destroy animation finishes playing but before it blows up; essentially, the buildable in a dead state.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Player animation names===&lt;br /&gt;
&lt;br /&gt;
As with weapon animations, each animation filename must have the &amp;lt;code&amp;gt;.md5anim&amp;lt;/code&amp;gt; extension.&lt;br /&gt;
&lt;br /&gt;
Items in italics need to be double-checked.&lt;br /&gt;
&lt;br /&gt;
Note that at present, some of these strings do not match the constants.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Animation name&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Engine constant&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Humans?&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Aliens?&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
! Assumed Correct&lt;br /&gt;
! Actual (Humans)&lt;br /&gt;
! Actual (Aliens)&lt;br /&gt;
! Humans&lt;br /&gt;
! Aliens&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TORSO_ATTACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_ATTACK1&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack2&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TORSO_ATTACK2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_ATTACK2&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack3&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack3&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;attack3&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_ATTACK3&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;charge&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;charge&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_CHARGE&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Tyrant charge animation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_IDLECR&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch_backward&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch_forward&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_BACKCR&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch_forward&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;crouch_forward&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_WALKCR&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;die&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;die&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;die&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;BOTH_DEATH1&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_DEATH1&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gesture&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gesture&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;gesture&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TORSO_GESTURE&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_GESTURE&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_IDLE&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| Human idle animation. It seems as though NSPA_STAND (&amp;quot;stand&amp;quot;) is used as the idle animation for aliens.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;jump&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;jump&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;jump&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_JUMP&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_JUMP&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;jump_back&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;jump&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;jump_back&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_JUMPB&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_JUMPBACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Evidently although humans have a separate constant for jumping backwards, they use the same animation file as for jumping forwards.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;land&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;land&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;land&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_LAND&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_LAND&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;land_back&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;land&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;land_back&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_LANDB&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_LANDBACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Like with jumping, humans evidently use the same animation for both LEGS_LAND and LEGS_LANDB.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pain1&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;pain1&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_PAIN1&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Humans evidently do not have a pain animation?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pain2&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;pain2&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_PAIN2&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_RUN&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_RUN&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;run_backwards&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; (?)&lt;br /&gt;
| &amp;lt;code&amp;gt;run_backwards&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_BACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_RUNBACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| Note: Not sure if this is correct for the humans&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;run_left&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;run_left&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_RUNLEFT&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;run_right&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;run_right&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_RUNLEFT&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stand&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;stand&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_STAND&amp;lt;/code&amp;gt;&lt;br /&gt;
| ''No''&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| TORSO_STAND is in the code, but I didn't see an animation loaded for the humans&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stand2&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;TORSO_STAND2&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| ''No''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;step&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;step&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_TURN&amp;lt;/code&amp;gt;?&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| ''No''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;swim&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;swim&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;swim&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_SWIM&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_SWIM&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;turn&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;step&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_TURN&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;walk&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;walk&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;walk&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_WALK&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_WALK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_backwards&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;walk&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_backwards&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;LEGS_BACKWALK&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_WALKBACK&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_left&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_left&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_WALKLEFT&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_right&amp;lt;/code&amp;gt; &amp;lt;!-- checked --&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;walk_right&amp;lt;/code&amp;gt;&lt;br /&gt;
| N/A&lt;br /&gt;
| &amp;lt;code&amp;gt;NSPA_WALKLEFT&amp;lt;/code&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ff1a1d;color:#fff;&amp;quot; | No&lt;br /&gt;
| style=&amp;quot;background:#3c9e2d;color:#fff;&amp;quot; | Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- other animation constants seen that aren't in the table:&lt;br /&gt;
LEGS_WALKCR_BACK&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Writing shaders==&lt;br /&gt;
&lt;br /&gt;
As was implied before, the texture(s) used by a model are not stored in the md5mesh or md5anim files; they are specified by a separate shader file that is placed in the &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
Shaders are a very large topic and are outside the scope of this guide. The [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm XReal shader guide] explains shaders in detail. However, the following shader should do for most purposes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
models/buildables/trapper&lt;br /&gt;
{&lt;br /&gt;
	diffuseMap models/buildables/trapper/trapper.tga&lt;br /&gt;
	bumpMap models/buildables/trapper/trapper_n.tga&lt;br /&gt;
	specularMap models/buildables/trapper/trapper_s.tga&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do take note that&lt;br /&gt;
* &amp;lt;code&amp;gt;models/buildables/trapper&amp;lt;/code&amp;gt; is NOT a path, it is merely a string that matches the shader specified by the &amp;lt;code&amp;gt;.md5mesh&amp;lt;/code&amp;gt;, and&lt;br /&gt;
* &amp;lt;code&amp;gt;bumpMap&amp;lt;/code&amp;gt; actually refers to a normal map.&lt;br /&gt;
&lt;br /&gt;
==Configuring the model==&lt;br /&gt;
&lt;br /&gt;
Aside from the textures used by a model, the scale, vertical position, and bounding box size of the model must be specified. This is done with a configuration file. These were formerly placed in &amp;lt;code&amp;gt;overrides/buildables/&amp;lt;/code&amp;gt; (for buildables) or &amp;lt;code&amp;gt;overrides/classes/&amp;lt;/code&amp;gt; (for player models), but are now placed in &amp;lt;code&amp;gt;configs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Player models===&lt;br /&gt;
&lt;br /&gt;
Reading the configuration file for player models is handled by the &amp;lt;code&amp;gt;CG_ParseCharacterFile()&amp;lt;/code&amp;gt; function in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/cgame/cg_players.c src/gamelogic/gpp/src/cgame/cg_players.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The configuration file may use the following keywords:&lt;br /&gt;
&lt;br /&gt;
''Note: this list is incomplete''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;headoffset &amp;lt;var&amp;gt;x&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;y&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;z&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;sex &amp;lt;var&amp;gt;gender&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sets the gender of the model. Options are &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; for female or &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; for neuter. Any other character is interpreted as male.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;fixedlegs&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;fixedtorso&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;firstTorsoBoneName&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;footsteps&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;flesh&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;metal&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;splash&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;lastTorsoBoneName&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;torsoControlBoneName&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;neckControlBoneName&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;modelScale&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name        &amp;quot;Basilisk&amp;quot;&lt;br /&gt;
model       level1&lt;br /&gt;
modelScale  1.0&lt;br /&gt;
skin        default&lt;br /&gt;
shadowScale 1.0&lt;br /&gt;
hud         alien_general_hud&lt;br /&gt;
mins        -18 -18 -18&lt;br /&gt;
maxs        18 18 18&lt;br /&gt;
crouchMaxs  18 18 18&lt;br /&gt;
deadMins    -18 -18 -4&lt;br /&gt;
deadMaxs    18 18 4&lt;br /&gt;
zOffset     0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Weapons===&lt;br /&gt;
&lt;br /&gt;
Weapon configuration files are parsed with &amp;lt;code&amp;gt;CG_ParseWeaponConfig()&amp;lt;/code&amp;gt; function in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/base/src/cgame/cg_weapons.c src/gamelogic/base/src/cgame/cg_weapons.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The configuration file may use the following keywords:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;weaponModel &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;weaponModel3rdPerson &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;idleSound &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;icon &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;crosshair &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;disableIn3rdPerson&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After those keywords, one of the following keywords must be used, followed by an opening curly brace (&amp;lt;code&amp;gt;{&amp;lt;/code&amp;gt;), more commands, and a final closing curly brace (&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;primary&amp;lt;/code&amp;gt; (engine constant: &amp;lt;code&amp;gt;WPM_PRIMARY&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;secondary&amp;lt;/code&amp;gt; (engine constant: &amp;lt;code&amp;gt;WPM_SECONDARY&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;tertiary&amp;lt;/code&amp;gt; (engine constant: &amp;lt;code&amp;gt;WPM_TERTIARY&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
The configuration between the curly braces is handled by &amp;lt;code&amp;gt;CG_ParseWeaponModeSection&amp;lt;/code&amp;gt;, in the same file. It accepts the following keywords:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileModel &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileSprite &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;shader&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt; &amp;amp;mdash; The size of the missile sprite. If this value is negative, it is made zero.&lt;br /&gt;
* &amp;lt;var&amp;gt;shader&amp;lt;/var&amp;gt; &amp;amp;mdash; The shader describing the missile sprite.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileRotates&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileAnimates &amp;lt;var&amp;gt;startFrame&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;numFrames&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;frameRate&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;looping&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileParticleSystem &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileTrailSystem &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;muzzleParticleSystem &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;impactParticleSystem &amp;lt;var&amp;gt;name&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;impactMark &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;shader&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;impactSound &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;amp;mdash; The index of the sound file, clamped to the range [0,3]; up to four impact sounds may be defined with this keyword.&lt;br /&gt;
* &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt; &amp;amp;mdash; The file path of the sound file to use.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;impactFleshSound &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;amp;mdash; The index of the sound file, clamped to the range [0,3]; up to four impact sounds may be defined with this keyword.&lt;br /&gt;
* &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt; &amp;amp;mdash; The file path of the sound file to use.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;alwaysImpact&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;flashDLightColor &amp;lt;var&amp;gt;red&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;green&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;blue&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Specifies the color of the muzzle flash &amp;lt;!-- didn't actually double check this --&amp;gt; dynamic lighting.&amp;lt;/p&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;red&amp;lt;/var&amp;gt; &amp;amp;mdash; The red color component as a floating point number in the range [0,1].&lt;br /&gt;
* &amp;lt;var&amp;gt;green&amp;lt;/var&amp;gt; &amp;amp;mdash; The green color component as a floating point number in the range [0,1].&lt;br /&gt;
* &amp;lt;var&amp;gt;blue&amp;lt;/var&amp;gt; &amp;amp;mdash; The blue color component as a floating point number in the range [0,1].&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;continuousFlash&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileDlightColor &amp;lt;var&amp;gt;red&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;green&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;blue&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;red&amp;lt;/var&amp;gt; &amp;amp;mdash; The red color component as a floating point number in the range [0,1].&lt;br /&gt;
* &amp;lt;var&amp;gt;green&amp;lt;/var&amp;gt; &amp;amp;mdash; The green color component as a floating point number in the range [0,1].&lt;br /&gt;
* &amp;lt;var&amp;gt;blue&amp;lt;/var&amp;gt; &amp;amp;mdash; The blue color component as a floating point number in the range [0,1].&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileDlight &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;size&amp;lt;/var&amp;gt; &amp;amp;mdash; If this value is negative, it is made zero.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;firingSound &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;missileSound &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;flashSound &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;amp;mdash; The index of the sound file, clamped to the range [0,3]; up to four impact sounds may be defined with this keyword.&lt;br /&gt;
* &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt; &amp;amp;mdash; The file path of the sound file to use.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As an example, this is the configuration for the chaingun (&amp;lt;code&amp;gt;models/weapons/chaingun/weapon.cfg&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
weaponModel       models/weapons/chaingun/chaingun.md3&lt;br /&gt;
&lt;br /&gt;
icon              icons/iconw_chaingun&lt;br /&gt;
crosshair         48 gfx/2d/crosshair-chaingun_s&lt;br /&gt;
&lt;br /&gt;
primary&lt;br /&gt;
{&lt;br /&gt;
  flashDlightColor      1.0 1.0 0.0&lt;br /&gt;
  flashSound            0 models/weapons/chaingun/flash0.wav&lt;br /&gt;
  flashSound            1 models/weapons/chaingun/flash1.wav&lt;br /&gt;
  flashSound            2 models/weapons/chaingun/flash2.wav&lt;br /&gt;
  flashSound            3 models/weapons/chaingun/flash3.wav&lt;br /&gt;
&lt;br /&gt;
  impactMark            8 gfx/marks/bullet_mrk&lt;br /&gt;
&lt;br /&gt;
  impactSound           0 models/weapons/chaingun/impact0.wav&lt;br /&gt;
&lt;br /&gt;
  impactParticleSystem  models/weapons/rifle/impactPS&lt;br /&gt;
  muzzleParticleSystem  models/weapons/chaingun/muzzlePS&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Buildables===&lt;br /&gt;
&lt;br /&gt;
Reading the configuration file for buildables is handled by the &amp;lt;code&amp;gt;BG_ParseBuildableFile()&amp;lt;/code&amp;gt; function in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/gamelogic/gpp/src/game/bg_misc.c src/gamelogic/gpp/src/game/bg_misc.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The configuration file may use the following keywords:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;model &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;index&amp;lt;/var&amp;gt; Some models may actually have several different model files (not sure why); this argument specifies which. Clamped to the range [0,3] (which should actually be [0, MAX_BUILDABLE_MODELS]), which means that you may use as many as four models per buildable. This is only used by the machine gun turret, which is composed of different parts.&lt;br /&gt;
* &amp;lt;var&amp;gt;path&amp;lt;/var&amp;gt; The file path where the model file is located. Note that for MD5 models, an extension of &amp;lt;code&amp;gt;.md3&amp;lt;/code&amp;gt; is still to be used; it will automatically be changed by the engine.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;modelScale &amp;lt;var&amp;gt;scale&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Scales the model linearly.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;mins &amp;lt;var&amp;gt;minX&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;minY&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;minZ&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The coordinates passed to this and &amp;lt;code&amp;gt;maxs&amp;lt;/code&amp;gt; define the bounding box for the model that is used for collision. The bounding box is always aligned to the global coordinate axes regardless of the orientation of the model, which is something to keep in mind when defining these values. You will likely have to debug these values by enabling drawing the bounding boxes. Load a map in developer mode with &amp;lt;code&amp;gt;\devmap&amp;lt;/code&amp;gt; and set &amp;lt;code&amp;gt;\cg_drawBBOX&amp;lt;/code&amp;gt; to 1. The three arguments combined form the coordinate of one corner of the bounding box, and &amp;lt;code&amp;gt;maxs&amp;lt;/code&amp;gt; the opposite corner.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;maxs &amp;lt;var&amp;gt;minX&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;minY&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;minZ&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Defines the opposite corner of the AABB. (See above.)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;zOffset &amp;lt;var&amp;gt;offset&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Sets the vertical offset of the model; in other words, how far off the ground it is.&amp;lt;/p&amp;gt;&lt;br /&gt;
* &amp;lt;var&amp;gt;offset&amp;lt;/var&amp;gt; The offset as a floating point (decimal) value.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As an example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
model       0 models/buildables/trapper/trapper.md3&lt;br /&gt;
modelScale  0.8&lt;br /&gt;
mins        -15 -15 -15&lt;br /&gt;
maxs        15 15 15&lt;br /&gt;
zOffset     -15&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that at present, you do not have to change the filename extension of the model to match what it actually is; that is, if the model is actually an md5, you may leave the extension as &amp;quot;.md3&amp;quot; and not &amp;quot;.md5mesh&amp;quot; or whatever.&lt;br /&gt;
&lt;br /&gt;
==Directory overview==&lt;br /&gt;
&lt;br /&gt;
This section provides an overview of the subset of the directory structure used by models; directories used for other purposes have been omitted.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;armor/&amp;lt;/code&amp;gt; Location of configurations for the three armor types (i.e., light, helmet, and battlesuit). You should not have to edit these.&lt;br /&gt;
* &amp;lt;code&amp;gt;configs/&amp;lt;/code&amp;gt; Location of configuration files for various models.&lt;br /&gt;
** &amp;lt;code&amp;gt;buildables/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gfx/&amp;lt;/code&amp;gt; Location of various 2d effect textures, such as those used for weapons.&lt;br /&gt;
** ''Subdirectories omitted for brevity''&lt;br /&gt;
* &amp;lt;code&amp;gt;models/&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ammo/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;tesla/&amp;lt;/code&amp;gt; Contains a single image used for the tesla sparks. Not sure why it's located here.&lt;br /&gt;
** &amp;lt;code&amp;gt;buildables/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;acid_tube/&amp;lt;/code&amp;gt; Acid tube&lt;br /&gt;
*** &amp;lt;code&amp;gt;arm/&amp;lt;/code&amp;gt; Armory&lt;br /&gt;
*** &amp;lt;code&amp;gt;barricade/&amp;lt;/code&amp;gt; Barricade&lt;br /&gt;
*** &amp;lt;code&amp;gt;booster/&amp;lt;/code&amp;gt; Booster&lt;br /&gt;
*** &amp;lt;code&amp;gt;dcc/&amp;lt;/code&amp;gt; Defense Computer&lt;br /&gt;
*** &amp;lt;code&amp;gt;eggpod/&amp;lt;/code&amp;gt; Egg&lt;br /&gt;
*** &amp;lt;code&amp;gt;hive/&amp;lt;/code&amp;gt; Hive&lt;br /&gt;
*** &amp;lt;code&amp;gt;hovel/&amp;lt;/code&amp;gt; Hovel&lt;br /&gt;
*** &amp;lt;code&amp;gt;medistat/&amp;lt;/code&amp;gt; Medistation&lt;br /&gt;
*** &amp;lt;code&amp;gt;mgturret/&amp;lt;/code&amp;gt; Machinegun Turret&lt;br /&gt;
*** &amp;lt;code&amp;gt;overmind/&amp;lt;/code&amp;gt; Overmind&lt;br /&gt;
*** &amp;lt;code&amp;gt;reactor/&amp;lt;/code&amp;gt; Reactor&lt;br /&gt;
*** &amp;lt;code&amp;gt;repeater/&amp;lt;/code&amp;gt; Repeater&lt;br /&gt;
*** &amp;lt;code&amp;gt;telenode/&amp;lt;/code&amp;gt; Telenode&lt;br /&gt;
*** &amp;lt;code&amp;gt;tesla/&amp;lt;/code&amp;gt; Tesla generator&lt;br /&gt;
*** &amp;lt;code&amp;gt;trapper/&amp;lt;/code&amp;gt; Trapper&lt;br /&gt;
** &amp;lt;code&amp;gt;players/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;builder/&amp;lt;/code&amp;gt; Human builder model.&lt;br /&gt;
*** &amp;lt;code&amp;gt;human_base/&amp;lt;/code&amp;gt; Unarmored human model. Also includes the jetpack and battery pack.&lt;br /&gt;
*** &amp;lt;code&amp;gt;human_bsuit/&amp;lt;/code&amp;gt; Battlesuit model.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level0/&amp;lt;/code&amp;gt; Dretch.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level1/&amp;lt;/code&amp;gt; Basilisk and advanced basilisk. (The advanced basilisk uses the same model as the regular dragoon, but a different texture.)&lt;br /&gt;
*** &amp;lt;code&amp;gt;level2/&amp;lt;/code&amp;gt; Marauder and advanced marauder. (Same as basilisk with regard to advanced model.)&lt;br /&gt;
*** &amp;lt;code&amp;gt;level3/&amp;lt;/code&amp;gt; Dragoon and advanced dragoon. (Same as basilisk with regard to advanced model.)&lt;br /&gt;
*** &amp;lt;code&amp;gt;level4/&amp;lt;/code&amp;gt; Tyrant.&lt;br /&gt;
** &amp;lt;code&amp;gt;weapons/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;abuild/&amp;lt;/code&amp;gt; As there is no weapon model for the granger, the only thing in this directory is a config to hide the (nonexistant) weapon model in third person (a hack, I guess).&lt;br /&gt;
*** &amp;lt;code&amp;gt;abuildupg/&amp;lt;/code&amp;gt; Advanced granger weapon. Same as above, except the config file specifies sounds for the attack sounds (which are also located in this directory).&lt;br /&gt;
*** &amp;lt;code&amp;gt;ackit/&amp;lt;/code&amp;gt; Advanced construction kit.&lt;br /&gt;
*** &amp;lt;code&amp;gt;blaster/&amp;lt;/code&amp;gt; Blaster.&lt;br /&gt;
*** &amp;lt;code&amp;gt;chaingun/&amp;lt;/code&amp;gt; Chaingun.&lt;br /&gt;
*** &amp;lt;code&amp;gt;ckit/&amp;lt;/code&amp;gt; Construction kit.&lt;br /&gt;
*** &amp;lt;code&amp;gt;flamer/&amp;lt;/code&amp;gt; Flamethrower.&lt;br /&gt;
*** &amp;lt;code&amp;gt;grenade/&amp;lt;/code&amp;gt; Grenade.&lt;br /&gt;
*** &amp;lt;code&amp;gt;hive/&amp;lt;/code&amp;gt; Sprites, configuration file, and sound file for the hive.&lt;br /&gt;
*** &amp;lt;code&amp;gt;lcannon/&amp;lt;/code&amp;gt; Lucifer cannon.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level0/&amp;lt;/code&amp;gt; Dretch configuration and attack sound file.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level1/&amp;lt;/code&amp;gt; Basilisk configuration and attack sound files (hit and miss).&lt;br /&gt;
*** &amp;lt;code&amp;gt;level1upg/&amp;lt;/code&amp;gt; Advanced Basilisk configuration and added gas attack sound file.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level2/&amp;lt;/code&amp;gt; Marauder configuration and attack sound files (hit and miss).&lt;br /&gt;
*** &amp;lt;code&amp;gt;level2upg/&amp;lt;/code&amp;gt; Advanced Marauder configuration and added electric attack sound file.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level3/&amp;lt;/code&amp;gt; Dragoon configuration and attack sound files (hit, miss, and pounce).&lt;br /&gt;
*** &amp;lt;code&amp;gt;level3upg/&amp;lt;/code&amp;gt; Advanced Dragoon configuration and added barb sound files and model.&lt;br /&gt;
*** &amp;lt;code&amp;gt;level4/&amp;lt;/code&amp;gt; Tyrant configuration and attack sound files (hit and miss).&lt;br /&gt;
*** &amp;lt;code&amp;gt;lgun/&amp;lt;/code&amp;gt; Lasgun&lt;br /&gt;
*** &amp;lt;code&amp;gt;lockblob/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;mdriver/&amp;lt;/code&amp;gt; Mass Driver&lt;br /&gt;
*** &amp;lt;code&amp;gt;mgturret/&amp;lt;/code&amp;gt; Machinegun turret '''''FIXME: why does this show up twice?'''''&lt;br /&gt;
*** &amp;lt;code&amp;gt;prifle/&amp;lt;/code&amp;gt; Plasma rifle&lt;br /&gt;
*** &amp;lt;code&amp;gt;psaw/&amp;lt;/code&amp;gt; Painsaw&lt;br /&gt;
*** &amp;lt;code&amp;gt;rifle/&amp;lt;/code&amp;gt; Rifle&lt;br /&gt;
*** &amp;lt;code&amp;gt;shells/&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;shotgun/&amp;lt;/code&amp;gt; Shotgun&lt;br /&gt;
*** &amp;lt;code&amp;gt;teslagen/&amp;lt;/code&amp;gt; Tesla generator '''''FIXME: why does this show up twice?'''''&lt;br /&gt;
* &amp;lt;code&amp;gt;overrides/&amp;lt;/code&amp;gt; Depreciated directory for model configuration files. Use &amp;lt;code&amp;gt;configs/&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
** &amp;lt;code&amp;gt;buildables/&amp;lt;/code&amp;gt; Depreceated location for buildable model configs.&lt;br /&gt;
** &amp;lt;code&amp;gt;classes/&amp;lt;/code&amp;gt; Depreceated location for character model configs.&lt;br /&gt;
* &amp;lt;code&amp;gt;scripts/&amp;lt;/code&amp;gt; Location for shaders.&lt;br /&gt;
&lt;br /&gt;
==Getting the model in game==&lt;br /&gt;
&lt;br /&gt;
There are two approaches to test your model in-game. The model and related files may be in actual folders, or the engine can load them from a &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; file, which is really just a zip-compressed archive with the extension changed.&lt;br /&gt;
&lt;br /&gt;
The engine always prioritizes files in &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; archives over files and folders at the same priority. The priority from highest to lowest is as follows:&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_homepath/fs_game&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_basepath/fs_game&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;$PWD/fs_game&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_homepath/fs_basegame&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_basepath/fs_basegame&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;$PWD/fs_basegame&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_homepath/BASEGAME&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;fs_basepath/BASEGAME&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;$PWD/BASEGAME&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;BASEGAME&amp;lt;/code&amp;gt; is a preprocessor macro (for non-programmers, a constant; i.e., this cannot be changed at runtime) set to &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; in Unvanquished. &amp;lt;code&amp;gt;$PWD&amp;lt;/code&amp;gt; is the directory that Unvanquished was started from.&lt;br /&gt;
&lt;br /&gt;
Programmers may be interested in &amp;lt;code&amp;gt;[https://github.com/Unvanquished/Unvanquished/blob/master/src/engine/qcommon/files.c src/engine/qcommon/files.c]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The default locations for &amp;lt;code&amp;gt;fs_basepath&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;fs_homepath&amp;lt;/code&amp;gt; are as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;code&amp;gt;fs_basepath&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;fs_homepath&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows&lt;br /&gt;
| TODO&lt;br /&gt;
| TODO&lt;br /&gt;
|-&lt;br /&gt;
| Linux&lt;br /&gt;
| $HOME/.Unvanquished&lt;br /&gt;
| The directory in which Unvanquished is installed.&lt;br /&gt;
|-&lt;br /&gt;
| Mac OS X&lt;br /&gt;
| TODO&lt;br /&gt;
| TODO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Basically, the process to get data in-game is to create a temporary directory somewhere and copy the model, shader(s) and configuration file to that directory (creating sub-directories as necessary), then compress the temporary directory as a &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt; archive. Change the extension of the &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt; archive to &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; and move it into whichever directory you please, knowing that higher priority files will be used over lesser priority files. An example directory structure might look like this:&lt;br /&gt;
&lt;br /&gt;
* tmp&lt;br /&gt;
** configs&lt;br /&gt;
*** buildables&lt;br /&gt;
**** acid_tube.cfg&lt;br /&gt;
** models&lt;br /&gt;
*** buildables&lt;br /&gt;
**** acid_tube&lt;br /&gt;
***** acid_tube.md5mesh&lt;br /&gt;
***** acid_tube.tga&lt;br /&gt;
***** acid_tube_g.tga&lt;br /&gt;
***** acid_tube_n.tga&lt;br /&gt;
***** acid_tube_s.tga&lt;br /&gt;
***** idle.md5anim&lt;br /&gt;
***** ''other animations omitted for brevity''&lt;br /&gt;
** scripts&lt;br /&gt;
*** acid_tube.shader&lt;br /&gt;
&lt;br /&gt;
Please note that the exact name of the textures used is not strictly defined; these may be whatever you please and are specified by the shader file. See [[Exporting_Models#Writing_shaders|Writing shaders]] for more information.&lt;br /&gt;
&lt;br /&gt;
==Testing the model==&lt;br /&gt;
&lt;br /&gt;
Once you have the model exported, the shader and configuration written, and everything packaged into a .pk3 file and in place, you are ready to test.&lt;br /&gt;
&lt;br /&gt;
===Testing externally===&lt;br /&gt;
&lt;br /&gt;
Rather than testing the exported model in-game, you may also test the model with a stand-alone MD5 viewer. At present, there is a viewer for Windows available [http://www.katsbits.com/files/md5/modelviewer_0.93a.zip here].&lt;br /&gt;
&lt;br /&gt;
===Testing in game===&lt;br /&gt;
&lt;br /&gt;
Start the game, and enter the following commands:&lt;br /&gt;
&lt;br /&gt;
 \sv_pure 0&lt;br /&gt;
 \devmap atcshd&lt;br /&gt;
&lt;br /&gt;
You may also load a map with the regular &amp;lt;code&amp;gt;\map&amp;lt;/code&amp;gt; command. Be aware, however, that &amp;lt;code&amp;gt;devmap&amp;lt;/code&amp;gt; enables cheats which can make it easier to test (such as being able to jump directly to stage 2 or 3 if required). Also note that with &amp;lt;code&amp;gt;devmap&amp;lt;/code&amp;gt;, the build time for buildables is zero, so the building animation(s) will not play.&lt;br /&gt;
&lt;br /&gt;
====Tips====&lt;br /&gt;
&lt;br /&gt;
* If the model is a buildable, weapon, or player model that is not immediately available (i.e., not available until a later stage), you can change the stage with &amp;lt;code&amp;gt;g_alienStage&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;g_humanStage&amp;lt;/code&amp;gt;. Both of these cvars accept a single parameter, which is the zero-based index of the stage; to skip to stage 2, use 1 as a parameter, and to skip to stage 2, use 2 as a parameter (stage 1 is 0).&lt;br /&gt;
* If you do not have sufficient credits to purchase an item model you wish to test, or evos to evolve to the desired class, you may give yourself the maximum amount that you can carry with &amp;lt;code&amp;gt;\give all&amp;lt;/code&amp;gt;.&lt;br /&gt;
* To make yourself invincible, use the &amp;lt;code&amp;gt;\god&amp;lt;/code&amp;gt; command.&lt;br /&gt;
* To stop buildables from attacking, use the &amp;lt;code&amp;gt;\notarget&amp;lt;/code&amp;gt; command.&lt;br /&gt;
* To stress test the engine's ability to display a large number of buildables, set &amp;lt;code&amp;gt;g_humanBuildPoints&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;g_alienBuildPoints&amp;lt;/code&amp;gt;  to as high as you wish; this will allow you to build as much as you please.&lt;br /&gt;
&lt;br /&gt;
====Debugging the model====&lt;br /&gt;
&lt;br /&gt;
* To determine what file was loaded for a particular asset (e.g., to determine if files are being read from a particular &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt; archive), use the &amp;lt;code&amp;gt;\which&amp;lt;/code&amp;gt; command with the relative path to the asset as an argument, such as &amp;lt;code&amp;gt;\which&amp;amp;nbsp;models/buildables/acid_tube/acid_tube.md5mesh&amp;lt;/code&amp;gt;. Note that &amp;lt;code&amp;gt;which&amp;lt;/code&amp;gt; accepts both forward- and backslashes regardless of platform.&lt;br /&gt;
* To visually inpsect a model's bounding box, which is set by its configuration file, set &amp;lt;code&amp;gt;\cg_drawBBOX&amp;lt;/code&amp;gt; to 1.&lt;br /&gt;
* To visually inspect the bone structure of a MD5 model, set &amp;lt;code&amp;gt;r_showSkeleton&amp;lt;/code&amp;gt; to 1. ''Note: at present there is a bug that causes bones to be displayed incorrectly. See [https://github.com/Unvanquished/Unvanquished/issues/2 Issue #2] on GitHub for more information.''&lt;br /&gt;
* To hide map geometry, set &amp;lt;code&amp;gt;r_drawworld&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Note that with this set to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, PVS will still be in effect, so it might still be difficult to view your model.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
===Error while exporting from Blender with the MD5 exporter===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Md5_export_error_no_armature.png]]&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | This error displays when the selected object does not have an armature modifier. Any object exported as an md5 needs bones, even if it is static. If you are unsure of how to create a static object with md5, just add an armature, set the playback start and end frame to 1, and add a location or rotation keyframe at frame 1.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Md5_export_error_no_animation.png]]&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | This error displays when there are no keyframes. Follow the abov instructions for exporting a static object with md5.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Md5_export_error_no_material.png]]&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | This error displays when the object does not have a material applied to it. This is required by the script, even though it really does not affect the exported result.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Appearance problems in-game===&lt;br /&gt;
&lt;br /&gt;
====All or part of the mesh appears to be sucked to the center====&lt;br /&gt;
&lt;br /&gt;
''Please note that as of 2012-02-27, the MD5 exporter does not work properly in several more recent versions of Blender. Use Blender 2.59 until this is fixed. See [http://www.katsbits.com/smforum/index.php?topic=167.msg2135#msg2135 the MD5 exporter thread] for more information.''&lt;br /&gt;
&lt;br /&gt;
This can happen for a number of reasons:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There are vertices without weights.&lt;br /&gt;
&amp;lt;p&amp;gt;''Solution'': apply weights to vertices that do not have them. If those verts are not to be animated, weight them to a bone that does not move.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You are using Blender 2.61 and you have bones that have animated positions.&lt;br /&gt;
&amp;lt;p&amp;gt;''Solution'': Use an earlier version of blender until this is fixed in the exporter.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You are using Blender 2.62 and you have bones that are not located at the origin and do not have a parent or have animated positions.&lt;br /&gt;
&amp;lt;p&amp;gt;''Solution'': Again, use an earlier version of blender until this is fixed in the exporter.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;R_LoadMD5: vertex %i requires more than %i weights on surface (%i) in model '%s'&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
This error is displayed in the console in game when a vertex belongs to too many groups.&lt;br /&gt;
&lt;br /&gt;
You can use this script to check your model for this before exporting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Copyright 2012 Nicholas De Cicco. &amp;lt;velociostrich@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
# you may not use this file except in compliance with the License.&lt;br /&gt;
# You may obtain a copy of the License at&lt;br /&gt;
#&lt;br /&gt;
#	http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
#&lt;br /&gt;
# Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
# distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
# See the License for the specific language governing permissions and&lt;br /&gt;
# limitations under the License.&lt;br /&gt;
&lt;br /&gt;
import bpy, math&lt;br /&gt;
from bpy.props import *&lt;br /&gt;
&lt;br /&gt;
MAX_GROUPS_PER_VERT = 4&lt;br /&gt;
&lt;br /&gt;
# Switch to object mode for vertex selection to work&lt;br /&gt;
bpy.ops.object.mode_set(mode='OBJECT')&lt;br /&gt;
&lt;br /&gt;
for obj in bpy.context.selected_objects:&lt;br /&gt;
	# Check to see that the object is a mesh.&lt;br /&gt;
	if obj.type != 'MESH':&lt;br /&gt;
		continue&lt;br /&gt;
&lt;br /&gt;
	# Select verts that belong to too many groups&lt;br /&gt;
	for vertex in obj.data.vertices:&lt;br /&gt;
		if len(vertex.groups) &amp;gt; MAX_GROUPS_PER_VERT:&lt;br /&gt;
			vertex.select = True&lt;br /&gt;
		else:&lt;br /&gt;
			vertex.select = False&lt;br /&gt;
&lt;br /&gt;
# Switch back to edit mode so the user can see any selected verts&lt;br /&gt;
bpy.ops.object.mode_set(mode='EDIT')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Using the Script====&lt;br /&gt;
&lt;br /&gt;
# Select the mesh (or meshes) that you would like to check.&lt;br /&gt;
# Create a new text editor window and text data block.&lt;br /&gt;
# Copy and paste the script into the text editor.&lt;br /&gt;
# Click &amp;quot;Run Script&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once the script has ran, the 3d view will switch to edit mode and any offending vertices will be selected. A handy tip: clicking an individual vertex will reveal which groups it is a member of in the properties shelf.&lt;br /&gt;
&lt;br /&gt;
[[Image:Properties_shelf_vertex_groups.png|frame|center|The vertex group section of the properties shelf]]&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
* [http://www.modwiki.net/wiki/MD5_%28file_format%29 MD5 file format documentation]&lt;br /&gt;
* [http://www.katsbits.com/tools/# Tools for MD5 and other file formats]&lt;br /&gt;
* [http://download.blender.org/release/ Older versions of Blender]&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=654</id>
		<title>Getting the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=654"/>
		<updated>2012-08-26T01:17:27Z</updated>

		<summary type="html">&lt;p&gt;Devhc: s/type/input/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Unvanquished/Unvanquished Unvanquished source code] is hosted on GitHub. You can either download a snapshot of the source code in [https://github.com/Unvanquished/Unvanquished/zipball/master ZIP archive form], or you can use Git to clone the repository.&lt;br /&gt;
&lt;br /&gt;
==Installing Git==&lt;br /&gt;
&lt;br /&gt;
If you already have Git installed, you can skip this step.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
Windows users can acquire Git from the [http://code.google.com/p/msysgit/ MSysGit project]. If you would prefer a graphical front-end, there is [http://code.google.com/p/tortoisegit/ TortoiseGit], but MSysGit must be installed regardless.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
Apple has included Git with Xcode since version 4. You may download [https://developer.apple.com/xcode/ Xcode] from  Apple's developer website. Please note that while XCode 4 was available for a very brief time for 32-bit and Snow Leopard users for a small price ($5 from the Mac App Store), this is no longer the case; it is now free, but available only to 64-bit Lion users. Snow Leopard (10.6) users and prior may now only use XCode 3, which does not include Git. If you are one of these users, you may [http://git-scm.com/download/mac acquire a copy of Git] from its site. A [http://git-scm.com/download/gui/mac selection of GUIs for Git] is also available.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
====Debian &amp;amp; Ubuntu====&lt;br /&gt;
&lt;br /&gt;
Install Git using the package manager:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install git&lt;br /&gt;
&lt;br /&gt;
====Gentoo====&lt;br /&gt;
&lt;br /&gt;
The ebuilds for Unvanquished (games-fps/unvanquished) and the assets (games-fps/unvanquished-data) are available from the [https://github.com/hasufell/hasufell-overlay ''hasufell''] overlay.&lt;br /&gt;
If you don't have layman installed, you can install it with&lt;br /&gt;
&lt;br /&gt;
 $ emerge layman&lt;br /&gt;
&lt;br /&gt;
Then, adding the overlay and installing should be trivial.&lt;br /&gt;
&lt;br /&gt;
 $ layman -a hasufell&lt;br /&gt;
 $ emerge unvanquished&lt;br /&gt;
&lt;br /&gt;
See [https://bugs.gentoo.org/show_bug.cgi?id=419421 the entry on bugs.gentoo.org] for additional comments about the ebuilds.&lt;br /&gt;
&lt;br /&gt;
==Downloading the source==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
Use the following command line:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
This will create a directory called ''Unvanquished''.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
&lt;br /&gt;
Acquiring the source code using the command line is the same as on Linux. Open a Terminal (/Applications/Utilities/Terminal) window and clone the source code like so:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
====Xcode 4====&lt;br /&gt;
&lt;br /&gt;
# Start Xcode.&lt;br /&gt;
# Open the Organizer window (Window &amp;amp;rarr; Organizer or &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Shift&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Command&amp;amp;nbsp;&amp;amp;#x2318;&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;)&lt;br /&gt;
# Click the &amp;quot;Repositories&amp;quot; button on the top bar.&lt;br /&gt;
# Click the &amp;quot;+&amp;quot; button in the lower-left corner, and choose &amp;quot;Checkout or Clone Repository&amp;amp;hellip;&amp;quot;.&lt;br /&gt;
# In the rollout sheet that appears, enter &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt; into the &amp;quot;Location&amp;quot; field, and click &amp;quot;Next&amp;quot;.&lt;br /&gt;
# Enter &amp;quot;Unvanquished&amp;quot; into the &amp;quot;Name&amp;quot; field, ensure that the &amp;quot;Type&amp;quot; combo box is set to &amp;quot;Git&amp;quot;, and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
# You will be prompted where to save the repository. Choose a location and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====TortoiseGIT====&lt;br /&gt;
&lt;br /&gt;
# Make and enter a new folder to store the source code in&lt;br /&gt;
# Right click the inside of the folder &amp;amp;rarr; Git Clone...&lt;br /&gt;
# In the Url textbox enter: &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click ok.&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
Open the MsysGit terminal and input:&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
==Compiling==&lt;br /&gt;
&lt;br /&gt;
After getting the source code, you can [[Compiling the source|compile]] it.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=653</id>
		<title>Compiling the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=653"/>
		<updated>2012-08-26T01:16:57Z</updated>

		<summary type="html">&lt;p&gt;Devhc: s/type/input/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mac OS X==&lt;br /&gt;
&lt;br /&gt;
The preferred way of building Unvanquished on Mac OS X is to use Apple's [https://developer.apple.com/xcode/ XCode] along with [http://www.cmake.org/cmake/resources/software.html CMake]; CMake is used to generate an XCode project file that is then used to compile the code. Note: Xcode currently does not build QVMs due to [https://github.com/Unvanquished/Unvanquished/issues/101 issue 101].&lt;br /&gt;
&lt;br /&gt;
First, you need to [[Getting_the_source|acquire the source code]].&lt;br /&gt;
&lt;br /&gt;
You will also need to build the libraries from source.&lt;br /&gt;
&lt;br /&gt;
Unvanquished requires the following libraries:&lt;br /&gt;
* The jpeg library, version 8 or higher. (Version 6 was known to have problems)&lt;br /&gt;
* Simple DirectMedia Layer (The binary provided by libsdl.org causes graphical corruptions. Compile from source or use homebrew/macports)&lt;br /&gt;
* OpenGL Extension Wrangler Library&lt;br /&gt;
* CuRL&lt;br /&gt;
* GMP&lt;br /&gt;
&lt;br /&gt;
Optional libraries:&lt;br /&gt;
* WebP&lt;br /&gt;
* Theora&lt;br /&gt;
* Speex&lt;br /&gt;
* XVid&lt;br /&gt;
* Vorbis&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
You only need to use one of the following methods (HomeBrew or compiling by hand). Please try and avoid mixing methods as this may produce unexpected results.&lt;br /&gt;
&lt;br /&gt;
====HomeBrew====&lt;br /&gt;
Install [http://mxcl.github.com/homebrew/ HomeBrew] and then run the following command&lt;br /&gt;
&lt;br /&gt;
 $ brew install nettle libjpeg curl sdl webp xvid gmp glew speex libvorbis theora&lt;br /&gt;
&lt;br /&gt;
All the necessary libraries should now have been installed.&lt;br /&gt;
&lt;br /&gt;
====Compiling by hand====&lt;br /&gt;
The following are shell scripts that download, compile, and install various libraries. This is more time consuming then other methods but might be useful if you need more control over your libraries&lt;br /&gt;
&lt;br /&gt;
=====JPEG=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.ijg.org/files/jpegsrc.v8d.tar.gz &amp;gt; jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ tar xvzf jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ cd jpeg-8d&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====The OpenGL Extension Wrangler Library (GLEW)=====&lt;br /&gt;
&lt;br /&gt;
 $ curl -L https://sourceforge.net/projects/glew/files/glew/1.7.0/glew-1.7.0.tgz/download &amp;gt; glew-1.7.0.tgz&lt;br /&gt;
 $ tar xvzf glew-1.7.0.tgz&lt;br /&gt;
 $ cd glew-1.7.0&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Simple DirectMedia Layer (SDL)=====&lt;br /&gt;
&lt;br /&gt;
Do not use the binaries provided by libsdl.org, as these are known to cause issues with gamma and color display. Instead, compile your own:&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15.tar.gz &amp;gt; SDL-1.2.15.tar.gz&lt;br /&gt;
 $ tar xvzf SDL-1.2.15.tar.gz&lt;br /&gt;
 $ cd SDL-1.2.15&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====The GNU MP Bignum Library (libgmp)=====&lt;br /&gt;
&lt;br /&gt;
 $ curl ftp://ftp.gmplib.org/pub/gmp-5.0.5/gmp-5.0.5.tar.bz2 &amp;gt; gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ tar xvjf gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ cd gmp-5.0.5&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Ogg=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz &amp;gt; libogg-1.3.0.tar.gz&lt;br /&gt;
 $ tar xvzf libogg-1.3.0.tar.gz&lt;br /&gt;
 $ cd libogg-1.3.0&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
=====Vorbis=====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz &amp;gt; libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ tar xvzf libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ cd libvorbis-1.3.3&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
===Configuring with CMake===&lt;br /&gt;
&lt;br /&gt;
# Run CMake.&lt;br /&gt;
# Enter the location of the source code.&lt;br /&gt;
# Enter the location in which you would like to build the source code. This should be a different directory.&lt;br /&gt;
# Click &amp;quot;Configure&amp;quot;. You will be prompted as to which generator you would like to use. If you have Xcode installed, choose that. Wait while the configuration process runs. You may have to set the following:&lt;br /&gt;
## If CMake did not find your jpeg headers for some reason, set &amp;lt;code&amp;gt;JPEG_INCLUDE_DIR&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/path/to/Unvanquished/src/libs/jpeg&amp;lt;/code&amp;gt;.&lt;br /&gt;
## You may safely disable &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; to avoid having to compile the library. (At present, the format is not used by any game assets.)&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; to avoid having to compile nettle and hogweed.&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; to avoid having to compile Speex.&lt;br /&gt;
## Uncheck &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; to avoid having to compile Theora or Xvid. (At present, there are not cutscenes or any such that require it.)&lt;br /&gt;
## '''You will probably not be able to compile with the GLSL optimizer enabled; uncheck &amp;lt;code&amp;gt;USE_GLSL_OPTIMIZER&amp;lt;/code&amp;gt;'''&lt;br /&gt;
## If you have selected to generate XCode project files, make the &amp;lt;code&amp;gt;SDLMAIN_LIBRARY&amp;lt;/code&amp;gt; field blank. This option is not available if you have the generator set to Unix makefiles.&lt;br /&gt;
# Click &amp;quot;Generate&amp;quot;.&lt;br /&gt;
# You may now close XCode.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
====With XCode====&lt;br /&gt;
# Either start XCode and open the project file (in the build directory you specified) or double-click the project file in Finder.&lt;br /&gt;
# Open the project file created by CMake, which should be in the build directory you specified.&lt;br /&gt;
# Change the active target to &amp;quot;ALL_BUILD&amp;quot; and click Product&amp;amp;rarr;Build.&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Terminal (Applications &amp;amp;rarr; Utilities &amp;amp;rarr; Terminal).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Input the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are on a multi-core or multi-processor machine, you may speed up the process by passing the &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; argument followed by the number of available cores to &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;; e.g., &amp;lt;code&amp;gt;make -j4&amp;lt;/code&amp;gt;. Note that doing so makes reading error messages more difficult, as multiple instances of the compiler will print to the screen at once, causing information to appear out of order.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing the build===&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
After compiling, you'll have to place the data files in the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; directory in your build directory. [[#Acquiring the Game Files|For download instructions, see below.]]&lt;br /&gt;
&lt;br /&gt;
Your file structure should look as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:Build_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
You may now start the application as such:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386&lt;br /&gt;
&lt;br /&gt;
Note that older machines will not support the new OpenGL 3 renderer, and must be started specifying the &amp;quot;vanilla&amp;quot; (aka &amp;quot;GL&amp;quot;) renderer:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386 +set cl_renderer GL&lt;br /&gt;
&lt;br /&gt;
===Bundling the Application===&lt;br /&gt;
&lt;br /&gt;
====With CPack====&lt;br /&gt;
&lt;br /&gt;
CPack is able to create standalone bundles (as well as many other types of installers). However you must generate the files using Unix Makefiles instead of XCode.&lt;br /&gt;
&lt;br /&gt;
 $ cd /path/to/Unvanquished-build&lt;br /&gt;
 $ cpack -G Bundle&lt;br /&gt;
&lt;br /&gt;
Some warnings will be printed however these can be safely ignored. There should be a file called Unvanquished.dmg in the Unvanquished-build folder.&lt;br /&gt;
&lt;br /&gt;
====Manually====&lt;br /&gt;
&lt;br /&gt;
You'll find the Mac [http://macdylibbundler.sourceforge.net/ dynamic library bundler] to be quite useful (you must generate the files using Unix Makefiles instead of XCode):&lt;br /&gt;
&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/macdylibbundler/files/macdylibbundler/0.4.1/dylibbundler0.4.1.zip/download &amp;gt; dylibbundler0.4.1.zip&lt;br /&gt;
 $ unzip dylibbundler0.4.1.zip&lt;br /&gt;
 $ cd dylibbundler&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
Once you've done that, you can proceed to create the application bundle. Note that these steps assume that you have downloaded the data files to &amp;lt;code&amp;gt;main/&amp;lt;/code&amp;gt; as shown above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git=/path/to/Unvanquished-git-repo&lt;br /&gt;
$ build=/path/to/Unvanquished-build-dir&lt;br /&gt;
$ mkdir -pv Unvanquished.app/Contents/{libs,MacOS,Resources,Frameworks}&lt;br /&gt;
$ cp -r $build/main Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ sips -s format tiff $git/debian/unvanquished.png --out temp.tiff&lt;br /&gt;
$ tiff2icns temp.tiff Unvanquished.app/Contents/Resources/Unvanquished.icns&lt;br /&gt;
$ rm temp.tiff&lt;br /&gt;
$ cp $build/daemon{,ded}.i386 $build/*.dylib Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ cp -r /Library/Frameworks/SDL.framework Unvanquished.app/Contents/Frameworks&lt;br /&gt;
$ install_name_tool -id @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/Frameworks/SDL.framework/Versions/A/SDL&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGLi386.dylib&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGL3i386.dylib&lt;br /&gt;
$ for binary in Unvanquished.app/Contents/MacOS/*.{i386,dylib}; do dylibbundler -b -x $binary -d $dest/Unvanquished.app/Contents/libs/; done&lt;br /&gt;
$ cp /usr/lib/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ chmod +w ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -id @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -change /usr/lib/libGLEW.1.7.0.dylib @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ cat &amp;gt; Unvanquished.app/Contents/Info.plist&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dict&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleDisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleExecutable&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;daemon.i386&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIconFile&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished.icns&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;net.Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleInfoDictionaryVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;6.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundlePackageType&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;APPL&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleShortVersionString&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt;&lt;br /&gt;
^d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;code&amp;gt;^d&amp;lt;/code&amp;gt; indicates pressing &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Ctrl&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;D&amp;lt;/span&amp;gt; on the keyboard.&lt;br /&gt;
&lt;br /&gt;
The contents of the completed application bundle should look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Bundle_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
'''Note''': If you compiled SDL from source, you will not see a directory titled &amp;lt;code&amp;gt;SDL.framework&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&lt;br /&gt;
===Visual Studio===&lt;br /&gt;
&lt;br /&gt;
CMake can generate Visual Studio projects for unvanquished however this feature is relatively new and may have some bugs.&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
# Double click on Visual_Studio32.bat&lt;br /&gt;
# Open build-32/Daemon.sln in Visual Studio 2010.&lt;br /&gt;
# In the two text boxes in the toolbar, select &amp;quot;Release&amp;quot; or &amp;quot;Debug&amp;quot; in the first one and Win32 in the second one&lt;br /&gt;
# Press F5 to build solution and run application, or just use Build &amp;amp;rarr; Build Solution to compile the code.&lt;br /&gt;
&lt;br /&gt;
====Important Notes====&lt;br /&gt;
&lt;br /&gt;
* LLVM is disabled and does not work correctly with CMake generated Visual Studio projects.&lt;br /&gt;
* ncurses is not supported under Visual Studio.&lt;br /&gt;
* The path to the build folder must not have any spaces otherwise generation of QVMs will fail. See [https://github.com/Unvanquished/Unvanquished/issues/102 issue 102]&lt;br /&gt;
* Due to limitations with cmake neither the startup project nor the working directory can be specified. These must be manually set to the following values for debugging the client under Visual Studio&lt;br /&gt;
** Right click on client and select &amp;quot;Set as StartUp project&amp;quot;.&lt;br /&gt;
** Right click on client, select properties, select Debugging and set &amp;quot;Working Directory&amp;quot; to $(TargetPath)\..&lt;br /&gt;
&lt;br /&gt;
===MinGW===&lt;br /&gt;
Unvanquished is supported under MinGW. The build process should be fairly similar to the Linux instructions.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: this may be incomplete --&amp;gt;&lt;br /&gt;
====Debian/Ubuntu====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libcurl4-gnutls-dev libfreetype6-dev libglew1.5-dev \&lt;br /&gt;
   libgmp3-dev libjpeg8-dev libncurses5-dev libogg-dev libopenal-dev \&lt;br /&gt;
   libpng12-dev libsdl1.2-dev libvorbis-dev zlib1g-dev nettle-dev \&lt;br /&gt;
   libwebp-dev libspeexdsp-dev libtheora-dev&lt;br /&gt;
&lt;br /&gt;
Actual dev package names may vary, e.g. libgmp-dev instead of libgmp3-dev and libglew-dev or libglew1.7-dev instead of libglew1.5-dev.&lt;br /&gt;
&lt;br /&gt;
Since we have a debian directory in the source, you can also to check what's needed then install the listed packages (choosing from alternatives as needed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ dpkg-checkbuilddeps&lt;br /&gt;
 …&lt;br /&gt;
 $ sudo apt-get install &amp;lt;var&amp;gt;package(s)&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If dpkg-checkbuilddeps produces no output, you have all necessary build dependencies. Also, debhelper's only needed if you're building .debs.&lt;br /&gt;
&lt;br /&gt;
====Gentoo====&lt;br /&gt;
&lt;br /&gt;
 $ emerge curl freetype glew gmp jpeg ncurses libogg openal libpng libsdl libvorbis zlib&lt;br /&gt;
&lt;br /&gt;
===Configuring the code with CMake===&lt;br /&gt;
&lt;br /&gt;
After you have [[Getting the source|acquired the source code]], you can proceed to compile. Unvanquished uses CMake, so you must have that installed. &lt;br /&gt;
&lt;br /&gt;
====Using ccmake (curses-based front-end)====&lt;br /&gt;
&lt;br /&gt;
On Debian or Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-curses-gui&lt;br /&gt;
&lt;br /&gt;
On Gentoo you should set the '''ncurses''' USE flag either globally or individually, just for cmake.&lt;br /&gt;
To add the USE flag globally, edit the USE array in /etc/make.conf for it to include '''ncurses'''.&lt;br /&gt;
To only install cmake with ncurses functionality, you could do the following:&lt;br /&gt;
&lt;br /&gt;
 $ echo 'dev-util/cmake ncurses' &amp;gt;&amp;gt; /etc/portage/package.use &amp;amp;&amp;amp; emerge cmake&lt;br /&gt;
&lt;br /&gt;
Note that in Ubuntu, &amp;lt;code&amp;gt;cmake-curses-gui&amp;lt;/code&amp;gt; is in Universe, which you may have to enable with &amp;lt;code&amp;gt;software-properties-gtk&amp;lt;/code&amp;gt;. Make sure to reload the software sources with &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt; afterwards.&lt;br /&gt;
&lt;br /&gt;
Next, configure the codebase.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir build&lt;br /&gt;
 $ cd build&lt;br /&gt;
 $ ccmake ..&lt;br /&gt;
&lt;br /&gt;
Or, in Debian or Ubuntu, you can build a package (but you'll need to have devscripts and fakeroot installed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ fakeroot dpkg-buildpackage -b -uc&lt;br /&gt;
 $ sudo dpkg -i &amp;lt;var&amp;gt;../unvanquished_*.deb&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once in &amp;lt;code&amp;gt;ccmake&amp;lt;/code&amp;gt;, use the following keys:&lt;br /&gt;
&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt; to configure. If an error occurs during this phase, make note of it and press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;e&amp;lt;/span&amp;gt; to dismiss it.&lt;br /&gt;
* Use the up and down arrow keys to navigate the compilation options.&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to enable or disable boolean options (i.e., on/off) or to edit textual options.&lt;br /&gt;
** Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Esc&amp;lt;/span&amp;gt; when editing a textual option to cancel the change.&lt;br /&gt;
&lt;br /&gt;
Once you have finished the configuration process, press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; again, then &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the makefile.&lt;br /&gt;
&lt;br /&gt;
====Using cmake-qt-gui (graphical front-end)====&lt;br /&gt;
&lt;br /&gt;
This graphical front end for cmake has its own package you must install:&lt;br /&gt;
&lt;br /&gt;
=====Debian/Ubuntu=====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-qt-gui&lt;br /&gt;
&lt;br /&gt;
=====Gentoo=====&lt;br /&gt;
&lt;br /&gt;
With the '''qt4''' USE flag enabled:&lt;br /&gt;
&lt;br /&gt;
 $ emerge cmake&lt;br /&gt;
&lt;br /&gt;
Once installed, run with &amp;lt;code&amp;gt;cmake-gui&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cmake-qt-gui.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
# Set the path where you have the source code downloaded.&lt;br /&gt;
# Set the path where you would like to build the engine. This may be the same directory if you wish.&lt;br /&gt;
# Click 'Configure'.&lt;br /&gt;
# Click 'Generate'.&lt;br /&gt;
&lt;br /&gt;
====Unnecessary libraries====&lt;br /&gt;
&lt;br /&gt;
Regardless of which front-end to cmake you use, you may want to disable some libraries that are not strictly necessary:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; &amp;amp;mdash; Some maps use WebP to store their textures. Currently this should have little impact on gameplay but more maps will likely use this format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_OPENAL&amp;lt;/code&amp;gt; &amp;amp;mdash; If this is disabled, SDL is used instead for sound.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CODEC_VORBIS&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause certain sound effects (those using the &amp;lt;code&amp;gt;.ogg&amp;lt;/code&amp;gt; format) not to play. At present, this has only a minor impact on gameplay, but more and more sounds will likely use the format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CURSES&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause the external (not in-game) console to not use curses; it will not be scrollable and will be similar to the console in the original Tremulous. This does in no way affect gameplay.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Theora.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Xvid.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_VOIP&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this removes VOIP support. Alternatively enabling &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; will use the libraries distributed with Unvanquished for VoIP&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; &amp;amp;mdash; Enable this to use the crypto libraries provided by Unvanquished.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ make -j4&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; switch to make allows you to speed up the compilation process by running it in multiple threads; set the number following this to the number of cores your processor(s) have.&lt;br /&gt;
&lt;br /&gt;
===Acquiring the Game Files===&lt;br /&gt;
&lt;br /&gt;
The game files are not in the Git repository, and must be downloaded separately.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ cd main&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak0.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak1.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak2.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak3.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak4.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Map%20Pack/maps.7z/download&lt;br /&gt;
&lt;br /&gt;
On FreeBSD, use &amp;lt;code&amp;gt;fetch -r&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt;. You can also get the pak files in this way (requires cURL):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir -p ~/.Unvanquished/main&lt;br /&gt;
 $ ./download-pk3.sh ~/.Unvanquished/main&lt;br /&gt;
&lt;br /&gt;
The maps archive file isn't strictly necessary: if you don't have a particular map, the game will, by default, download missing files for you.&lt;br /&gt;
&lt;br /&gt;
Now you can proceed to [[running the game]].&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
===CMake cannot locate Newton===&lt;br /&gt;
&lt;br /&gt;
If CMake cannot find Newton, you'll need to set it up yourself.&lt;br /&gt;
&lt;br /&gt;
It should be in &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;/path/to/Unvanquished&amp;lt;/var&amp;gt;/src/libs/libnewton/libs/&amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt;/libNewton.so&amp;lt;/code&amp;gt;.&lt;br /&gt;
Be sure to replace &amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt; with the proper directory name.&lt;br /&gt;
&lt;br /&gt;
Use CMake as before to change the &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt; build setting to the said path:&lt;br /&gt;
&lt;br /&gt;
# Start the CMake configurator:&amp;lt;pre&amp;gt;$ ccmake ..&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Scroll down and highlight &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to begin editing and input in the path.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; to configure and &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the new makefiles.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Q&amp;lt;/span&amp;gt; to quit.&lt;br /&gt;
# Recompile the source:&amp;lt;pre&amp;gt;$ make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The C Compiler is not able to compile a simple test program===&lt;br /&gt;
&lt;br /&gt;
When attempting to generate a solution for Xcode CMake fails with the following error&lt;br /&gt;
  -- Check for working C compiler using: Xcode -- broken&lt;br /&gt;
  CMake Error at /Applications/CMake 2.8-8.app/Contents/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):&lt;br /&gt;
   The C compiler &amp;quot;/usr/bin/gcc&amp;quot; is not able to compile a simple test program.&lt;br /&gt;
  &lt;br /&gt;
    It fails with the following output:&lt;br /&gt;
  &lt;br /&gt;
     Change Dir: /Users/danielmaloney/Documents/Unvanquished/build-xcode/CMakeFiles/CMakeTmp&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &lt;br /&gt;
    Run Build Command:/Applications/CMake\ 2.8-8.app/Contents/bin/cmakexbuild&lt;br /&gt;
    -project CMAKE_TRY_COMPILE.xcodeproj build -target&lt;br /&gt;
    cmTryCompileExec1400153232 -configuration Debug&lt;br /&gt;
  &lt;br /&gt;
    Error: No developer directory found at /Developer.  Run&lt;br /&gt;
    /usr/bin/xcode-select to update the developer directory path.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
    CMake will not be able to correctly generate this project.&lt;br /&gt;
  Call Stack (most recent call first):&lt;br /&gt;
    CMakeLists.txt:19 (project)&lt;br /&gt;
&lt;br /&gt;
This is due to Xcode 4.3 having a different directory structure to previous versions. Simply running the following command will correct this error:&lt;br /&gt;
 sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Wiki_project_resources&amp;diff=478</id>
		<title>Wiki project resources</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Wiki_project_resources&amp;diff=478"/>
		<updated>2012-07-01T01:48:27Z</updated>

		<summary type="html">&lt;p&gt;Devhc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At present, the wiki needs a lot of work.&lt;br /&gt;
&lt;br /&gt;
At the time of this writing, most article writers need to learn about web design ergonomics.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: expand U***********, as i am forbidden to use the U word --&amp;gt;&lt;br /&gt;
Various contents, including ToDo lists, screenshots, release data files, large text messages, and other shared files are hosted at foreign websites. They should be moved to u***********.net, for which sufficient serving functionality should be installed. The priorities for these are based on the removal of ''web browsing analytics'', the ease of installation.&lt;br /&gt;
&lt;br /&gt;
==Pages in need of work==&lt;br /&gt;
&lt;br /&gt;
Aside from these pages, please also see the [[Special:WantedPages|the list of wanted pages]].&lt;br /&gt;
&lt;br /&gt;
===Technical documentation===&lt;br /&gt;
&lt;br /&gt;
* [[List of cvars]] and their documentation&lt;br /&gt;
* [[Creating custom keybinds]]&lt;br /&gt;
* [[Mapping]]&lt;br /&gt;
* [[Modeling Guide]]&lt;br /&gt;
* [[Music and sounds]]&lt;br /&gt;
&lt;br /&gt;
===Gameplay===&lt;br /&gt;
&lt;br /&gt;
* [[Aliens]]&lt;br /&gt;
** Buildables:&lt;br /&gt;
*** [[Egg]]&lt;br /&gt;
*** [[Overmind]]&lt;br /&gt;
*** [[Acid Tube]]&lt;br /&gt;
*** [[Hive]]&lt;br /&gt;
*** [[Trapper]]&lt;br /&gt;
*** [[Barricade]]&lt;br /&gt;
** Classes:&lt;br /&gt;
*** [[Dretch]]&lt;br /&gt;
*** [[Granger]]&lt;br /&gt;
*** [[Basilisk]]&lt;br /&gt;
*** [[Marauder]]&lt;br /&gt;
*** [[Dragoon]]&lt;br /&gt;
*** [[Tyrant]]&lt;br /&gt;
* [[Humans]]&lt;br /&gt;
** Upgrades/Armor:&lt;br /&gt;
*** [[Jetpack]]&lt;br /&gt;
*** [[Helmet]]&lt;br /&gt;
*** [[Battery Pack]]&lt;br /&gt;
*** [[Battlesuit]]&lt;br /&gt;
** Weapons:&lt;br /&gt;
*** [[Construction Kit]]&lt;br /&gt;
*** [[Blaster]]&lt;br /&gt;
*** [[Rifle]]&lt;br /&gt;
*** [[Pain Saw]]&lt;br /&gt;
*** [[Shotgun]]&lt;br /&gt;
*** [[Las Gun]]&lt;br /&gt;
*** [[Mass Driver]]&lt;br /&gt;
*** [[Chaingun]]&lt;br /&gt;
*** [[Plasma Rifle]]&lt;br /&gt;
*** [[Lucifer Cannon]]&lt;br /&gt;
** Buildables:&lt;br /&gt;
*** [[Telenode]]&lt;br /&gt;
*** [[Reactor]]&lt;br /&gt;
*** [[Machinegun Turret]]&lt;br /&gt;
*** [[Armory]]&lt;br /&gt;
*** [[Medistation]]&lt;br /&gt;
*** [[Defense Computer]]&lt;br /&gt;
*** [[Tesla Generator]]&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Wiki_project_resources&amp;diff=477</id>
		<title>Wiki project resources</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Wiki_project_resources&amp;diff=477"/>
		<updated>2012-07-01T01:34:43Z</updated>

		<summary type="html">&lt;p&gt;Devhc: /* Technical documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At present, the wiki needs a lot of work.&lt;br /&gt;
&lt;br /&gt;
At the time of this writing, most article writers need to learn about web design ergonomics.&lt;br /&gt;
&lt;br /&gt;
==Pages in need of work==&lt;br /&gt;
&lt;br /&gt;
Aside from these pages, please also see the [[Special:WantedPages|the list of wanted pages]].&lt;br /&gt;
&lt;br /&gt;
===Technical documentation===&lt;br /&gt;
&lt;br /&gt;
* [[List of cvars]] and their documentation&lt;br /&gt;
* [[Creating custom keybinds]]&lt;br /&gt;
* [[Mapping]]&lt;br /&gt;
* [[Modeling Guide]]&lt;br /&gt;
* [[Music and sounds]]&lt;br /&gt;
&lt;br /&gt;
===Gameplay===&lt;br /&gt;
&lt;br /&gt;
* [[Aliens]]&lt;br /&gt;
** Buildables:&lt;br /&gt;
*** [[Egg]]&lt;br /&gt;
*** [[Overmind]]&lt;br /&gt;
*** [[Acid Tube]]&lt;br /&gt;
*** [[Hive]]&lt;br /&gt;
*** [[Trapper]]&lt;br /&gt;
*** [[Barricade]]&lt;br /&gt;
** Classes:&lt;br /&gt;
*** [[Dretch]]&lt;br /&gt;
*** [[Granger]]&lt;br /&gt;
*** [[Basilisk]]&lt;br /&gt;
*** [[Marauder]]&lt;br /&gt;
*** [[Dragoon]]&lt;br /&gt;
*** [[Tyrant]]&lt;br /&gt;
* [[Humans]]&lt;br /&gt;
** Upgrades/Armor:&lt;br /&gt;
*** [[Jetpack]]&lt;br /&gt;
*** [[Helmet]]&lt;br /&gt;
*** [[Battery Pack]]&lt;br /&gt;
*** [[Battlesuit]]&lt;br /&gt;
** Weapons:&lt;br /&gt;
*** [[Construction Kit]]&lt;br /&gt;
*** [[Blaster]]&lt;br /&gt;
*** [[Rifle]]&lt;br /&gt;
*** [[Pain Saw]]&lt;br /&gt;
*** [[Shotgun]]&lt;br /&gt;
*** [[Las Gun]]&lt;br /&gt;
*** [[Mass Driver]]&lt;br /&gt;
*** [[Chaingun]]&lt;br /&gt;
*** [[Plasma Rifle]]&lt;br /&gt;
*** [[Lucifer Cannon]]&lt;br /&gt;
** Buildables:&lt;br /&gt;
*** [[Telenode]]&lt;br /&gt;
*** [[Reactor]]&lt;br /&gt;
*** [[Machinegun Turret]]&lt;br /&gt;
*** [[Armory]]&lt;br /&gt;
*** [[Medistation]]&lt;br /&gt;
*** [[Defense Computer]]&lt;br /&gt;
*** [[Tesla Generator]]&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Wiki_project_resources&amp;diff=476</id>
		<title>Wiki project resources</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Wiki_project_resources&amp;diff=476"/>
		<updated>2012-07-01T01:34:28Z</updated>

		<summary type="html">&lt;p&gt;Devhc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At present, the wiki needs a lot of work.&lt;br /&gt;
&lt;br /&gt;
At the time of this writing, most article writers need to learn about web design ergonomics.&lt;br /&gt;
&lt;br /&gt;
==Pages in need of work==&lt;br /&gt;
&lt;br /&gt;
Aside from these pages, please also see the [[Special:WantedPages|the list of wanted pages]].&lt;br /&gt;
&lt;br /&gt;
===Technical documentation===&lt;br /&gt;
&lt;br /&gt;
* [[List of cvars and their documentation]]&lt;br /&gt;
* [[Creating custom keybinds]]&lt;br /&gt;
* [[Mapping]]&lt;br /&gt;
* [[Modeling Guide]]&lt;br /&gt;
* [[Music and sounds]]&lt;br /&gt;
&lt;br /&gt;
===Gameplay===&lt;br /&gt;
&lt;br /&gt;
* [[Aliens]]&lt;br /&gt;
** Buildables:&lt;br /&gt;
*** [[Egg]]&lt;br /&gt;
*** [[Overmind]]&lt;br /&gt;
*** [[Acid Tube]]&lt;br /&gt;
*** [[Hive]]&lt;br /&gt;
*** [[Trapper]]&lt;br /&gt;
*** [[Barricade]]&lt;br /&gt;
** Classes:&lt;br /&gt;
*** [[Dretch]]&lt;br /&gt;
*** [[Granger]]&lt;br /&gt;
*** [[Basilisk]]&lt;br /&gt;
*** [[Marauder]]&lt;br /&gt;
*** [[Dragoon]]&lt;br /&gt;
*** [[Tyrant]]&lt;br /&gt;
* [[Humans]]&lt;br /&gt;
** Upgrades/Armor:&lt;br /&gt;
*** [[Jetpack]]&lt;br /&gt;
*** [[Helmet]]&lt;br /&gt;
*** [[Battery Pack]]&lt;br /&gt;
*** [[Battlesuit]]&lt;br /&gt;
** Weapons:&lt;br /&gt;
*** [[Construction Kit]]&lt;br /&gt;
*** [[Blaster]]&lt;br /&gt;
*** [[Rifle]]&lt;br /&gt;
*** [[Pain Saw]]&lt;br /&gt;
*** [[Shotgun]]&lt;br /&gt;
*** [[Las Gun]]&lt;br /&gt;
*** [[Mass Driver]]&lt;br /&gt;
*** [[Chaingun]]&lt;br /&gt;
*** [[Plasma Rifle]]&lt;br /&gt;
*** [[Lucifer Cannon]]&lt;br /&gt;
** Buildables:&lt;br /&gt;
*** [[Telenode]]&lt;br /&gt;
*** [[Reactor]]&lt;br /&gt;
*** [[Machinegun Turret]]&lt;br /&gt;
*** [[Armory]]&lt;br /&gt;
*** [[Medistation]]&lt;br /&gt;
*** [[Defense Computer]]&lt;br /&gt;
*** [[Tesla Generator]]&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=475</id>
		<title>Compiling the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=475"/>
		<updated>2012-07-01T01:30:35Z</updated>

		<summary type="html">&lt;p&gt;Devhc: nah, this is OS X&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mac OS X==&lt;br /&gt;
&lt;br /&gt;
The preferred way of building Unvanquished on Mac OS X is to use Apple's [https://developer.apple.com/xcode/ XCode] along with [http://www.cmake.org/cmake/resources/software.html CMake]; CMake is used to generate an XCode project file that is then used to compile the code.&lt;br /&gt;
&lt;br /&gt;
First, you need to [[Getting_the_source|acquire the source code]].&lt;br /&gt;
&lt;br /&gt;
You may use this [http://home.comcast.net/~chet102103/compile.sh script] to perform these tasks. If you've downloaded the source to a folder named ''Unvanquished'' in the current directory, a typical invocation would look like this:&lt;br /&gt;
&lt;br /&gt;
 $ ./compile.sh --bundle --compile -s Unvanquished --build Unvanquished-build --bundle-dest .&lt;br /&gt;
&lt;br /&gt;
You will also need to build the libraries from source.&lt;br /&gt;
&lt;br /&gt;
Unvanquished requires the following libraries:&lt;br /&gt;
* The jpeg library, version 8 or higher. (Version 6 was known to have problems)&lt;br /&gt;
* Simple DirectMedia Layer&lt;br /&gt;
* OpenGL Extension Wrangler Library&lt;br /&gt;
&lt;br /&gt;
Optional libraries:&lt;br /&gt;
* WebP&lt;br /&gt;
* Theora&lt;br /&gt;
* Speex&lt;br /&gt;
* XVid&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
The following are shell scripts that download, compile, and install various libraries.&lt;br /&gt;
&lt;br /&gt;
====JPEG====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.ijg.org/files/jpegsrc.v8d.tar.gz &amp;gt; jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ tar xvzf jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ cd jpeg-8d&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====The OpenGL Extension Wrangler Library (GLEW)====&lt;br /&gt;
&lt;br /&gt;
 $ curl -L https://sourceforge.net/projects/glew/files/glew/1.7.0/glew-1.7.0.tgz/download &amp;gt; glew-1.7.0.tgz&lt;br /&gt;
 $ tar xvzf glew-1.7.0.tgz&lt;br /&gt;
 $ cd glew-1.7.0&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Simple DirectMedia Layer (SDL)====&lt;br /&gt;
&lt;br /&gt;
At present, there are binaries for SDL.&lt;br /&gt;
&lt;br /&gt;
Intel systems running 10.5 or higher:&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15.dmg &amp;gt; SDL-1.2.15.dmg&lt;br /&gt;
 $ hdiutil attach SDL-1.2.15.dmg&lt;br /&gt;
 $ sudo cp -r /Volumes/SDL/SDL.framework /Library/Frameworks&lt;br /&gt;
 $ hdiutil detach /Volumes/SDL&lt;br /&gt;
&lt;br /&gt;
Intel or PPC systems running 10.4 or higher:&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15-OSX10.4.dmg &amp;gt; SDL-1.2.15-OSX10.4.dmg&lt;br /&gt;
 $ hdiutil attach SDL-1.2.15-OSX10.4.dmg&lt;br /&gt;
 $ sudo cp -r /Volumes/SDL/SDL.framework /Library/Frameworks&lt;br /&gt;
 $ hdiutil detach /Volumes/SDL&lt;br /&gt;
&lt;br /&gt;
====The GNU MP Bignum Library (libgmp)====&lt;br /&gt;
&lt;br /&gt;
 $ curl ftp://ftp.gmplib.org/pub/gmp-5.0.5/gmp-5.0.5.tar.bz2 &amp;gt; gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ tar xvjf gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ cd gmp-5.0.5&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Ogg====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz &amp;gt; libogg-1.3.0.tar.gz&lt;br /&gt;
 $ tar xvzf libogg-1.3.0.tar.gz&lt;br /&gt;
 $ cd libogg-1.3.0&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Vorbis====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz &amp;gt; libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ tar xvzf libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ cd libvorbis-1.3.3&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
===Configuring with CMake===&lt;br /&gt;
&lt;br /&gt;
# Run CMake.&lt;br /&gt;
# Enter the location of the source code.&lt;br /&gt;
# Enter the location in which you would like to build the source code. This should be a different directory.&lt;br /&gt;
# Click &amp;quot;Configure&amp;quot;. You will be prompted as to which generator you would like to use. If you have Xcode installed, choose that. Wait while the configuration process runs. You may have to set the following:&lt;br /&gt;
## If CMake did not find your jpeg headers for some reason, set &amp;lt;code&amp;gt;JPEG_INCLUDE_DIR&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/path/to/Unvanquished/src/libs/jpeg&amp;lt;/code&amp;gt;.&lt;br /&gt;
## You may safely disable &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; to avoid having to compile the library. (At present, the format is not used by any game assets.)&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; to avoid having to compile nettle and hogweed.&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; to avoid having to compile Speex.&lt;br /&gt;
## Uncheck &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; to avoid having to compile Theora or Xvid. (At present, there are not cutscenes or any such that require it.)&lt;br /&gt;
## '''You will probably not be able to compile with the GLSL optimizer enabled; uncheck &amp;lt;code&amp;gt;USE_GLSL_OPTIMIZER&amp;lt;/code&amp;gt;'''&lt;br /&gt;
## If you have selected to generate XCode project files, make the &amp;lt;code&amp;gt;SDLMAIN_LIBRARY&amp;lt;/code&amp;gt; field blank. This option is not available if you have the generator set to Unix makefiles.&lt;br /&gt;
# Click &amp;quot;Generate&amp;quot;.&lt;br /&gt;
# You may now close XCode.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
====With XCode====&lt;br /&gt;
# Either start XCode and open the project file (in the build directory you specified) or double-click the project file in Finder.&lt;br /&gt;
# Open the project file created by CMake, which should be in the build directory you specified.&lt;br /&gt;
# Change the active target to &amp;quot;ALL_BUILD&amp;quot; and click Product&amp;amp;rarr;Build.&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Terminal (Applications &amp;amp;rarr; Utilities &amp;amp;rarr; Terminal).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Type the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are on a multi-core or multi-processor machine, you may speed up the process by passing the &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; argument followed by the number of available cores to &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;; e.g., &amp;lt;code&amp;gt;make -j4&amp;lt;/code&amp;gt;. Note that doing so makes reading error messages more difficult, as multiple instances of the compiler will print to the screen at once, causing information to appear out of order.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing the build===&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
After compiling, you'll have to place the data files in the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; directory in your build directory. [[#Acquiring the Game Files|For download instructions, see below.]]&lt;br /&gt;
&lt;br /&gt;
Your file structure should look as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:Build_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
You may now start the application as such:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386&lt;br /&gt;
&lt;br /&gt;
Note that older machines will not support the new OpenGL 3 renderer, and must be started specifying the &amp;quot;vanilla&amp;quot; (aka &amp;quot;GL&amp;quot;) renderer:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386 +set cl_renderer GL&lt;br /&gt;
&lt;br /&gt;
===Bundling the Application===&lt;br /&gt;
&lt;br /&gt;
====With CPack====&lt;br /&gt;
&lt;br /&gt;
CPack is able to create standalone bundles (as well as many other types of installers). However you must generate the files using Unix Makefiles instead of XCode.&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ cpack -G Bundle&lt;br /&gt;
Some warnings will be printed however these can be safely ignored. There should be a file called Unvanquished.dmg in the Unvanquished-build folder.&lt;br /&gt;
&lt;br /&gt;
====Manually====&lt;br /&gt;
&lt;br /&gt;
You'll find the Mac [http://macdylibbundler.sourceforge.net/ dynamic library bundler] to be quite useful (you must generate the files using Unix Makefiles instead of XCode):&lt;br /&gt;
&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/macdylibbundler/files/macdylibbundler/0.4.1/dylibbundler0.4.1.zip/download &amp;gt; dylibbundler0.4.1.zip&lt;br /&gt;
 $ unzip dylibbundler0.4.1.zip&lt;br /&gt;
 $ cd dylibbundler&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
Once you've done that, you can proceed to create the application bundle. Note that these steps assume that you have downloaded the data files to &amp;lt;code&amp;gt;main/&amp;lt;/code&amp;gt; as shown above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git=/path/to/Unvanquished-git-repo&lt;br /&gt;
$ build=/path/to/Unvanquished-build-dir&lt;br /&gt;
$ mkdir -pv Unvanquished.app/Contents/{libs,MacOS,Resources,Frameworks}&lt;br /&gt;
$ cp -r $build/main Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ sips -s format tiff $git/debian/unvanquished.png --out temp.tiff&lt;br /&gt;
$ tiff2icns temp.tiff Unvanquished.app/Contents/Resources/Unvanquished.icns&lt;br /&gt;
$ rm temp.tiff&lt;br /&gt;
$ cp $build/daemon{,ded}.i386 $build/*.dylib Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ cp -r /Library/Frameworks/SDL.framework Unvanquished.app/Contents/Frameworks&lt;br /&gt;
$ install_name_tool -id @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/Frameworks/SDL.framework/Versions/A/SDL&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGLi386.dylib&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGL3i386.dylib&lt;br /&gt;
$ for binary in Unvanquished.app/Contents/MacOS/*.{i386,dylib}; do dylibbundler -b -x $binary -d $dest/Unvanquished.app/Contents/libs/; done&lt;br /&gt;
$ cp /usr/lib/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ chmod +w ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -id @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -change /usr/lib/libGLEW.1.7.0.dylib @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ cat &amp;gt; Unvanquished.app/Contents/Info.plist&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dict&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleDisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleExecutable&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;daemon.i386&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIconFile&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished.icns&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;net.Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleInfoDictionaryVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;6.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundlePackageType&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;APPL&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleShortVersionString&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt;&lt;br /&gt;
^d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;code&amp;gt;^d&amp;lt;/code&amp;gt; indicates pressing &amp;lt;span class=&amp;quot;key&amp;quot;&amp;gt;Ctrl&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;key&amp;quot;&amp;gt;D&amp;lt;/span&amp;gt; on the keyboard.&lt;br /&gt;
&lt;br /&gt;
The contents of the completed application bundle should look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Bundle_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&lt;br /&gt;
===Visual Studio===&lt;br /&gt;
&lt;br /&gt;
CMake can generate Visual Studio projects for unvanquished however this feature is relatively new and may have some bugs.&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
# Double click on Visual_Studio32.bat&lt;br /&gt;
# Open build-32/Daemon.sln in Visual Studio 2010.&lt;br /&gt;
# In the two text boxes in the toolbar, select &amp;quot;Release&amp;quot; or &amp;quot;Debug&amp;quot; in the first one and Win32 in the second one&lt;br /&gt;
# Press F5 to build solution and run application, or just use Build &amp;amp;rarr; Build Solution to compile the code.&lt;br /&gt;
&lt;br /&gt;
====Important Notes====&lt;br /&gt;
&lt;br /&gt;
* The CMake script currently only supports 32 bit builds however this will change in the future&lt;br /&gt;
* QVM, LLVM and glsl-optimizer are disabled and probably do not work correctly with CMake generated Visual Studio projects.&lt;br /&gt;
* ncurses is not supported under Visual Studio.&lt;br /&gt;
&lt;br /&gt;
===MinGW===&lt;br /&gt;
Unvanquished is supported under MinGW. The build process should be fairly similar to the Linux instructions.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: this may be incomplete --&amp;gt;&lt;br /&gt;
====Debian/Ubuntu====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libcurl4-gnutls-dev libfreetype6-dev libglew1.5-dev \&lt;br /&gt;
   libgmp3-dev libjpeg8-dev libncurses5-dev libogg-dev libopenal-dev \&lt;br /&gt;
   libpng12-dev libsdl1.2-dev libvorbis-dev zlib1g-dev nettle-dev \&lt;br /&gt;
   libwebp-dev libspeexdsp-dev libtheora-dev&lt;br /&gt;
&lt;br /&gt;
Actual dev package names may vary, e.g. libgmp-dev instead of libgmp3-dev and libglew-dev or libglew1.7-dev instead of libglew1.5-dev.&lt;br /&gt;
&lt;br /&gt;
Since we have a debian directory in the source, you can also to check what's needed then install the listed packages (choosing from alternatives as needed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ dpkg-checkbuilddeps&lt;br /&gt;
 …&lt;br /&gt;
 $ sudo apt-get install &amp;lt;var&amp;gt;package(s)&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If dpkg-checkbuilddeps produces no output, you have all necessary build dependencies. Also, debhelper's only needed if you're building .debs.&lt;br /&gt;
&lt;br /&gt;
====Gentoo====&lt;br /&gt;
&lt;br /&gt;
 $ emerge curl freetype glew gmp jpeg ncurses libogg openal libpng libsdl libvorbis zlib&lt;br /&gt;
&lt;br /&gt;
===Configuring the code with CMake===&lt;br /&gt;
&lt;br /&gt;
After you have [[Getting the source|acquired the source code]], you can proceed to compile. Unvanquished uses CMake, so you must have that installed. &lt;br /&gt;
&lt;br /&gt;
====Using ccmake (curses-based front-end)====&lt;br /&gt;
&lt;br /&gt;
On Debian or Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-curses-gui&lt;br /&gt;
&lt;br /&gt;
On Gentoo you should set the '''ncurses''' USE flag either globally or individually, just for cmake.&lt;br /&gt;
To add the USE flag globally, edit the USE array in /etc/make.conf for it to include '''ncurses'''.&lt;br /&gt;
To only install cmake with ncurses functionality, you could do the following:&lt;br /&gt;
&lt;br /&gt;
 $ echo 'dev-util/cmake ncurses' &amp;gt;&amp;gt; /etc/portage/package.use &amp;amp;&amp;amp; emerge cmake&lt;br /&gt;
&lt;br /&gt;
Note that in Ubuntu, &amp;lt;code&amp;gt;cmake-curses-gui&amp;lt;/code&amp;gt; is in Universe, which you may have to enable with &amp;lt;code&amp;gt;software-properties-gtk&amp;lt;/code&amp;gt;. Make sure to reload the software sources with &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt; afterwards.&lt;br /&gt;
&lt;br /&gt;
Next, configure the codebase.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir build&lt;br /&gt;
 $ cd build&lt;br /&gt;
 $ ccmake ..&lt;br /&gt;
&lt;br /&gt;
Or, in Debian or Ubuntu, you can build a package (but you'll need to have devscripts and fakeroot installed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ fakeroot dpkg-buildpackage -b -uc&lt;br /&gt;
 $ sudo dpkg -i &amp;lt;var&amp;gt;../unvanquished_*.deb&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once in &amp;lt;code&amp;gt;ccmake&amp;lt;/code&amp;gt;, use the following keys:&lt;br /&gt;
&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt; to configure. If an error occurs during this phase, make note of it and press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;e&amp;lt;/span&amp;gt; to dismiss it.&lt;br /&gt;
* Use the up and down arrow keys to navigate the compilation options.&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to enable or disable boolean options (i.e., on/off) or to edit textual options.&lt;br /&gt;
** Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Esc&amp;lt;/span&amp;gt; when editing a textual option to cancel the change.&lt;br /&gt;
&lt;br /&gt;
Once you have finished the configuration process, press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; again, then &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the makefile.&lt;br /&gt;
&lt;br /&gt;
====Using cmake-qt-gui (graphical front-end)====&lt;br /&gt;
&lt;br /&gt;
This graphical front end for cmake has its own package you must install:&lt;br /&gt;
&lt;br /&gt;
=====Debian/Ubuntu=====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-qt-gui&lt;br /&gt;
&lt;br /&gt;
=====Gentoo=====&lt;br /&gt;
&lt;br /&gt;
With the '''qt4''' USE flag enabled:&lt;br /&gt;
&lt;br /&gt;
 $ emerge cmake&lt;br /&gt;
&lt;br /&gt;
Once installed, run with &amp;lt;code&amp;gt;cmake-gui&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cmake-qt-gui.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
# Set the path where you have the source code downloaded.&lt;br /&gt;
# Set the path where you would like to build the engine. This may be the same directory if you wish.&lt;br /&gt;
# Click 'Configure'.&lt;br /&gt;
# Click 'Generate'.&lt;br /&gt;
&lt;br /&gt;
====Unnecessary libraries====&lt;br /&gt;
&lt;br /&gt;
Regardless of which front-end to cmake you use, you may want to disable some libraries that are not strictly necessary:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; &amp;amp;mdash; Some maps use WebP to store their textures. Currently this should have little impact on gameplay but more maps will likely use this format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_OPENAL&amp;lt;/code&amp;gt; &amp;amp;mdash; If this is disabled, SDL is used instead for sound.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CODEC_VORBIS&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause certain sound effects (those using the &amp;lt;code&amp;gt;.ogg&amp;lt;/code&amp;gt; format) not to play. At present, this has only a minor impact on gameplay, but more and more sounds will likely use the format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CURSES&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause the external (not in-game) console to not use curses; it will not be scrollable and will be similar to the console in the original Tremulous. This does in no way affect gameplay.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Theora.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Xvid.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_VOIP&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this removes VOIP support. Alternatively enabling &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; will use the libraries distributed with Unvanquished for VoIP&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; &amp;amp;mdash; Enable this to use the crypto libraries provided by Unvanquished.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ make -j4&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; switch to make allows you to speed up the compilation process by running it in multiple threads; set the number following this to the number of cores your processor(s) have.&lt;br /&gt;
&lt;br /&gt;
===Acquiring the Game Files===&lt;br /&gt;
&lt;br /&gt;
The game files are not in the Git repository, and must be downloaded separately.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ cd main&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak0.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak1.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak2.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Map%20Pack/maps.7z/download&lt;br /&gt;
&lt;br /&gt;
On FreeBSD, use &amp;lt;code&amp;gt;fetch -r&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt;. You can also get the pak files in this way (requires cURL):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir -p ~/.Unvanquished/main&lt;br /&gt;
 $ ./download-pk3.sh ~/.Unvanquished/main&lt;br /&gt;
&lt;br /&gt;
The maps archive file isn't strictly necessary: if you don't have a particular map, the game will, by default, download missing files for you.&lt;br /&gt;
&lt;br /&gt;
Now you can proceed to [[running the game]].&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
===CMake cannot locate Newton===&lt;br /&gt;
&lt;br /&gt;
If CMake cannot find Newton, you'll need to set it up yourself.&lt;br /&gt;
&lt;br /&gt;
It should be in &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;/path/to/Unvanquished&amp;lt;/var&amp;gt;/src/libs/libnewton/libs/&amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt;/libNewton.so&amp;lt;/code&amp;gt;.&lt;br /&gt;
Be sure to replace &amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt; with the proper directory name.&lt;br /&gt;
&lt;br /&gt;
Use CMake as before to change the &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt; build setting to the said path:&lt;br /&gt;
&lt;br /&gt;
# Start the CMake configurator:&amp;lt;pre&amp;gt;$ ccmake ..&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Scroll down and highlight &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to begin editing and input in the path.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; to configure and &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the new makefiles.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Q&amp;lt;/span&amp;gt; to quit.&lt;br /&gt;
# Recompile the source:&amp;lt;pre&amp;gt;$ make&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=474</id>
		<title>Compiling the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=474"/>
		<updated>2012-07-01T01:27:06Z</updated>

		<summary type="html">&lt;p&gt;Devhc: add script information; rewording bits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mac OS X==&lt;br /&gt;
&lt;br /&gt;
The preferred way of building Unvanquished on Mac OS X is to use Apple's [https://developer.apple.com/xcode/ XCode] along with [http://www.cmake.org/cmake/resources/software.html CMake]; CMake is used to generate an XCode project file that is then used to compile the code.&lt;br /&gt;
&lt;br /&gt;
First, you need to [[Getting_the_source|acquire the source code]].&lt;br /&gt;
&lt;br /&gt;
You may use this [http://home.comcast.net/~chet102103/compile.sh script] to perform these tasks. If you've downloaded the source to a folder named ''Unvanquished'' in the current directory, a typical invocation would look like this:&lt;br /&gt;
&lt;br /&gt;
 $ ./compile.sh --bundle --compile -s Unvanquished --build Unvanquished-build --bundle-dest .&lt;br /&gt;
&lt;br /&gt;
You will also need to build the libraries from source.&lt;br /&gt;
&lt;br /&gt;
Unvanquished requires the following libraries:&lt;br /&gt;
* The jpeg library, version 8 or higher. (Version 6 was known to have problems)&lt;br /&gt;
* Simple DirectMedia Layer&lt;br /&gt;
* OpenGL Extension Wrangler Library&lt;br /&gt;
&lt;br /&gt;
Optional libraries:&lt;br /&gt;
* WebP&lt;br /&gt;
* Theora&lt;br /&gt;
* Speex&lt;br /&gt;
* XVid&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
The following are shell scripts that download, compile, and install various libraries. The scripts use the &amp;lt;kbd&amp;gt;curl&amp;lt;/kbd&amp;gt; program; replacements for &amp;lt;kbd&amp;gt;curl&amp;lt;/kbd&amp;gt; include &amp;lt;kbd&amp;gt;fetch -o -&amp;lt;/kbd&amp;gt; (on FreeBSD) and &amp;lt;kbd&amp;gt;wget -O -&amp;lt;/kbd&amp;gt; (on GNU/Linux).&lt;br /&gt;
&lt;br /&gt;
====JPEG====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.ijg.org/files/jpegsrc.v8d.tar.gz &amp;gt; jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ tar xvzf jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ cd jpeg-8d&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====The OpenGL Extension Wrangler Library (GLEW)====&lt;br /&gt;
&lt;br /&gt;
 $ curl -L https://sourceforge.net/projects/glew/files/glew/1.7.0/glew-1.7.0.tgz/download &amp;gt; glew-1.7.0.tgz&lt;br /&gt;
 $ tar xvzf glew-1.7.0.tgz&lt;br /&gt;
 $ cd glew-1.7.0&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Simple DirectMedia Layer (SDL)====&lt;br /&gt;
&lt;br /&gt;
At present, there are binaries for SDL.&lt;br /&gt;
&lt;br /&gt;
Intel systems running 10.5 or higher:&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15.dmg &amp;gt; SDL-1.2.15.dmg&lt;br /&gt;
 $ hdiutil attach SDL-1.2.15.dmg&lt;br /&gt;
 $ sudo cp -r /Volumes/SDL/SDL.framework /Library/Frameworks&lt;br /&gt;
 $ hdiutil detach /Volumes/SDL&lt;br /&gt;
&lt;br /&gt;
Intel or PPC systems running 10.4 or higher:&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15-OSX10.4.dmg &amp;gt; SDL-1.2.15-OSX10.4.dmg&lt;br /&gt;
 $ hdiutil attach SDL-1.2.15-OSX10.4.dmg&lt;br /&gt;
 $ sudo cp -r /Volumes/SDL/SDL.framework /Library/Frameworks&lt;br /&gt;
 $ hdiutil detach /Volumes/SDL&lt;br /&gt;
&lt;br /&gt;
====The GNU MP Bignum Library (libgmp)====&lt;br /&gt;
&lt;br /&gt;
 $ curl ftp://ftp.gmplib.org/pub/gmp-5.0.5/gmp-5.0.5.tar.bz2 &amp;gt; gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ tar xvjf gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ cd gmp-5.0.5&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Ogg====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz &amp;gt; libogg-1.3.0.tar.gz&lt;br /&gt;
 $ tar xvzf libogg-1.3.0.tar.gz&lt;br /&gt;
 $ cd libogg-1.3.0&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Vorbis====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz &amp;gt; libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ tar xvzf libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ cd libvorbis-1.3.3&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
===Configuring with CMake===&lt;br /&gt;
&lt;br /&gt;
# Run CMake.&lt;br /&gt;
# Enter the location of the source code.&lt;br /&gt;
# Enter the location in which you would like to build the source code. This should be a different directory.&lt;br /&gt;
# Click &amp;quot;Configure&amp;quot;. You will be prompted as to which generator you would like to use. If you have Xcode installed, choose that. Wait while the configuration process runs. You may have to set the following:&lt;br /&gt;
## If CMake did not find your jpeg headers for some reason, set &amp;lt;code&amp;gt;JPEG_INCLUDE_DIR&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/path/to/Unvanquished/src/libs/jpeg&amp;lt;/code&amp;gt;.&lt;br /&gt;
## You may safely disable &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; to avoid having to compile the library. (At present, the format is not used by any game assets.)&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; to avoid having to compile nettle and hogweed.&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; to avoid having to compile Speex.&lt;br /&gt;
## Uncheck &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; to avoid having to compile Theora or Xvid. (At present, there are not cutscenes or any such that require it.)&lt;br /&gt;
## '''You will probably not be able to compile with the GLSL optimizer enabled; uncheck &amp;lt;code&amp;gt;USE_GLSL_OPTIMIZER&amp;lt;/code&amp;gt;'''&lt;br /&gt;
## If you have selected to generate XCode project files, make the &amp;lt;code&amp;gt;SDLMAIN_LIBRARY&amp;lt;/code&amp;gt; field blank. This option is not available if you have the generator set to Unix makefiles.&lt;br /&gt;
# Click &amp;quot;Generate&amp;quot;.&lt;br /&gt;
# You may now close XCode.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
====With XCode====&lt;br /&gt;
# Either start XCode and open the project file (in the build directory you specified) or double-click the project file in Finder.&lt;br /&gt;
# Open the project file created by CMake, which should be in the build directory you specified.&lt;br /&gt;
# Change the active target to &amp;quot;ALL_BUILD&amp;quot; and click Product&amp;amp;rarr;Build.&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Terminal (Applications &amp;amp;rarr; Utilities &amp;amp;rarr; Terminal).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Type the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are on a multi-core or multi-processor machine, you may speed up the process by passing the &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; argument followed by the number of available cores to &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;; e.g., &amp;lt;code&amp;gt;make -j4&amp;lt;/code&amp;gt;. Note that doing so makes reading error messages more difficult, as multiple instances of the compiler will print to the screen at once, causing information to appear out of order.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing the build===&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
After compiling, you'll have to place the data files in the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; directory in your build directory. [[#Acquiring the Game Files|For download instructions, see below.]]&lt;br /&gt;
&lt;br /&gt;
Your file structure should look as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:Build_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
You may now start the application as such:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386&lt;br /&gt;
&lt;br /&gt;
Note that older machines will not support the new OpenGL 3 renderer, and must be started specifying the &amp;quot;vanilla&amp;quot; (aka &amp;quot;GL&amp;quot;) renderer:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386 +set cl_renderer GL&lt;br /&gt;
&lt;br /&gt;
===Bundling the Application===&lt;br /&gt;
&lt;br /&gt;
====With CPack====&lt;br /&gt;
&lt;br /&gt;
CPack is able to create standalone bundles (as well as many other types of installers). However you must generate the files using Unix Makefiles instead of XCode.&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ cpack -G Bundle&lt;br /&gt;
Some warnings will be printed however these can be safely ignored. There should be a file called Unvanquished.dmg in the Unvanquished-build folder.&lt;br /&gt;
&lt;br /&gt;
====Manually====&lt;br /&gt;
&lt;br /&gt;
You'll find the Mac [http://macdylibbundler.sourceforge.net/ dynamic library bundler] to be quite useful (you must generate the files using Unix Makefiles instead of XCode):&lt;br /&gt;
&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/macdylibbundler/files/macdylibbundler/0.4.1/dylibbundler0.4.1.zip/download &amp;gt; dylibbundler0.4.1.zip&lt;br /&gt;
 $ unzip dylibbundler0.4.1.zip&lt;br /&gt;
 $ cd dylibbundler&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
Once you've done that, you can proceed to create the application bundle. Note that these steps assume that you have downloaded the data files to &amp;lt;code&amp;gt;main/&amp;lt;/code&amp;gt; as shown above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git=/path/to/Unvanquished-git-repo&lt;br /&gt;
$ build=/path/to/Unvanquished-build-dir&lt;br /&gt;
$ mkdir -pv Unvanquished.app/Contents/{libs,MacOS,Resources,Frameworks}&lt;br /&gt;
$ cp -r $build/main Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ sips -s format tiff $git/debian/unvanquished.png --out temp.tiff&lt;br /&gt;
$ tiff2icns temp.tiff Unvanquished.app/Contents/Resources/Unvanquished.icns&lt;br /&gt;
$ rm temp.tiff&lt;br /&gt;
$ cp $build/daemon{,ded}.i386 $build/*.dylib Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ cp -r /Library/Frameworks/SDL.framework Unvanquished.app/Contents/Frameworks&lt;br /&gt;
$ install_name_tool -id @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/Frameworks/SDL.framework/Versions/A/SDL&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGLi386.dylib&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGL3i386.dylib&lt;br /&gt;
$ for binary in Unvanquished.app/Contents/MacOS/*.{i386,dylib}; do dylibbundler -b -x $binary -d $dest/Unvanquished.app/Contents/libs/; done&lt;br /&gt;
$ cp /usr/lib/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ chmod +w ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -id @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -change /usr/lib/libGLEW.1.7.0.dylib @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ cat &amp;gt; Unvanquished.app/Contents/Info.plist&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dict&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleDisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleExecutable&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;daemon.i386&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIconFile&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished.icns&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;net.Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleInfoDictionaryVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;6.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundlePackageType&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;APPL&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleShortVersionString&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt;&lt;br /&gt;
^d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;code&amp;gt;^d&amp;lt;/code&amp;gt; indicates pressing &amp;lt;span class=&amp;quot;key&amp;quot;&amp;gt;Ctrl&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;key&amp;quot;&amp;gt;D&amp;lt;/span&amp;gt; on the keyboard.&lt;br /&gt;
&lt;br /&gt;
The contents of the completed application bundle should look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Bundle_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&lt;br /&gt;
===Visual Studio===&lt;br /&gt;
&lt;br /&gt;
CMake can generate Visual Studio projects for unvanquished however this feature is relatively new and may have some bugs.&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
# Double click on Visual_Studio32.bat&lt;br /&gt;
# Open build-32/Daemon.sln in Visual Studio 2010.&lt;br /&gt;
# In the two text boxes in the toolbar, select &amp;quot;Release&amp;quot; or &amp;quot;Debug&amp;quot; in the first one and Win32 in the second one&lt;br /&gt;
# Press F5 to build solution and run application, or just use Build &amp;amp;rarr; Build Solution to compile the code.&lt;br /&gt;
&lt;br /&gt;
====Important Notes====&lt;br /&gt;
&lt;br /&gt;
* The CMake script currently only supports 32 bit builds however this will change in the future&lt;br /&gt;
* QVM, LLVM and glsl-optimizer are disabled and probably do not work correctly with CMake generated Visual Studio projects.&lt;br /&gt;
* ncurses is not supported under Visual Studio.&lt;br /&gt;
&lt;br /&gt;
===MinGW===&lt;br /&gt;
Unvanquished is supported under MinGW. The build process should be fairly similar to the Linux instructions.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: this may be incomplete --&amp;gt;&lt;br /&gt;
====Debian/Ubuntu====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libcurl4-gnutls-dev libfreetype6-dev libglew1.5-dev \&lt;br /&gt;
   libgmp3-dev libjpeg8-dev libncurses5-dev libogg-dev libopenal-dev \&lt;br /&gt;
   libpng12-dev libsdl1.2-dev libvorbis-dev zlib1g-dev nettle-dev \&lt;br /&gt;
   libwebp-dev libspeexdsp-dev libtheora-dev&lt;br /&gt;
&lt;br /&gt;
Actual dev package names may vary, e.g. libgmp-dev instead of libgmp3-dev and libglew-dev or libglew1.7-dev instead of libglew1.5-dev.&lt;br /&gt;
&lt;br /&gt;
Since we have a debian directory in the source, you can also to check what's needed then install the listed packages (choosing from alternatives as needed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ dpkg-checkbuilddeps&lt;br /&gt;
 …&lt;br /&gt;
 $ sudo apt-get install &amp;lt;var&amp;gt;package(s)&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If dpkg-checkbuilddeps produces no output, you have all necessary build dependencies. Also, debhelper's only needed if you're building .debs.&lt;br /&gt;
&lt;br /&gt;
====Gentoo====&lt;br /&gt;
&lt;br /&gt;
 $ emerge curl freetype glew gmp jpeg ncurses libogg openal libpng libsdl libvorbis zlib&lt;br /&gt;
&lt;br /&gt;
===Configuring the code with CMake===&lt;br /&gt;
&lt;br /&gt;
After you have [[Getting the source|acquired the source code]], you can proceed to compile. Unvanquished uses CMake, so you must have that installed. &lt;br /&gt;
&lt;br /&gt;
====Using ccmake (curses-based front-end)====&lt;br /&gt;
&lt;br /&gt;
On Debian or Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-curses-gui&lt;br /&gt;
&lt;br /&gt;
On Gentoo you should set the '''ncurses''' USE flag either globally or individually, just for cmake.&lt;br /&gt;
To add the USE flag globally, edit the USE array in /etc/make.conf for it to include '''ncurses'''.&lt;br /&gt;
To only install cmake with ncurses functionality, you could do the following:&lt;br /&gt;
&lt;br /&gt;
 $ echo 'dev-util/cmake ncurses' &amp;gt;&amp;gt; /etc/portage/package.use &amp;amp;&amp;amp; emerge cmake&lt;br /&gt;
&lt;br /&gt;
Note that in Ubuntu, &amp;lt;code&amp;gt;cmake-curses-gui&amp;lt;/code&amp;gt; is in Universe, which you may have to enable with &amp;lt;code&amp;gt;software-properties-gtk&amp;lt;/code&amp;gt;. Make sure to reload the software sources with &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt; afterwards.&lt;br /&gt;
&lt;br /&gt;
Next, configure the codebase.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir build&lt;br /&gt;
 $ cd build&lt;br /&gt;
 $ ccmake ..&lt;br /&gt;
&lt;br /&gt;
Or, in Debian or Ubuntu, you can build a package (but you'll need to have devscripts and fakeroot installed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ fakeroot dpkg-buildpackage -b -uc&lt;br /&gt;
 $ sudo dpkg -i &amp;lt;var&amp;gt;../unvanquished_*.deb&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once in &amp;lt;code&amp;gt;ccmake&amp;lt;/code&amp;gt;, use the following keys:&lt;br /&gt;
&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt; to configure. If an error occurs during this phase, make note of it and press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;e&amp;lt;/span&amp;gt; to dismiss it.&lt;br /&gt;
* Use the up and down arrow keys to navigate the compilation options.&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to enable or disable boolean options (i.e., on/off) or to edit textual options.&lt;br /&gt;
** Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Esc&amp;lt;/span&amp;gt; when editing a textual option to cancel the change.&lt;br /&gt;
&lt;br /&gt;
Once you have finished the configuration process, press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; again, then &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the makefile.&lt;br /&gt;
&lt;br /&gt;
====Using cmake-qt-gui (graphical front-end)====&lt;br /&gt;
&lt;br /&gt;
This graphical front end for cmake has its own package you must install:&lt;br /&gt;
&lt;br /&gt;
=====Debian/Ubuntu=====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-qt-gui&lt;br /&gt;
&lt;br /&gt;
=====Gentoo=====&lt;br /&gt;
&lt;br /&gt;
With the '''qt4''' USE flag enabled:&lt;br /&gt;
&lt;br /&gt;
 $ emerge cmake&lt;br /&gt;
&lt;br /&gt;
Once installed, run with &amp;lt;code&amp;gt;cmake-gui&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cmake-qt-gui.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
# Set the path where you have the source code downloaded.&lt;br /&gt;
# Set the path where you would like to build the engine. This may be the same directory if you wish.&lt;br /&gt;
# Click 'Configure'.&lt;br /&gt;
# Click 'Generate'.&lt;br /&gt;
&lt;br /&gt;
====Unnecessary libraries====&lt;br /&gt;
&lt;br /&gt;
Regardless of which front-end to cmake you use, you may want to disable some libraries that are not strictly necessary:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; &amp;amp;mdash; Some maps use WebP to store their textures. Currently this should have little impact on gameplay but more maps will likely use this format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_OPENAL&amp;lt;/code&amp;gt; &amp;amp;mdash; If this is disabled, SDL is used instead for sound.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CODEC_VORBIS&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause certain sound effects (those using the &amp;lt;code&amp;gt;.ogg&amp;lt;/code&amp;gt; format) not to play. At present, this has only a minor impact on gameplay, but more and more sounds will likely use the format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CURSES&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause the external (not in-game) console to not use curses; it will not be scrollable and will be similar to the console in the original Tremulous. This does in no way affect gameplay.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Theora.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Xvid.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_VOIP&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this removes VOIP support. Alternatively enabling &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; will use the libraries distributed with Unvanquished for VoIP&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; &amp;amp;mdash; Enable this to use the crypto libraries provided by Unvanquished.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ make -j4&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; switch to make allows you to speed up the compilation process by running it in multiple threads; set the number following this to the number of cores your processor(s) have.&lt;br /&gt;
&lt;br /&gt;
===Acquiring the Game Files===&lt;br /&gt;
&lt;br /&gt;
The game files are not in the Git repository, and must be downloaded separately.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ cd main&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak0.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak1.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak2.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Map%20Pack/maps.7z/download&lt;br /&gt;
&lt;br /&gt;
On FreeBSD, use &amp;lt;code&amp;gt;fetch -r&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt;. You can also get the pak files in this way (requires cURL):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir -p ~/.Unvanquished/main&lt;br /&gt;
 $ ./download-pk3.sh ~/.Unvanquished/main&lt;br /&gt;
&lt;br /&gt;
The maps archive file isn't strictly necessary: if you don't have a particular map, the game will, by default, download missing files for you.&lt;br /&gt;
&lt;br /&gt;
Now you can proceed to [[running the game]].&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
===CMake cannot locate Newton===&lt;br /&gt;
&lt;br /&gt;
If CMake cannot find Newton, you'll need to set it up yourself.&lt;br /&gt;
&lt;br /&gt;
It should be in &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;/path/to/Unvanquished&amp;lt;/var&amp;gt;/src/libs/libnewton/libs/&amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt;/libNewton.so&amp;lt;/code&amp;gt;.&lt;br /&gt;
Be sure to replace &amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt; with the proper directory name.&lt;br /&gt;
&lt;br /&gt;
Use CMake as before to change the &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt; build setting to the said path:&lt;br /&gt;
&lt;br /&gt;
# Start the CMake configurator:&amp;lt;pre&amp;gt;$ ccmake ..&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Scroll down and highlight &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to begin editing and input in the path.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; to configure and &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the new makefiles.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Q&amp;lt;/span&amp;gt; to quit.&lt;br /&gt;
# Recompile the source:&amp;lt;pre&amp;gt;$ make&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=473</id>
		<title>Getting the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=473"/>
		<updated>2012-07-01T01:09:02Z</updated>

		<summary type="html">&lt;p&gt;Devhc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Unvanquished/Unvanquished Unvanquished source code] is hosted on GitHub. You can either download a snapshot of the source code in [https://github.com/Unvanquished/Unvanquished/zipball/master ZIP archive form], or you can use Git to clone the repository.&lt;br /&gt;
&lt;br /&gt;
==Installing Git==&lt;br /&gt;
&lt;br /&gt;
If you already have Git installed, you can skip this step.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
Windows users can acquire Git from the [http://code.google.com/p/msysgit/ MSysGit project]. If you would prefer a graphical front-end, there is [http://code.google.com/p/tortoisegit/ TortoiseGit], but MSysGit must be installed regardless.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
Apple has included Git with Xcode since version 4. You may download [https://developer.apple.com/xcode/ Xcode] from  Apple's developer website. Please note that while XCode 4 was available for a very brief time for 32-bit and Snow Leopard users for a small price ($5 from the Mac App Store), this is no longer the case; it is now free, but available only to 64-bit Lion users. Snow Leopard (10.6) users and prior may now only use XCode 3, which does not include Git. If you are one of these users, you may [http://git-scm.com/download/mac acquire a copy of Git] from its site. A [http://git-scm.com/download/gui/mac selection of GUIs for Git] is also available.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
====Debian &amp;amp; Ubuntu====&lt;br /&gt;
&lt;br /&gt;
Install Git using the package manager:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install git&lt;br /&gt;
&lt;br /&gt;
==Downloading the source==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
Use the following command line:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
This will create a directory called ''Unvanquished''.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
&lt;br /&gt;
Acquiring the source code using the command line is the same as on Linux. Open a Terminal (/Applications/Utilities/Terminal) window and clone the source code like so:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
====Xcode 4====&lt;br /&gt;
&lt;br /&gt;
# Start Xcode.&lt;br /&gt;
# Open the Organizer window (Window &amp;amp;rarr; Organizer or &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Shift&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Command&amp;amp;nbsp;&amp;amp;#x2318;&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;)&lt;br /&gt;
# Click the &amp;quot;Repositories&amp;quot; button on the top bar.&lt;br /&gt;
# Click the &amp;quot;+&amp;quot; button in the lower-left corner, and choose &amp;quot;Checkout or Clone Repository&amp;amp;hellip;&amp;quot;.&lt;br /&gt;
# In the rollout sheet that appears, enter &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt; into the &amp;quot;Location&amp;quot; field, and click &amp;quot;Next&amp;quot;.&lt;br /&gt;
# Enter &amp;quot;Unvanquished&amp;quot; into the &amp;quot;Name&amp;quot; field, ensure that the &amp;quot;Type&amp;quot; combo box is set to &amp;quot;Git&amp;quot;, and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
# You will be prompted where to save the repository. Choose a location and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====TortoiseGIT====&lt;br /&gt;
&lt;br /&gt;
# Make and enter a new folder to store the source code in&lt;br /&gt;
# Right click the inside of the folder &amp;amp;rarr; Git Clone...&lt;br /&gt;
# In the Url textbox enter: &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click ok.&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
Open the MsysGit terminal and type:&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
==Compiling==&lt;br /&gt;
&lt;br /&gt;
After getting the source code, you can [[Compiling the source|compile]] it.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=472</id>
		<title>Getting the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=472"/>
		<updated>2012-07-01T01:05:12Z</updated>

		<summary type="html">&lt;p&gt;Devhc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Unvanquished/Unvanquished Unvanquished source code] is hosted on GitHub. You can either download a snapshot of the source code in [https://github.com/Unvanquished/Unvanquished/zipball/master ZIP archive form], or you can use Git to clone the repository.&lt;br /&gt;
&lt;br /&gt;
==Installing Git==&lt;br /&gt;
&lt;br /&gt;
If you already have Git installed, you can skip this step.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
Windows users can acquire Git from the [http://code.google.com/p/msysgit/ MSysGit project]. If you would prefer a graphical front-end, there is [http://code.google.com/p/tortoisegit/ TortoiseGit], but MSysGit must be installed regardless.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
Apple has included Git with Xcode since version 4. You may download [https://developer.apple.com/xcode/ Xcode] from  Apple's developer website. Please note that while XCode 4 was available for a very brief time for 32-bit and Snow Leopard users for a small price ($5 from the Mac App Store), this is no longer the case; it is now free, but available only to 64-bit Lion users. Snow Leopard (10.6) users and prior may now only use XCode 3, which does not include Git. If you are one of these users, you may [http://git-scm.com/download/mac acquire a copy of Git] from its site. A [http://git-scm.com/download/gui/mac selection of GUIs for Git] is also available.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
====Debian &amp;amp; Ubuntu====&lt;br /&gt;
&lt;br /&gt;
Install Git using the package manager:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install git&lt;br /&gt;
&lt;br /&gt;
==Downloading the source==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
Use the following command line:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
This will create a directory called &amp;lt;kbd&amp;gt;Unvanquished&amp;lt;/kbd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
&lt;br /&gt;
Acquiring the source code using the command line is the same as on Linux. Open a Terminal (/Applications/Utilities/Terminal) window and clone the source code like so:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
====Xcode 4====&lt;br /&gt;
&lt;br /&gt;
# Start Xcode.&lt;br /&gt;
# Open the Organizer window (Window &amp;amp;rarr; Organizer or &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Shift&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Command&amp;amp;nbsp;&amp;amp;#x2318;&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;)&lt;br /&gt;
# Click the &amp;quot;Repositories&amp;quot; button on the top bar.&lt;br /&gt;
# Click the &amp;quot;+&amp;quot; button in the lower-left corner, and choose &amp;quot;Checkout or Clone Repository&amp;amp;hellip;&amp;quot;.&lt;br /&gt;
# In the rollout sheet that appears, enter &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt; into the &amp;quot;Location&amp;quot; field, and click &amp;quot;Next&amp;quot;.&lt;br /&gt;
# Enter &amp;quot;Unvanquished&amp;quot; into the &amp;quot;Name&amp;quot; field, ensure that the &amp;quot;Type&amp;quot; combo box is set to &amp;quot;Git&amp;quot;, and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
# You will be prompted where to save the repository. Choose a location and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====TortoiseGIT====&lt;br /&gt;
&lt;br /&gt;
# Make and enter a new folder to store the source code in&lt;br /&gt;
# Right click the inside of the folder &amp;amp;rarr; Git Clone...&lt;br /&gt;
# In the Url textbox enter: &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click ok.&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
Open the MsysGit terminal and type:&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
==Compiling==&lt;br /&gt;
&lt;br /&gt;
After getting the source code, you can [[Compiling the source|compile]] it.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=471</id>
		<title>Getting the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=471"/>
		<updated>2012-07-01T01:04:18Z</updated>

		<summary type="html">&lt;p&gt;Devhc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Unvanquished/Unvanquished Unvanquished source code] is hosted on GitHub. You can either download a snapshot of the source code in [https://github.com/Unvanquished/Unvanquished/zipball/master ZIP archive form], or you can use Git to clone the repository.&lt;br /&gt;
&lt;br /&gt;
==Installing Git==&lt;br /&gt;
&lt;br /&gt;
If you already have Git installed, you can skip this step.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
Windows users can acquire Git from the [http://code.google.com/p/msysgit/ MSysGit project]. If you would prefer a graphical front-end, there is [http://code.google.com/p/tortoisegit/ TortoiseGit], but MSysGit must be installed regardless.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
Apple has included Git with Xcode since version 4. You may download [https://developer.apple.com/xcode/ Xcode] from  Apple's developer website. Please note that while XCode 4 was available for a very brief time for 32-bit and Snow Leopard users for a small price ($5 from the Mac App Store), this is no longer the case; it is now free, but available only to 64-bit Lion users. Snow Leopard (10.6) users and prior may now only use XCode 3, which does not include Git. If you are one of these users, you may [http://git-scm.com/download/mac acquire a copy of Git] from its site. A [http://git-scm.com/download/gui/mac selection of GUIs for Git] is also available.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
====Debian &amp;amp; Ubuntu====&lt;br /&gt;
&lt;br /&gt;
Install Git using the package manager:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install git&lt;br /&gt;
&lt;br /&gt;
==Downloading the source==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
Use the following command line:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
This will create a directory called &amp;lt;code&amp;gt;Unvanquished&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
&lt;br /&gt;
Acquiring the source code using the command line is the same as on Linux. Open a Terminal (/Applications/Utilities/Terminal) window and clone the source code like so:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
====Xcode 4====&lt;br /&gt;
&lt;br /&gt;
# Start Xcode.&lt;br /&gt;
# Open the Organizer window (Window &amp;amp;rarr; Organizer or &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Shift&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Command&amp;amp;nbsp;&amp;amp;#x2318;&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;)&lt;br /&gt;
# Click the &amp;quot;Repositories&amp;quot; button on the top bar.&lt;br /&gt;
# Click the &amp;quot;+&amp;quot; button in the lower-left corner, and choose &amp;quot;Checkout or Clone Repository&amp;amp;hellip;&amp;quot;.&lt;br /&gt;
# In the rollout sheet that appears, enter &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt; into the &amp;quot;Location&amp;quot; field, and click &amp;quot;Next&amp;quot;.&lt;br /&gt;
# Enter &amp;quot;Unvanquished&amp;quot; into the &amp;quot;Name&amp;quot; field, ensure that the &amp;quot;Type&amp;quot; combo box is set to &amp;quot;Git&amp;quot;, and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
# You will be prompted where to save the repository. Choose a location and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====TortoiseGIT====&lt;br /&gt;
&lt;br /&gt;
# Make and enter a new folder to store the source code in&lt;br /&gt;
# Right click the inside of the folder &amp;amp;rarr; Git Clone...&lt;br /&gt;
# In the Url textbox enter: &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click ok.&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
Open the MsysGit terminal and type:&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
==Compiling==&lt;br /&gt;
&lt;br /&gt;
After getting the source code, you can [[Compiling the source|compile]] it.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=470</id>
		<title>Getting the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=470"/>
		<updated>2012-07-01T01:03:38Z</updated>

		<summary type="html">&lt;p&gt;Devhc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Unvanquished/Unvanquished Unvanquished source code] is hosted on GitHub. You can either download a snapshot of the source code in [https://github.com/Unvanquished/Unvanquished/zipball/master ZIP archive form], or you can use Git to clone the repository.&lt;br /&gt;
&lt;br /&gt;
==Installing Git==&lt;br /&gt;
&lt;br /&gt;
If you already have Git installed, you can skip this step.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
Windows users can acquire Git from the [http://code.google.com/p/msysgit/ MSysGit project]. If you would prefer a graphical front-end, there is [http://code.google.com/p/tortoisegit/ TortoiseGit], but MSysGit must be installed regardless.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
Apple has included Git with Xcode since version 4. You may download [https://developer.apple.com/xcode/ Xcode] from  Apple's developer website. Please note that while XCode 4 was available for a very brief time for 32-bit and Snow Leopard users for a small price ($5 from the Mac App Store), this is no longer the case; it is now free, but available only to 64-bit Lion users. Snow Leopard (10.6) users and prior may now only use XCode 3, which does not include Git. If you are one of these users, you may [http://git-scm.com/download/mac acquire a copy of Git] from its site. A [http://git-scm.com/download/gui/mac selection of GUIs for Git] is also available.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
====Debian &amp;amp; Ubuntu====&lt;br /&gt;
&lt;br /&gt;
Install Git using the package manager:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install git&lt;br /&gt;
&lt;br /&gt;
==Downloading the source==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
Use the following command line:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
This will create a directory called &amp;lt;code&amp;gt;Unvanquished&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
&lt;br /&gt;
Acquiring the source code using the command line is the same as on Linux. Just open a Terminal (/Applications/Utilities/Terminal) window and clone the source code like so:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
====Xcode 4====&lt;br /&gt;
&lt;br /&gt;
# Start Xcode.&lt;br /&gt;
# Open the Organizer window (Window &amp;amp;rarr; Organizer or &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Shift&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Command&amp;amp;nbsp;&amp;amp;#x2318;&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;)&lt;br /&gt;
# Click the &amp;quot;Repositories&amp;quot; button on the top bar.&lt;br /&gt;
# Click the &amp;quot;+&amp;quot; button in the lower-left corner, and choose &amp;quot;Checkout or Clone Repository&amp;amp;hellip;&amp;quot;.&lt;br /&gt;
# In the rollout sheet that appears, enter &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt; into the &amp;quot;Location&amp;quot; field, and click &amp;quot;Next&amp;quot;.&lt;br /&gt;
# Enter &amp;quot;Unvanquished&amp;quot; into the &amp;quot;Name&amp;quot; field, ensure that the &amp;quot;Type&amp;quot; combo box is set to &amp;quot;Git&amp;quot;, and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
# You will be prompted where to save the repository. Choose a location and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====TortoiseGIT====&lt;br /&gt;
&lt;br /&gt;
# Make and enter a new folder to store the source code in&lt;br /&gt;
# Right click the inside of the folder &amp;amp;rarr; Git Clone...&lt;br /&gt;
# In the Url textbox enter: &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click ok.&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
Open the MsysGit terminal and type:&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
==Compiling==&lt;br /&gt;
&lt;br /&gt;
After getting the source code, you can [[Compiling the source|compile]] it.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=469</id>
		<title>Getting the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=469"/>
		<updated>2012-07-01T01:02:46Z</updated>

		<summary type="html">&lt;p&gt;Devhc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Unvanquished/Unvanquished Unvanquished source code] is hosted on GitHub. You can either download a snapshot of the source code in [https://github.com/Unvanquished/Unvanquished/zipball/master ZIP archive form], or you can use Git to clone the repository.&lt;br /&gt;
&lt;br /&gt;
==Installing Git==&lt;br /&gt;
&lt;br /&gt;
If you already have Git installed, you can skip this step.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
Windows users can acquire Git from the [http://code.google.com/p/msysgit/ MSysGit project]. If you would prefer a graphical front-end, there is [http://code.google.com/p/tortoisegit/ TortoiseGit], but MSysGit must be installed regardless.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
Apple has included Git with Xcode since version 4. You may download [https://developer.apple.com/xcode/ Xcode] from  Apple's developer website. Please note that while XCode 4 was available for a very brief time for 32-bit and Snow Leopard users for a small price ($5 from the Mac App Store), this is no longer the case; it is now free, but available only to 64-bit Lion users. Snow Leopard (10.6) users and prior may now only use XCode 3, which does not include Git. If you are one of these users, you may [http://git-scm.com/download/mac acquire a copy of Git] from its site. A [http://git-scm.com/download/gui/mac selection of GUIs for Git] is also available.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
====Debian &amp;amp; Ubuntu====&lt;br /&gt;
&lt;br /&gt;
Install Git using the package manager:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install git&lt;br /&gt;
&lt;br /&gt;
==Downloading the source==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
Use git on the command line:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
This will create a directory called &amp;lt;code&amp;gt;Unvanquished&amp;lt;/code&amp;gt; in your home folder.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
&lt;br /&gt;
Acquiring the source code using the command line is the same as on Linux. Just open a Terminal (/Applications/Utilities/Terminal) window and clone the source code like so:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
====Xcode 4====&lt;br /&gt;
&lt;br /&gt;
# Start Xcode.&lt;br /&gt;
# Open the Organizer window (Window &amp;amp;rarr; Organizer or &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Shift&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Command&amp;amp;nbsp;&amp;amp;#x2318;&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;)&lt;br /&gt;
# Click the &amp;quot;Repositories&amp;quot; button on the top bar.&lt;br /&gt;
# Click the &amp;quot;+&amp;quot; button in the lower-left corner, and choose &amp;quot;Checkout or Clone Repository&amp;amp;hellip;&amp;quot;.&lt;br /&gt;
# In the rollout sheet that appears, enter &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt; into the &amp;quot;Location&amp;quot; field, and click &amp;quot;Next&amp;quot;.&lt;br /&gt;
# Enter &amp;quot;Unvanquished&amp;quot; into the &amp;quot;Name&amp;quot; field, ensure that the &amp;quot;Type&amp;quot; combo box is set to &amp;quot;Git&amp;quot;, and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
# You will be prompted where to save the repository. Choose a location and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====TortoiseGIT====&lt;br /&gt;
&lt;br /&gt;
# Make and enter a new folder to store the source code in&lt;br /&gt;
# Right click the inside of the folder &amp;amp;rarr; Git Clone...&lt;br /&gt;
# In the Url textbox enter: &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click ok.&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
Open the MsysGit terminal and type:&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
==Compiling==&lt;br /&gt;
&lt;br /&gt;
After getting the source code, you can [[Compiling the source|compile]] it.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=468</id>
		<title>Getting the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=468"/>
		<updated>2012-07-01T01:02:25Z</updated>

		<summary type="html">&lt;p&gt;Devhc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Unvanquished/Unvanquished Unvanquished source code] is hosted on GitHub. You can either download a snapshot of the source code in [https://github.com/Unvanquished/Unvanquished/zipball/master ZIP archive form], or you can use Git to clone the repository.&lt;br /&gt;
&lt;br /&gt;
==Installing Git==&lt;br /&gt;
&lt;br /&gt;
If you already have Git installed, you can skip this step.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
Windows users can acquire Git from the [http://code.google.com/p/msysgit/ MSysGit project]. If you would prefer a graphical front-end, there is [http://code.google.com/p/tortoisegit/ TortoiseGit], but MSysGit must be installed regardless.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
Apple has included Git with Xcode since version 4. You may download [https://developer.apple.com/xcode/ Xcode] from  Apple's developer website. Please note that while XCode 4 was available for a very brief time for 32-bit and Snow Leopard users for a small price ($5 from the Mac App Store), this is no longer the case; it is now free, but available only to 64-bit Lion users. Snow Leopard (10.6) users and prior may now only use XCode 3, which does not include Git. If you are one of these users, you may [http://git-scm.com/download/mac acquire a copy of Git] from its site. A [http://git-scm.com/download/gui/mac selection of GUIs for Git] is also available.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
====Debian &amp;amp; Ubuntu====&lt;br /&gt;
&lt;br /&gt;
Install git using the package manager:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install git&lt;br /&gt;
&lt;br /&gt;
==Downloading the source==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
Use git on the command line:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
This will create a directory called &amp;lt;code&amp;gt;Unvanquished&amp;lt;/code&amp;gt; in your home folder.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
&lt;br /&gt;
Acquiring the source code using the command line is the same as on Linux. Just open a Terminal (/Applications/Utilities/Terminal) window and clone the source code like so:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
====Xcode 4====&lt;br /&gt;
&lt;br /&gt;
# Start Xcode.&lt;br /&gt;
# Open the Organizer window (Window &amp;amp;rarr; Organizer or &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Shift&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Command&amp;amp;nbsp;&amp;amp;#x2318;&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;)&lt;br /&gt;
# Click the &amp;quot;Repositories&amp;quot; button on the top bar.&lt;br /&gt;
# Click the &amp;quot;+&amp;quot; button in the lower-left corner, and choose &amp;quot;Checkout or Clone Repository&amp;amp;hellip;&amp;quot;.&lt;br /&gt;
# In the rollout sheet that appears, enter &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt; into the &amp;quot;Location&amp;quot; field, and click &amp;quot;Next&amp;quot;.&lt;br /&gt;
# Enter &amp;quot;Unvanquished&amp;quot; into the &amp;quot;Name&amp;quot; field, ensure that the &amp;quot;Type&amp;quot; combo box is set to &amp;quot;Git&amp;quot;, and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
# You will be prompted where to save the repository. Choose a location and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====TortoiseGIT====&lt;br /&gt;
&lt;br /&gt;
# Make and enter a new folder to store the source code in&lt;br /&gt;
# Right click the inside of the folder &amp;amp;rarr; Git Clone...&lt;br /&gt;
# In the Url textbox enter: &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click ok.&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
Open the MsysGit terminal and type:&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
==Compiling==&lt;br /&gt;
&lt;br /&gt;
After getting the source code, you can [[Compiling the source|compile]] it.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=467</id>
		<title>Getting the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=467"/>
		<updated>2012-07-01T01:00:06Z</updated>

		<summary type="html">&lt;p&gt;Devhc: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Unvanquished/Unvanquished Unvanquished source code] is hosted on GitHub. You can either download a snapshot of the source code in [https://github.com/Unvanquished/Unvanquished/zipball/master ZIP archive form], or you can use Git to clone the repository.&lt;br /&gt;
&lt;br /&gt;
==Installing Git==&lt;br /&gt;
&lt;br /&gt;
If you already have Git installed, you can skip this step.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
Windows users can acquire Git from the [http://code.google.com/p/msysgit/ MSysGit project]. If you would prefer a graphical front-end, there is [http://code.google.com/p/tortoisegit/ TortoiseGit], but MSysGit must be installed regardless.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
Apple has included Git with Xcode since version 4. You may download [https://developer.apple.com/xcode/ Xcode] from  Apple's developer website. Please note that while XCode 4 was available for a very brief time for 32-bit and Snow Leopard users for a small price ($5 from the Mac App Store), this is no longer the case; it is now free, but available only to 64-bit Lion users. Snow Leopard (10.6) users and prior may now only use XCode 3, which does not include Git. If you are one of these users, you may acquire a copy of Git from their [http://git-scm.com/download/mac site]. A selection of GUIs for git is [http://git-scm.com/download/gui/mac also available].&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
====Debian &amp;amp; Ubuntu====&lt;br /&gt;
&lt;br /&gt;
Install git using the package manager:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install git&lt;br /&gt;
&lt;br /&gt;
==Downloading the source==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
Use git on the command line:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
This will create a directory called &amp;lt;code&amp;gt;Unvanquished&amp;lt;/code&amp;gt; in your home folder.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
&lt;br /&gt;
Acquiring the source code using the command line is the same as on Linux. Just open a Terminal (/Applications/Utilities/Terminal) window and clone the source code like so:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
====Xcode 4====&lt;br /&gt;
&lt;br /&gt;
# Start Xcode.&lt;br /&gt;
# Open the Organizer window (Window &amp;amp;rarr; Organizer or &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Shift&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Command&amp;amp;nbsp;&amp;amp;#x2318;&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;)&lt;br /&gt;
# Click the &amp;quot;Repositories&amp;quot; button on the top bar.&lt;br /&gt;
# Click the &amp;quot;+&amp;quot; button in the lower-left corner, and choose &amp;quot;Checkout or Clone Repository&amp;amp;hellip;&amp;quot;.&lt;br /&gt;
# In the rollout sheet that appears, enter &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt; into the &amp;quot;Location&amp;quot; field, and click &amp;quot;Next&amp;quot;.&lt;br /&gt;
# Enter &amp;quot;Unvanquished&amp;quot; into the &amp;quot;Name&amp;quot; field, ensure that the &amp;quot;Type&amp;quot; combo box is set to &amp;quot;Git&amp;quot;, and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
# You will be prompted where to save the repository. Choose a location and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====TortoiseGIT====&lt;br /&gt;
&lt;br /&gt;
# Make and enter a new folder to store the source code in&lt;br /&gt;
# Right click the inside of the folder &amp;amp;rarr; Git Clone...&lt;br /&gt;
# In the Url textbox enter: &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click ok.&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
Open the MsysGit terminal and type:&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
==Compiling==&lt;br /&gt;
&lt;br /&gt;
After getting the source code, you can [[Compiling the source|compile]] it.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=466</id>
		<title>Getting the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Getting_the_source&amp;diff=466"/>
		<updated>2012-07-01T00:59:33Z</updated>

		<summary type="html">&lt;p&gt;Devhc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/Unvanquished/Unvanquished Unvanquished source code] is hosted on GitHub. You can either download a snapshot of the source code in [https://github.com/Unvanquished/Unvanquished/zipball/master ZIP archive form], or you can use Git to clone the repository.&lt;br /&gt;
&lt;br /&gt;
==Installing Git==&lt;br /&gt;
&lt;br /&gt;
If you already have Git installed, you can skip this step.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
Windows users can acquire git from the [http://code.google.com/p/msysgit/ MSysGit project]. If you would prefer a graphical front-end, there is [http://code.google.com/p/tortoisegit/ TortoiseGit], but regardless MSysGit must be installed.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
Apple has included Git with Xcode since version 4. You may download [https://developer.apple.com/xcode/ Xcode] from  Apple's developer website. Please note that while XCode 4 was available for a very brief time for 32-bit and Snow Leopard users for a small price ($5 from the Mac App Store), this is no longer the case; it is now free, but available only to 64-bit Lion users. Snow Leopard (10.6) users and prior may now only use XCode 3, which does not include Git. If you are one of these users, you may acquire a copy of Git from their [http://git-scm.com/download/mac site]. A selection of GUIs for git is [http://git-scm.com/download/gui/mac also available].&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
====Debian &amp;amp; Ubuntu====&lt;br /&gt;
&lt;br /&gt;
Install git using the package manager:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install git&lt;br /&gt;
&lt;br /&gt;
==Downloading the source==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
&lt;br /&gt;
Use git on the command line:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
This will create a directory called &amp;lt;code&amp;gt;Unvanquished&amp;lt;/code&amp;gt; in your home folder.&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
&lt;br /&gt;
Acquiring the source code using the command line is the same as on Linux. Just open a Terminal (/Applications/Utilities/Terminal) window and clone the source code like so:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
====Xcode 4====&lt;br /&gt;
&lt;br /&gt;
# Start Xcode.&lt;br /&gt;
# Open the Organizer window (Window &amp;amp;rarr; Organizer or &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Shift&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Command&amp;amp;nbsp;&amp;amp;#x2318;&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt;)&lt;br /&gt;
# Click the &amp;quot;Repositories&amp;quot; button on the top bar.&lt;br /&gt;
# Click the &amp;quot;+&amp;quot; button in the lower-left corner, and choose &amp;quot;Checkout or Clone Repository&amp;amp;hellip;&amp;quot;.&lt;br /&gt;
# In the rollout sheet that appears, enter &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt; into the &amp;quot;Location&amp;quot; field, and click &amp;quot;Next&amp;quot;.&lt;br /&gt;
# Enter &amp;quot;Unvanquished&amp;quot; into the &amp;quot;Name&amp;quot; field, ensure that the &amp;quot;Type&amp;quot; combo box is set to &amp;quot;Git&amp;quot;, and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
# You will be prompted where to save the repository. Choose a location and click &amp;quot;Clone&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====TortoiseGIT====&lt;br /&gt;
&lt;br /&gt;
# Make and enter a new folder to store the source code in&lt;br /&gt;
# Right click the inside of the folder &amp;amp;rarr; Git Clone...&lt;br /&gt;
# In the Url textbox enter: &amp;lt;code&amp;gt;https://github.com/Unvanquished/Unvanquished.git&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click ok.&lt;br /&gt;
&lt;br /&gt;
====Command Line====&lt;br /&gt;
Open the MsysGit terminal and type:&lt;br /&gt;
 $ git clone https://github.com/Unvanquished/Unvanquished.git&lt;br /&gt;
&lt;br /&gt;
==Compiling==&lt;br /&gt;
&lt;br /&gt;
After getting the source code, you can [[Compiling the source|compile]] it.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Talk:Formats/Audio&amp;diff=460</id>
		<title>Talk:Formats/Audio</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Talk:Formats/Audio&amp;diff=460"/>
		<updated>2012-06-27T19:55:49Z</updated>

		<summary type="html">&lt;p&gt;Devhc: /* Formats? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Formats? ==&lt;br /&gt;
&lt;br /&gt;
I found a .rtf containing suggested formats with no explanation as to the choices on dropbox. I figured here is a better place than .rtf files on DB.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Category&lt;br /&gt;
! Format&lt;br /&gt;
! Channels&lt;br /&gt;
! Bit rate, sampling rate, whatever&lt;br /&gt;
|-&lt;br /&gt;
| Weapons and environmental sound effects&lt;br /&gt;
| WAV&lt;br /&gt;
| Mono&lt;br /&gt;
| 16-bit 44.1 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Buildables and players&lt;br /&gt;
| WAV&lt;br /&gt;
| Mono&lt;br /&gt;
| 16-bit 22 kHz&lt;br /&gt;
|-&lt;br /&gt;
| Background music&lt;br /&gt;
| Ogg&lt;br /&gt;
| Stereo&lt;br /&gt;
| 128-160 kb/s&lt;br /&gt;
|-&lt;br /&gt;
| Main menu music&lt;br /&gt;
| Ogg&lt;br /&gt;
| /Unspecified/&lt;br /&gt;
| 192-224 kb/s&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Said document then goes on to contradict itself, saying that all audio must be mono. It explains that Ogg is preferable to WAV for longer audio files in that it is a compressed format (WAV isn't? I thought WAV was just a container format, anyway?), and that compression is pointless on short audio files.&lt;br /&gt;
&lt;br /&gt;
[[User:Velociostrich|Velociostrich]] 11:56, 29 May 2012 (EDT)&lt;br /&gt;
&lt;br /&gt;
mono must be used for audio files which r played at 3D-point-locations (ie., with spatialization). background/menu music is played as-is (without spatialization), so stereo is allowed here. but i would avoid the use of stereo in all cases. WAV files r &amp;quot;mostly&amp;quot; uncompressed. i've just tried to play a compressed WAV file via the engine, and the engine got assfucked (ie., the engine doesn't support compressed WAV formats). btw, i fixed ur metric notations. &amp;amp;mdash; [[User:devhc|/dev/humancontroller]] @ 2012-06-27 21:54:12 CEST&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Formats/Audio&amp;diff=459</id>
		<title>Formats/Audio</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Formats/Audio&amp;diff=459"/>
		<updated>2012-06-27T19:25:58Z</updated>

		<summary type="html">&lt;p&gt;Devhc: describe buildable sound configuration files (part 2)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&lt;br /&gt;
The following licenses are suitable for music and sounds:&lt;br /&gt;
&lt;br /&gt;
* [http://creativecommons.org/licenses/sampling+/1.0/ CC-Sampling Plus]&lt;br /&gt;
* [http://creativecommons.org/licenses/by-sa/2.0 CC-BY-SA] (v2.0 or newer)&lt;br /&gt;
&lt;br /&gt;
==Configuration files==&lt;br /&gt;
&lt;br /&gt;
===Buildables===&lt;br /&gt;
&lt;br /&gt;
There are 14 animations (animation types) per buildable (buildable type): ''construct1'', ''construct2'', ''idle1'', ''idle2'', ''idle3'', ''attack1'', ''attack2'', ''spawn1'', ''spawn2'', ''pain1'', ''pain2'', ''destroy1'', ''destroy2'', and ''destroyed''. Each buildable has a sound configuration file, located at ''sound/buildables/&amp;lt;var&amp;gt;&amp;lt;buildable&amp;gt;&amp;lt;/var&amp;gt;/sound.cfg'', that describes 2 properties for each buildable animation:&lt;br /&gt;
* whether a unique (buildable-specific) sound is associated with the given buildable animation, and&lt;br /&gt;
* whether the animation's sound is to be played in a loop.&lt;br /&gt;
Such a file should contain a &amp;lt;em&amp;gt;1&amp;lt;/em&amp;gt; for a &amp;lt;em&amp;gt;yes&amp;lt;/em&amp;gt; answer and a &amp;lt;em&amp;gt;0&amp;lt;/em&amp;gt; for a &amp;lt;em&amp;gt;no&amp;lt;/em&amp;gt; answer, for the above 2 questions, in the given order, for each buildable animation, in the above given order. Technically, this means that the file should contain 28 integers (2 per animation). However, by convention, 1 line is used for each animation, and comments are added for guidance about which animation a pair of numbers refers to.&lt;br /&gt;
&lt;br /&gt;
So each line in a buildable sound configuration file is formatted as follows:&lt;br /&gt;
 &amp;lt;var&amp;gt;&amp;lt;unique&amp;gt;&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;&amp;lt;loop&amp;gt;&amp;lt;/var&amp;gt; //&amp;lt;var&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a full buildable sound configuration file is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 0 //construct1.wav&lt;br /&gt;
0 0 //construct2.wav&lt;br /&gt;
1 1 //idle1.wav&lt;br /&gt;
0 0 //idle2.wav&lt;br /&gt;
0 0 //idle3.wav&lt;br /&gt;
0 0 //attack1.wav&lt;br /&gt;
0 0 //attack2.wav&lt;br /&gt;
0 0 //spawn1.wav&lt;br /&gt;
0 0 //spawn2.wav&lt;br /&gt;
0 0 //pain1.wav&lt;br /&gt;
0 0 //pain2.wav&lt;br /&gt;
1 0 //destroy1.wav&lt;br /&gt;
1 0 //destroy2.wav&lt;br /&gt;
0 0 //destroyed.wav&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Again, the comments only help human readers, and are indifferent to the game (do &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; reorder the lines!).&lt;br /&gt;
&lt;br /&gt;
If, for a particular buildable, a unique sound is associated with a particular animation, then the game will look for the buildable-specific ''sound/buildables/&amp;lt;var&amp;gt;&amp;lt;buildable&amp;gt;&amp;lt;/var&amp;gt;/&amp;lt;var&amp;gt;&amp;lt;animation&amp;gt;&amp;lt;/var&amp;gt;.wav'' audio file, and otherwise (and also if the buildable-specific audio file cannot be found) the game will use the default ''sound/buildables/&amp;lt;var&amp;gt;&amp;lt;team&amp;gt;&amp;lt;/var&amp;gt;/&amp;lt;var&amp;gt;&amp;lt;animation&amp;gt;&amp;lt;/var&amp;gt;.wav'' (based on the team of the buildable).&lt;br /&gt;
&lt;br /&gt;
==Sound filenames==&lt;br /&gt;
&lt;br /&gt;
The structure &amp;lt;code&amp;gt;cg_customSoundNames&amp;lt;/code&amp;gt; in [https://github.com/TremZ/Unvanquished/blob/master/src/gamelogic/gpp/src/cgame/cg_players.c src/gamelogic/gpp/src/cgame/cg_players.c] contains a list of some sounds.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Formats/Audio&amp;diff=458</id>
		<title>Formats/Audio</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Formats/Audio&amp;diff=458"/>
		<updated>2012-06-27T19:01:10Z</updated>

		<summary type="html">&lt;p&gt;Devhc: describe buildable sound configuration files properly (resolve myths)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&lt;br /&gt;
The following licenses are suitable for music and sounds:&lt;br /&gt;
&lt;br /&gt;
* [http://creativecommons.org/licenses/sampling+/1.0/ CC-Sampling Plus]&lt;br /&gt;
* [http://creativecommons.org/licenses/by-sa/2.0 CC-BY-SA] (v2.0 or newer)&lt;br /&gt;
&lt;br /&gt;
==Configuration files==&lt;br /&gt;
&lt;br /&gt;
===Buildables===&lt;br /&gt;
&lt;br /&gt;
There are 14 animations per buildable type: ''construct1'', ''construct2'', ''idle1'', ''idle2'', ''idle3'', ''attack1'', ''attack2'', ''spawn1'', ''spawn2'', ''pain1'', ''pain2'', ''destroy1'', ''destroy2'', and ''destroyed''. Each buildable type has a sound configuration file, located at ''sound/buildables/&amp;lt;var&amp;gt;&amp;lt;buildable_type&amp;gt;&amp;lt;/var&amp;gt;/sound.cfg'', that describes 2 properties for each buildable animation:&lt;br /&gt;
* whether the buildable animation has an associated sound, and&lt;br /&gt;
* whether the sound is to be played in a loop.&lt;br /&gt;
Such a file should contain a &amp;lt;em&amp;gt;1&amp;lt;/em&amp;gt; for a &amp;lt;em&amp;gt;yes&amp;lt;/em&amp;gt; answer and a &amp;lt;em&amp;gt;0&amp;lt;/em&amp;gt; for a &amp;lt;em&amp;gt;no&amp;lt;/em&amp;gt; answer, for the above 2 questions, in the given order, and for each buildable animation, in the above given order. Technically, this means that the file should contain 28 integers (2 per animation). However, by convention, 1 line is used for each animation, and comments are added for guidance about which animation a pair of numbers refers to.&lt;br /&gt;
&lt;br /&gt;
So each line in a buildable sound configuration file is formatted as follows:&lt;br /&gt;
 &amp;lt;var&amp;gt;&amp;lt;has_sound&amp;gt;&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;&amp;lt;loop&amp;gt;&amp;lt;/var&amp;gt; //&amp;lt;var&amp;gt;&amp;lt;filename&amp;gt;&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a full buildable sound configuration file is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 0 //construct1.wav&lt;br /&gt;
0 0 //construct2.wav&lt;br /&gt;
1 1 //idle1.wav&lt;br /&gt;
0 0 //idle2.wav&lt;br /&gt;
0 0 //idle3.wav&lt;br /&gt;
0 0 //attack1.wav&lt;br /&gt;
0 0 //attack2.wav&lt;br /&gt;
0 0 //spawn1.wav&lt;br /&gt;
0 0 //spawn2.wav&lt;br /&gt;
0 0 //pain1.wav&lt;br /&gt;
0 0 //pain2.wav&lt;br /&gt;
1 0 //destroy1.wav&lt;br /&gt;
1 0 //destroy2.wav&lt;br /&gt;
0 0 //destroyed.wav&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Again, the comments only help human readers, and are indifferent to the game (do &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; reorder the lines!).&lt;br /&gt;
&lt;br /&gt;
==Sound filenames==&lt;br /&gt;
&lt;br /&gt;
The structure &amp;lt;code&amp;gt;cg_customSoundNames&amp;lt;/code&amp;gt; in [https://github.com/TremZ/Unvanquished/blob/master/src/gamelogic/gpp/src/cgame/cg_players.c src/gamelogic/gpp/src/cgame/cg_players.c] contains a list of some sounds.&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=457</id>
		<title>Compiling the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=457"/>
		<updated>2012-06-27T18:17:17Z</updated>

		<summary type="html">&lt;p&gt;Devhc: add info about wget on FreeBSD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mac OS X==&lt;br /&gt;
&lt;br /&gt;
The preferred way of building Unvanquished on Mac OS X is to use Apple's [https://developer.apple.com/xcode/ XCode] along with [http://www.cmake.org/cmake/resources/software.html CMake]; CMake is used to generate an XCode project file that is then used to compile the code.&lt;br /&gt;
&lt;br /&gt;
First, you need to [[Getting_the_source|acquire the source code]].&lt;br /&gt;
&lt;br /&gt;
You may use [http://home.comcast.net/~chet102103/compile.sh this script] to perform these tasks. If you downloaded the source to a folder named &amp;lt;code&amp;gt;Unvanquished&amp;lt;/code&amp;gt; in the current directory, a typical invocation would look like this:&lt;br /&gt;
&lt;br /&gt;
 $./compile.sh --bundle --compile -s Unvanquished --build Unvanquished-build --bundle-dest .&lt;br /&gt;
&lt;br /&gt;
You will also need to build the libraries from source.&lt;br /&gt;
&lt;br /&gt;
Unvanquished requires the following:&lt;br /&gt;
* The jpeg library from the [http://www.ijg.org/ Independent JPEG Group], version 8 or higher. (Version 6 was known to have problems).&lt;br /&gt;
* Simple DirectMedia Layer&lt;br /&gt;
* The OpenGL Extension Wrangler Library&lt;br /&gt;
&lt;br /&gt;
Optional libraries:&lt;br /&gt;
* WebP&lt;br /&gt;
* Theora&lt;br /&gt;
* Speex&lt;br /&gt;
* XVid&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
====JPEG====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.ijg.org/files/jpegsrc.v8d.tar.gz &amp;gt; jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ tar xvzf jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ cd jpeg-8d&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====The OpenGL Extension Wrangler Library (GLEW)====&lt;br /&gt;
&lt;br /&gt;
 $ curl -L https://sourceforge.net/projects/glew/files/glew/1.7.0/glew-1.7.0.tgz/download &amp;gt; glew-1.7.0.tgz&lt;br /&gt;
 $ tar xvzf glew-1.7.0.tgz&lt;br /&gt;
 $ cd glew-1.7.0&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Simple DirectMedia Layer (SDL)====&lt;br /&gt;
&lt;br /&gt;
At present, there are binaries for SDL.&lt;br /&gt;
&lt;br /&gt;
Intel systems running 10.5 or higher:&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15.dmg &amp;gt; SDL-1.2.15.dmg&lt;br /&gt;
 $ hdiutil attach SDL-1.2.15.dmg&lt;br /&gt;
 $ sudo cp -r /Volumes/SDL/SDL.framework /Library/Frameworks&lt;br /&gt;
 $ hdiutil detach /Volumes/SDL&lt;br /&gt;
&lt;br /&gt;
Intel or PPC systems running 10.4 or higher:&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15-OSX10.4.dmg &amp;gt; SDL-1.2.15-OSX10.4.dmg&lt;br /&gt;
 $ hdiutil attach SDL-1.2.15-OSX10.4.dmg&lt;br /&gt;
 $ sudo cp -r /Volumes/SDL/SDL.framework /Library/Frameworks&lt;br /&gt;
 $ hdiutil detach /Volumes/SDL&lt;br /&gt;
&lt;br /&gt;
====The GNU MP Bignum Library (libgmp)====&lt;br /&gt;
&lt;br /&gt;
 $ curl ftp://ftp.gmplib.org/pub/gmp-5.0.5/gmp-5.0.5.tar.bz2 &amp;gt; gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ tar xvjf gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ cd gmp-5.0.5&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Ogg====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz &amp;gt; libogg-1.3.0.tar.gz&lt;br /&gt;
 $ tar xvzf libogg-1.3.0.tar.gz&lt;br /&gt;
 $ cd libogg-1.3.0&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Vorbis====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz &amp;gt; libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ tar xvzf libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ cd libvorbis-1.3.3&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
===Configuring with CMake===&lt;br /&gt;
&lt;br /&gt;
# Run CMake.&lt;br /&gt;
# Enter the location of the source code.&lt;br /&gt;
# Enter the location in which you would like to build the source code. This should be a different directory.&lt;br /&gt;
# Click &amp;quot;Configure&amp;quot;. You will be prompted as to which generator you would like to use. If you have Xcode installed, choose that. Wait while the configuration process runs. You may have to set the following:&lt;br /&gt;
## If CMake did not find your jpeg headers for some reason, set &amp;lt;code&amp;gt;JPEG_INCLUDE_DIR&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/path/to/Unvanquished/src/libs/jpeg&amp;lt;/code&amp;gt;.&lt;br /&gt;
## You may safely disable &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; to avoid having to compile the library. (At present, the format is not used by any game assets.)&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; to avoid having to compile nettle and hogweed.&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; to avoid having to compile Speex.&lt;br /&gt;
## Uncheck &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; to avoid having to compile Theora or Xvid. (At present, there are not cutscenes or any such that require it.)&lt;br /&gt;
## '''You will probably not be able to compile with the GLSL optimizer enabled; uncheck &amp;lt;code&amp;gt;USE_GLSL_OPTIMIZER&amp;lt;/code&amp;gt;'''&lt;br /&gt;
## If you have selected to generate XCode project files, make the &amp;lt;code&amp;gt;SDLMAIN_LIBRARY&amp;lt;/code&amp;gt; field blank. This option is not available if you have the generator set to Unix makefiles.&lt;br /&gt;
# Click &amp;quot;Generate&amp;quot;.&lt;br /&gt;
# You may now close XCode.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
====With XCode====&lt;br /&gt;
# Either start XCode and open the project file (in the build directory you specified) or double-click the project file in Finder.&lt;br /&gt;
# Open the project file created by CMake, which should be in the build directory you specified.&lt;br /&gt;
# Change the active target to &amp;quot;ALL_BUILD&amp;quot; and click Product&amp;amp;rarr;Build.&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Terminal (Applications &amp;amp;rarr; Utilities &amp;amp;rarr; Terminal).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Type the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are on a multi-core or multi-processor machine, you may speed up the process by passing the &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; argument followed by the number of available cores to &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;; e.g., &amp;lt;code&amp;gt;make -j4&amp;lt;/code&amp;gt;. Note that doing so makes reading error messages more difficult, as multiple instances of the compiler will print to the screen at once, causing information to appear out of order.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing the build===&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
After compiling, you'll have to place the data files in the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; directory in your build directory. [[#Acquiring the Game Files|For download instructions, see below.]]&lt;br /&gt;
&lt;br /&gt;
Your file structure should look as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:Build_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
You may now start the application as such:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386&lt;br /&gt;
&lt;br /&gt;
Note that older machines will not support the new OpenGL 3 renderer, and must be started specifying the &amp;quot;vanilla&amp;quot; (aka &amp;quot;GL&amp;quot;) renderer:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386 +set cl_renderer GL&lt;br /&gt;
&lt;br /&gt;
===Bundling the Application===&lt;br /&gt;
&lt;br /&gt;
====With CPack====&lt;br /&gt;
&lt;br /&gt;
CPack is able to create standalone bundles (as well as many other types of installers). However you must generate the files using Unix Makefiles instead of XCode.&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ cpack -G Bundle&lt;br /&gt;
Some warnings will be printed however these can be safely ignored. There should be a file called Unvanquished.dmg in the Unvanquished-build folder.&lt;br /&gt;
&lt;br /&gt;
====Manually====&lt;br /&gt;
&lt;br /&gt;
You'll find the Mac [http://macdylibbundler.sourceforge.net/ dynamic library bundler] to be quite useful (you must generate the files using Unix Makefiles instead of XCode):&lt;br /&gt;
&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/macdylibbundler/files/macdylibbundler/0.4.1/dylibbundler0.4.1.zip/download &amp;gt; dylibbundler0.4.1.zip&lt;br /&gt;
 $ unzip dylibbundler0.4.1.zip&lt;br /&gt;
 $ cd dylibbundler&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
Once you've done that, you can proceed to create the application bundle. Note that these steps assume that you have downloaded the data files to &amp;lt;code&amp;gt;main/&amp;lt;/code&amp;gt; as shown above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git=/path/to/Unvanquished-git-repo&lt;br /&gt;
$ build=/path/to/Unvanquished-build-dir&lt;br /&gt;
$ mkdir -pv Unvanquished.app/Contents/{libs,MacOS,Resources,Frameworks}&lt;br /&gt;
$ cp -r $build/main Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ sips -s format tiff $git/debian/unvanquished.png --out temp.tiff&lt;br /&gt;
$ tiff2icns temp.tiff Unvanquished.app/Contents/Resources/Unvanquished.icns&lt;br /&gt;
$ rm temp.tiff&lt;br /&gt;
$ cp $build/daemon{,ded}.i386 $build/*.dylib Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ cp -r /Library/Frameworks/SDL.framework Unvanquished.app/Contents/Frameworks&lt;br /&gt;
$ install_name_tool -id @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/Frameworks/SDL.framework/Versions/A/SDL&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGLi386.dylib&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGL3i386.dylib&lt;br /&gt;
$ for binary in Unvanquished.app/Contents/MacOS/*.{i386,dylib}; do dylibbundler -b -x $binary -d $dest/Unvanquished.app/Contents/libs/; done&lt;br /&gt;
$ cp /usr/lib/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ chmod +w ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -id @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -change /usr/lib/libGLEW.1.7.0.dylib @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ cat &amp;gt; Unvanquished.app/Contents/Info.plist&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dict&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleDisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleExecutable&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;daemon.i386&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIconFile&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished.icns&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;net.Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleInfoDictionaryVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;6.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundlePackageType&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;APPL&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleShortVersionString&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt;&lt;br /&gt;
^d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;code&amp;gt;^d&amp;lt;/code&amp;gt; indicates pressing &amp;lt;span class=&amp;quot;key&amp;quot;&amp;gt;Ctrl&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;key&amp;quot;&amp;gt;D&amp;lt;/span&amp;gt; on the keyboard.&lt;br /&gt;
&lt;br /&gt;
The contents of the completed application bundle should look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Bundle_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&lt;br /&gt;
===Visual Studio===&lt;br /&gt;
&lt;br /&gt;
CMake can generate Visual Studio projects for unvanquished however this feature is relatively new and may have some bugs.&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
# Double click on Visual_Studio32.bat&lt;br /&gt;
# Open build-32/Daemon.sln in Visual Studio 2010.&lt;br /&gt;
# In the two text boxes in the toolbar, select &amp;quot;Release&amp;quot; or &amp;quot;Debug&amp;quot; in the first one and Win32 in the second one&lt;br /&gt;
# Press F5 to build solution and run application, or just use Build &amp;amp;rarr; Build Solution to compile the code.&lt;br /&gt;
&lt;br /&gt;
====Important Notes====&lt;br /&gt;
&lt;br /&gt;
* The CMake script currently only supports 32 bit builds however this will change in the future&lt;br /&gt;
* QVM, LLVM and glsl-optimizer are disabled and probably do not work correctly with CMake generated Visual Studio projects.&lt;br /&gt;
* ncurses is not supported under Visual Studio.&lt;br /&gt;
&lt;br /&gt;
===MinGW===&lt;br /&gt;
Unvanquished is supported under MinGW. The build process should be fairly similar to the Linux instructions.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: this may be incomplete --&amp;gt;&lt;br /&gt;
====Debian/Ubuntu====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libcurl4-gnutls-dev libfreetype6-dev libglew1.5-dev \&lt;br /&gt;
   libgmp3-dev libjpeg8-dev libncurses5-dev libogg-dev libopenal-dev \&lt;br /&gt;
   libpng12-dev libsdl1.2-dev libvorbis-dev zlib1g-dev nettle-dev \&lt;br /&gt;
   libwebp-dev libspeexdsp-dev libtheora-dev&lt;br /&gt;
&lt;br /&gt;
Actual dev package names may vary, e.g. libgmp-dev instead of libgmp3-dev and libglew-dev or libglew1.7-dev instead of libglew1.5-dev.&lt;br /&gt;
&lt;br /&gt;
Since we have a debian directory in the source, you can also to check what's needed then install the listed packages (choosing from alternatives as needed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ dpkg-checkbuilddeps&lt;br /&gt;
 …&lt;br /&gt;
 $ sudo apt-get install &amp;lt;var&amp;gt;package(s)&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If dpkg-checkbuilddeps produces no output, you have all necessary build dependencies. Also, debhelper's only needed if you're building .debs.&lt;br /&gt;
&lt;br /&gt;
====Gentoo====&lt;br /&gt;
&lt;br /&gt;
 $ emerge curl freetype glew gmp jpeg ncurses libogg openal libpng libsdl libvorbis zlib&lt;br /&gt;
&lt;br /&gt;
===Configuring the code with CMake===&lt;br /&gt;
&lt;br /&gt;
After you have [[Getting the source|acquired the source code]], you can proceed to compile. Unvanquished uses CMake, so you must have that installed. &lt;br /&gt;
&lt;br /&gt;
====Using ccmake (curses-based front-end)====&lt;br /&gt;
&lt;br /&gt;
On Debian or Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-curses-gui&lt;br /&gt;
&lt;br /&gt;
On Gentoo you should set the '''ncurses''' USE flag either globally or individually, just for cmake.&lt;br /&gt;
To add the USE flag globally, edit the USE array in /etc/make.conf for it to include '''ncurses'''.&lt;br /&gt;
To only install cmake with ncurses functionality, you could do the following:&lt;br /&gt;
&lt;br /&gt;
 $ echo 'dev-util/cmake ncurses' &amp;gt;&amp;gt; /etc/portage/package.use &amp;amp;&amp;amp; emerge cmake&lt;br /&gt;
&lt;br /&gt;
Note that in Ubuntu, &amp;lt;code&amp;gt;cmake-curses-gui&amp;lt;/code&amp;gt; is in Universe, which you may have to enable with &amp;lt;code&amp;gt;software-properties-gtk&amp;lt;/code&amp;gt;. Make sure to reload the software sources with &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt; afterwards.&lt;br /&gt;
&lt;br /&gt;
Next, configure the codebase.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir build&lt;br /&gt;
 $ cd build&lt;br /&gt;
 $ ccmake ..&lt;br /&gt;
&lt;br /&gt;
Or, in Debian or Ubuntu, you can build a package (but you'll need to have devscripts and fakeroot installed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ fakeroot dpkg-buildpackage -b -uc&lt;br /&gt;
 $ sudo dpkg -i &amp;lt;var&amp;gt;../unvanquished_*.deb&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once in &amp;lt;code&amp;gt;ccmake&amp;lt;/code&amp;gt;, use the following keys:&lt;br /&gt;
&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt; to configure. If an error occurs during this phase, make note of it and press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;e&amp;lt;/span&amp;gt; to dismiss it.&lt;br /&gt;
* Use the up and down arrow keys to navigate the compilation options.&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to enable or disable boolean options (i.e., on/off) or to edit textual options.&lt;br /&gt;
** Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Esc&amp;lt;/span&amp;gt; when editing a textual option to cancel the change.&lt;br /&gt;
&lt;br /&gt;
Once you have finished the configuration process, press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; again, then &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the makefile.&lt;br /&gt;
&lt;br /&gt;
====Using cmake-qt-gui (graphical front-end)====&lt;br /&gt;
&lt;br /&gt;
This graphical front end for cmake has its own package you must install:&lt;br /&gt;
&lt;br /&gt;
=====Debian/Ubuntu=====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-qt-gui&lt;br /&gt;
&lt;br /&gt;
=====Gentoo=====&lt;br /&gt;
&lt;br /&gt;
With the '''qt4''' USE flag enabled:&lt;br /&gt;
&lt;br /&gt;
 $ emerge cmake&lt;br /&gt;
&lt;br /&gt;
Once installed, run with &amp;lt;code&amp;gt;cmake-gui&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cmake-qt-gui.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
# Set the path where you have the source code downloaded.&lt;br /&gt;
# Set the path where you would like to build the engine. This may be the same directory if you wish.&lt;br /&gt;
# Click 'Configure'.&lt;br /&gt;
# Click 'Generate'.&lt;br /&gt;
&lt;br /&gt;
====Unnecessary libraries====&lt;br /&gt;
&lt;br /&gt;
Regardless of which front-end to cmake you use, you may want to disable some libraries that are not strictly necessary:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; &amp;amp;mdash; Some maps use WebP to store their textures. Currently this should have little impact on gameplay but more maps will likely use this format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_OPENAL&amp;lt;/code&amp;gt; &amp;amp;mdash; If this is disabled, SDL is used instead for sound.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CODEC_VORBIS&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause certain sound effects (those using the &amp;lt;code&amp;gt;.ogg&amp;lt;/code&amp;gt; format) not to play. At present, this has only a minor impact on gameplay, but more and more sounds will likely use the format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CURSES&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause the external (not in-game) console to not use curses; it will not be scrollable and will be similar to the console in the original Tremulous. This does in no way affect gameplay.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Theora.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Xvid.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_VOIP&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this removes VOIP support. Alternatively enabling &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; will use the libraries distributed with Unvanquished for VoIP&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; &amp;amp;mdash; Enable this to use the crypto libraries provided by Unvanquished.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ make -j4&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; switch to make allows you to speed up the compilation process by running it in multiple threads; set the number following this to the number of cores your processor(s) have.&lt;br /&gt;
&lt;br /&gt;
===Acquiring the Game Files===&lt;br /&gt;
&lt;br /&gt;
The game files are not in the Git repository, and must be downloaded separately.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ cd main&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak0.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak1.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak2.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Map%20Pack/maps.7z/download&lt;br /&gt;
&lt;br /&gt;
On FreeBSD, use &amp;lt;code&amp;gt;fetch -r&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt;. You can also get the pak files in this way (requires cURL):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir -p ~/.Unvanquished/main&lt;br /&gt;
 $ ./download-pk3.sh ~/.Unvanquished/main&lt;br /&gt;
&lt;br /&gt;
The maps archive file isn't strictly necessary: if you don't have a particular map, the game will, by default, download missing files for you.&lt;br /&gt;
&lt;br /&gt;
Now you can proceed to [[running the game]].&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
===CMake cannot locate Newton===&lt;br /&gt;
&lt;br /&gt;
If CMake cannot find Newton, you'll need to set it up yourself.&lt;br /&gt;
&lt;br /&gt;
It should be in &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;/path/to/Unvanquished&amp;lt;/var&amp;gt;/src/libs/libnewton/libs/&amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt;/libNewton.so&amp;lt;/code&amp;gt;.&lt;br /&gt;
Be sure to replace &amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt; with the proper directory name.&lt;br /&gt;
&lt;br /&gt;
Use CMake as before to change the &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt; build setting to the said path:&lt;br /&gt;
&lt;br /&gt;
# Start the CMake configurator:&amp;lt;pre&amp;gt;$ ccmake ..&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Scroll down and highlight &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to begin editing and input in the path.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; to configure and &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the new makefiles.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Q&amp;lt;/span&amp;gt; to quit.&lt;br /&gt;
# Recompile the source:&amp;lt;pre&amp;gt;$ make&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=455</id>
		<title>Compiling the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=455"/>
		<updated>2012-06-27T17:57:05Z</updated>

		<summary type="html">&lt;p&gt;Devhc: n*****&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mac OS X==&lt;br /&gt;
&lt;br /&gt;
The preferred way of building Unvanquished on Mac OS X is to use Apple's [https://developer.apple.com/xcode/ XCode] along with [http://www.cmake.org/cmake/resources/software.html CMake]; CMake is used to generate an XCode project file that is then used to compile the code.&lt;br /&gt;
&lt;br /&gt;
First, you need to [[Getting_the_source|acquire the source code]].&lt;br /&gt;
&lt;br /&gt;
You may use [http://home.comcast.net/~chet102103/compile.sh this script] to perform these tasks. If you downloaded the source to a folder named &amp;lt;code&amp;gt;Unvanquished&amp;lt;/code&amp;gt; in the current directory, a typical invocation would look like this:&lt;br /&gt;
&lt;br /&gt;
 $./compile.sh --bundle --compile -s Unvanquished --build Unvanquished-build --bundle-dest .&lt;br /&gt;
&lt;br /&gt;
You will also need to build the libraries from source.&lt;br /&gt;
&lt;br /&gt;
Unvanquished requires the following:&lt;br /&gt;
* The jpeg library from the [http://www.ijg.org/ Independent JPEG Group], version 8 or higher. (Version 6 was known to have problems).&lt;br /&gt;
* Simple DirectMedia Layer&lt;br /&gt;
* The OpenGL Extension Wrangler Library&lt;br /&gt;
&lt;br /&gt;
Optional libraries:&lt;br /&gt;
* WebP&lt;br /&gt;
* Theora&lt;br /&gt;
* Speex&lt;br /&gt;
* XVid&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
====JPEG====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.ijg.org/files/jpegsrc.v8d.tar.gz &amp;gt; jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ tar xvzf jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ cd jpeg-8d&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====The OpenGL Extension Wrangler Library (GLEW)====&lt;br /&gt;
&lt;br /&gt;
 $ curl -L https://sourceforge.net/projects/glew/files/glew/1.7.0/glew-1.7.0.tgz/download &amp;gt; glew-1.7.0.tgz&lt;br /&gt;
 $ tar xvzf glew-1.7.0.tgz&lt;br /&gt;
 $ cd glew-1.7.0&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Simple DirectMedia Layer (SDL)====&lt;br /&gt;
&lt;br /&gt;
At present, there are binaries for SDL.&lt;br /&gt;
&lt;br /&gt;
Intel systems running 10.5 or higher:&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15.dmg &amp;gt; SDL-1.2.15.dmg&lt;br /&gt;
 $ hdiutil attach SDL-1.2.15.dmg&lt;br /&gt;
 $ sudo cp -r /Volumes/SDL/SDL.framework /Library/Frameworks&lt;br /&gt;
 $ hdiutil detach /Volumes/SDL&lt;br /&gt;
&lt;br /&gt;
Intel or PPC systems running 10.4 or higher:&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15-OSX10.4.dmg &amp;gt; SDL-1.2.15-OSX10.4.dmg&lt;br /&gt;
 $ hdiutil attach SDL-1.2.15-OSX10.4.dmg&lt;br /&gt;
 $ sudo cp -r /Volumes/SDL/SDL.framework /Library/Frameworks&lt;br /&gt;
 $ hdiutil detach /Volumes/SDL&lt;br /&gt;
&lt;br /&gt;
====The GNU MP Bignum Library (libgmp)====&lt;br /&gt;
&lt;br /&gt;
 $ curl ftp://ftp.gmplib.org/pub/gmp-5.0.5/gmp-5.0.5.tar.bz2 &amp;gt; gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ tar xvjf gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ cd gmp-5.0.5&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Ogg====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz &amp;gt; libogg-1.3.0.tar.gz&lt;br /&gt;
 $ tar xvzf libogg-1.3.0.tar.gz&lt;br /&gt;
 $ cd libogg-1.3.0&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Vorbis====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz &amp;gt; libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ tar xvzf libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ cd libvorbis-1.3.3&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
===Configuring with CMake===&lt;br /&gt;
&lt;br /&gt;
# Run CMake.&lt;br /&gt;
# Enter the location of the source code.&lt;br /&gt;
# Enter the location in which you would like to build the source code. This should be a different directory.&lt;br /&gt;
# Click &amp;quot;Configure&amp;quot;. You will be prompted as to which generator you would like to use. If you have Xcode installed, choose that. Wait while the configuration process runs. You may have to set the following:&lt;br /&gt;
## If CMake did not find your jpeg headers for some reason, set &amp;lt;code&amp;gt;JPEG_INCLUDE_DIR&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/path/to/Unvanquished/src/libs/jpeg&amp;lt;/code&amp;gt;.&lt;br /&gt;
## You may safely disable &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; to avoid having to compile the library. (At present, the format is not used by any game assets.)&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; to avoid having to compile nettle and hogweed.&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; to avoid having to compile Speex.&lt;br /&gt;
## Uncheck &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; to avoid having to compile Theora or Xvid. (At present, there are not cutscenes or any such that require it.)&lt;br /&gt;
## '''You will probably not be able to compile with the GLSL optimizer enabled; uncheck &amp;lt;code&amp;gt;USE_GLSL_OPTIMIZER&amp;lt;/code&amp;gt;'''&lt;br /&gt;
## If you have selected to generate XCode project files, make the &amp;lt;code&amp;gt;SDLMAIN_LIBRARY&amp;lt;/code&amp;gt; field blank. This option is not available if you have the generator set to Unix makefiles.&lt;br /&gt;
# Click &amp;quot;Generate&amp;quot;.&lt;br /&gt;
# You may now close XCode.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
====With XCode====&lt;br /&gt;
# Either start XCode and open the project file (in the build directory you specified) or double-click the project file in Finder.&lt;br /&gt;
# Open the project file created by CMake, which should be in the build directory you specified.&lt;br /&gt;
# Change the active target to &amp;quot;ALL_BUILD&amp;quot; and click Product&amp;amp;rarr;Build.&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Terminal (Applications &amp;amp;rarr; Utilities &amp;amp;rarr; Terminal).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Type the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are on a multi-core or multi-processor machine, you may speed up the process by passing the &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; argument followed by the number of available cores to &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;; e.g., &amp;lt;code&amp;gt;make -j4&amp;lt;/code&amp;gt;. Note that doing so makes reading error messages more difficult, as multiple instances of the compiler will print to the screen at once, causing information to appear out of order.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing the build===&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
After compiling, you'll have to place the data files (&amp;lt;code&amp;gt;[http://sourceforge.net/projects/Unvanquished/files/Assets/pak0.pk3/download pak0.pk3]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[http://sourceforge.net/projects/Unvanquished/files/Assets/pak1.pk3/download pak1.pk3]&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;[http://sourceforge.net/projects/Unvanquished/files/Assets/pak2.pk3/download pak2.pk3]&amp;lt;/code&amp;gt;) in the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; directory in your build directory.&lt;br /&gt;
&lt;br /&gt;
 $ cd /path/to/Unvanquished&lt;br /&gt;
 $ cd main&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/Unvanquished/files/Assets/pak1.pk3/download &amp;gt; pak0.pk3&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/Unvanquished/files/Assets/pak1.pk3/download &amp;gt; pak1.pk3&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/Unvanquished/files/Assets/pak1.pk3/download &amp;gt; pak2.pk3&lt;br /&gt;
 $ cd ..&lt;br /&gt;
&lt;br /&gt;
Your file structure should look as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:Build_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
You may now start the application as such:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386&lt;br /&gt;
&lt;br /&gt;
Note that older machines will not support the new OpenGL 3 renderer, and must be started specifying the &amp;quot;vanilla&amp;quot; (aka &amp;quot;GL&amp;quot;) renderer:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386 +set cl_renderer GL&lt;br /&gt;
&lt;br /&gt;
===Bundling the Application===&lt;br /&gt;
&lt;br /&gt;
====With CPack====&lt;br /&gt;
&lt;br /&gt;
CPack is able to create standalone bundles (as well as many other types of installers). However you must generate the files using Unix Makefiles instead of XCode.&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ cpack -G Bundle&lt;br /&gt;
Some warnings will be printed however these can be safely ignored. There should be a file called Unvanquished.dmg in the Unvanquished-build folder.&lt;br /&gt;
&lt;br /&gt;
====Manually====&lt;br /&gt;
&lt;br /&gt;
You'll find the Mac [http://macdylibbundler.sourceforge.net/ dynamic library bundler] to be quite useful (you must generate the files using Unix Makefiles instead of XCode):&lt;br /&gt;
&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/macdylibbundler/files/macdylibbundler/0.4.1/dylibbundler0.4.1.zip/download &amp;gt; dylibbundler0.4.1.zip&lt;br /&gt;
 $ unzip dylibbundler0.4.1.zip&lt;br /&gt;
 $ cd dylibbundler&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
Once you've done that, you can proceed to create the application bundle. Note that these steps assume that you have downloaded the data files to &amp;lt;code&amp;gt;main/&amp;lt;/code&amp;gt; as shown above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git=/path/to/Unvanquished-git-repo&lt;br /&gt;
$ build=/path/to/Unvanquished-build-dir&lt;br /&gt;
$ mkdir -pv Unvanquished.app/Contents/{libs,MacOS,Resources,Frameworks}&lt;br /&gt;
$ cp -r $build/main Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ sips -s format tiff $git/debian/unvanquished.png --out temp.tiff&lt;br /&gt;
$ tiff2icns temp.tiff Unvanquished.app/Contents/Resources/Unvanquished.icns&lt;br /&gt;
$ rm temp.tiff&lt;br /&gt;
$ cp $build/daemon{,ded}.i386 $build/*.dylib Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ cp -r /Library/Frameworks/SDL.framework Unvanquished.app/Contents/Frameworks&lt;br /&gt;
$ install_name_tool -id @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/Frameworks/SDL.framework/Versions/A/SDL&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGLi386.dylib&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGL3i386.dylib&lt;br /&gt;
$ for binary in Unvanquished.app/Contents/MacOS/*.{i386,dylib}; do dylibbundler -b -x $binary -d $dest/Unvanquished.app/Contents/libs/; done&lt;br /&gt;
$ cp /usr/lib/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ chmod +w ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -id @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -change /usr/lib/libGLEW.1.7.0.dylib @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ cat &amp;gt; Unvanquished.app/Contents/Info.plist&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dict&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleDisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleExecutable&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;daemon.i386&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIconFile&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished.icns&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;net.Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleInfoDictionaryVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;6.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundlePackageType&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;APPL&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleShortVersionString&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt;&lt;br /&gt;
^d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;code&amp;gt;^d&amp;lt;/code&amp;gt; indicates pressing &amp;lt;span class=&amp;quot;key&amp;quot;&amp;gt;Ctrl&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;key&amp;quot;&amp;gt;D&amp;lt;/span&amp;gt; on the keyboard.&lt;br /&gt;
&lt;br /&gt;
The contents of the completed application bundle should look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Bundle_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&lt;br /&gt;
===Visual Studio===&lt;br /&gt;
&lt;br /&gt;
CMake can generate Visual Studio projects for unvanquished however this feature is relatively new and may have some bugs.&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
# Double click on Visual_Studio32.bat&lt;br /&gt;
# Open build-32/Daemon.sln in Visual Studio 2010.&lt;br /&gt;
# In the two text boxes in the toolbar, select &amp;quot;Release&amp;quot; or &amp;quot;Debug&amp;quot; in the first one and Win32 in the second one&lt;br /&gt;
# Press F5 to build solution and run application, or just use Build &amp;amp;rarr; Build Solution to compile the code.&lt;br /&gt;
&lt;br /&gt;
====Important Notes====&lt;br /&gt;
&lt;br /&gt;
* The CMake script currently only supports 32 bit builds however this will change in the future&lt;br /&gt;
* QVM, LLVM and glsl-optimizer are disabled and probably do not work correctly with CMake generated Visual Studio projects.&lt;br /&gt;
* ncurses is not supported under Visual Studio.&lt;br /&gt;
&lt;br /&gt;
===MinGW===&lt;br /&gt;
Unvanquished is supported under MinGW. The build process should be fairly similar to the Linux instructions.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: this may be incomplete --&amp;gt;&lt;br /&gt;
====Debian/Ubuntu====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libcurl4-gnutls-dev libfreetype6-dev libglew1.5-dev \&lt;br /&gt;
   libgmp3-dev libjpeg8-dev libncurses5-dev libogg-dev libopenal-dev \&lt;br /&gt;
   libpng12-dev libsdl1.2-dev libvorbis-dev zlib1g-dev nettle-dev \&lt;br /&gt;
   libwebp-dev libspeexdsp-dev libtheora-dev&lt;br /&gt;
&lt;br /&gt;
Actual dev package names may vary, e.g. libgmp-dev instead of libgmp3-dev and libglew-dev or libglew1.7-dev instead of libglew1.5-dev.&lt;br /&gt;
&lt;br /&gt;
Since we have a debian directory in the source, you can also to check what's needed then install the listed packages (choosing from alternatives as needed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ dpkg-checkbuilddeps&lt;br /&gt;
 …&lt;br /&gt;
 $ sudo apt-get install &amp;lt;var&amp;gt;package(s)&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If dpkg-checkbuilddeps produces no output, you have all necessary build dependencies. Also, debhelper's only needed if you're building .debs.&lt;br /&gt;
&lt;br /&gt;
====Gentoo====&lt;br /&gt;
&lt;br /&gt;
 $ emerge curl freetype glew gmp jpeg ncurses libogg openal libpng libsdl libvorbis zlib&lt;br /&gt;
&lt;br /&gt;
===Configuring the code with CMake===&lt;br /&gt;
&lt;br /&gt;
After you have [[Getting the source|acquired the source code]], you can proceed to compile. Unvanquished uses CMake, so you must have that installed. &lt;br /&gt;
&lt;br /&gt;
====Using ccmake (curses-based front-end)====&lt;br /&gt;
&lt;br /&gt;
On Debian or Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-curses-gui&lt;br /&gt;
&lt;br /&gt;
On Gentoo you should set the '''ncurses''' USE flag either globally or individually, just for cmake.&lt;br /&gt;
To add the USE flag globally, edit the USE array in /etc/make.conf for it to include '''ncurses'''.&lt;br /&gt;
To only install cmake with ncurses functionality, you could do the following:&lt;br /&gt;
&lt;br /&gt;
 $ echo 'dev-util/cmake ncurses' &amp;gt;&amp;gt; /etc/portage/package.use &amp;amp;&amp;amp; emerge cmake&lt;br /&gt;
&lt;br /&gt;
Note that in Ubuntu, &amp;lt;code&amp;gt;cmake-curses-gui&amp;lt;/code&amp;gt; is in Universe, which you may have to enable with &amp;lt;code&amp;gt;software-properties-gtk&amp;lt;/code&amp;gt;. Make sure to reload the software sources with &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt; afterwards.&lt;br /&gt;
&lt;br /&gt;
Next, configure the codebase.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir build&lt;br /&gt;
 $ cd build&lt;br /&gt;
 $ ccmake ..&lt;br /&gt;
&lt;br /&gt;
Or, in Debian or Ubuntu, you can build a package (but you'll need to have devscripts and fakeroot installed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ fakeroot dpkg-buildpackage -b -uc&lt;br /&gt;
 $ sudo dpkg -i &amp;lt;var&amp;gt;../unvanquished_*.deb&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once in &amp;lt;code&amp;gt;ccmake&amp;lt;/code&amp;gt;, use the following keys:&lt;br /&gt;
&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt; to configure. If an error occurs during this phase, make note of it and press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;e&amp;lt;/span&amp;gt; to dismiss it.&lt;br /&gt;
* Use the up and down arrow keys to navigate the compilation options.&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to enable or disable boolean options (i.e., on/off) or to edit textual options.&lt;br /&gt;
** Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Esc&amp;lt;/span&amp;gt; when editing a textual option to cancel the change.&lt;br /&gt;
&lt;br /&gt;
Once you have finished the configuration process, press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; again, then &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the makefile.&lt;br /&gt;
&lt;br /&gt;
====Using cmake-qt-gui (graphical front-end)====&lt;br /&gt;
&lt;br /&gt;
This graphical front end for cmake has its own package you must install:&lt;br /&gt;
&lt;br /&gt;
=====Debian/Ubuntu=====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-qt-gui&lt;br /&gt;
&lt;br /&gt;
=====Gentoo=====&lt;br /&gt;
&lt;br /&gt;
With the '''qt4''' USE flag enabled:&lt;br /&gt;
&lt;br /&gt;
 $ emerge cmake&lt;br /&gt;
&lt;br /&gt;
Once installed, run with &amp;lt;code&amp;gt;cmake-gui&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cmake-qt-gui.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
# Set the path where you have the source code downloaded.&lt;br /&gt;
# Set the path where you would like to build the engine. This may be the same directory if you wish.&lt;br /&gt;
# Click 'Configure'.&lt;br /&gt;
# Click 'Generate'.&lt;br /&gt;
&lt;br /&gt;
====Unnecessary libraries====&lt;br /&gt;
&lt;br /&gt;
Regardless of which front-end to cmake you use, you may want to disable some libraries that are not strictly necessary:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; &amp;amp;mdash; Some maps use WebP to store their textures. Currently this should have little impact on gameplay but more maps will likely use this format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_OPENAL&amp;lt;/code&amp;gt; &amp;amp;mdash; If this is disabled, SDL is used instead for sound.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CODEC_VORBIS&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause certain sound effects (those using the &amp;lt;code&amp;gt;.ogg&amp;lt;/code&amp;gt; format) not to play. At present, this has only a minor impact on gameplay, but more and more sounds will likely use the format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CURSES&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause the external (not in-game) console to not use curses; it will not be scrollable and will be similar to the console in the original Tremulous. This does in no way affect gameplay.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Theora.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Xvid.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_VOIP&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this removes VOIP support. Alternatively enabling &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; will use the libraries distributed with Unvanquished for VoIP&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; &amp;amp;mdash; Enable this to use the crypto libraries provided by Unvanquished.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ make -j4&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; switch to make allows you to speed up the compilation process by running it in multiple threads; set the number following this to the number of cores your processor(s) have.&lt;br /&gt;
&lt;br /&gt;
===Acquiring the Game Files===&lt;br /&gt;
&lt;br /&gt;
The game files are not in the Git repository, and must be downloaded separately.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ cd main&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak0.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak1.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak2.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Map%20Pack/maps.7z/download&lt;br /&gt;
&lt;br /&gt;
You can also get the pak files in this way (requires curl):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir -p ~/.Unvanquished/main&lt;br /&gt;
 $ ./download-pk3.sh ~/.Unvanquished/main&lt;br /&gt;
&lt;br /&gt;
The maps archive file isn't strictly necessary: if you don't have a particular map, the game will, by default, download missing files for you.&lt;br /&gt;
&lt;br /&gt;
Now you can proceed to [[running the game]].&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
===CMake cannot locate Newton===&lt;br /&gt;
&lt;br /&gt;
If CMake cannot find Newton, you'll need to set it up yourself.&lt;br /&gt;
&lt;br /&gt;
It should be in &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;/path/to/Unvanquished&amp;lt;/var&amp;gt;/src/libs/libnewton/libs/&amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt;/libNewton.so&amp;lt;/code&amp;gt;.&lt;br /&gt;
Be sure to replace &amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt; with the proper directory name.&lt;br /&gt;
&lt;br /&gt;
Use CMake as before to change the &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt; build setting to the said path:&lt;br /&gt;
&lt;br /&gt;
# Start the CMake configurator:&amp;lt;pre&amp;gt;$ ccmake ..&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Scroll down and highlight &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to begin editing and input in the path.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; to configure and &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the new makefiles.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Q&amp;lt;/span&amp;gt; to quit.&lt;br /&gt;
# Recompile the source:&amp;lt;pre&amp;gt;$ make&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=454</id>
		<title>Compiling the source</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Compiling_the_source&amp;diff=454"/>
		<updated>2012-06-27T17:55:03Z</updated>

		<summary type="html">&lt;p&gt;Devhc: /* CMake cannot locate Newton */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mac OS X==&lt;br /&gt;
&lt;br /&gt;
The preferred way of building Unvanquished on Mac OS X is to use Apple's [https://developer.apple.com/xcode/ XCode] along with [http://www.cmake.org/cmake/resources/software.html CMake]; CMake is used to generate an XCode project file that is then used to compile the code.&lt;br /&gt;
&lt;br /&gt;
First, you need to [[Getting_the_source|acquire the source code]].&lt;br /&gt;
&lt;br /&gt;
You may use [http://home.comcast.net/~chet102103/compile.sh this script] to perform these tasks. If you downloaded the source to a folder named &amp;lt;code&amp;gt;Unvanquished&amp;lt;/code&amp;gt; in the current directory, a typical invocation would look like this:&lt;br /&gt;
&lt;br /&gt;
 $./compile.sh --bundle --compile -s Unvanquished --build Unvanquished-build --bundle-dest .&lt;br /&gt;
&lt;br /&gt;
You will also need to build the libraries from source.&lt;br /&gt;
&lt;br /&gt;
Unvanquished requires the following:&lt;br /&gt;
* The jpeg library from the [http://www.ijg.org/ Independent JPEG Group], version 8 or higher. (Version 6 was known to have problems).&lt;br /&gt;
* Simple DirectMedia Layer&lt;br /&gt;
* The OpenGL Extension Wrangler Library&lt;br /&gt;
&lt;br /&gt;
Optional libraries:&lt;br /&gt;
* WebP&lt;br /&gt;
* Theora&lt;br /&gt;
* Speex&lt;br /&gt;
* XVid&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
====JPEG====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://www.ijg.org/files/jpegsrc.v8d.tar.gz &amp;gt; jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ tar xvzf jpegsrc.v8d.tar.gz&lt;br /&gt;
 $ cd jpeg-8d&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====The OpenGL Extension Wrangler Library (GLEW)====&lt;br /&gt;
&lt;br /&gt;
 $ curl -L https://sourceforge.net/projects/glew/files/glew/1.7.0/glew-1.7.0.tgz/download &amp;gt; glew-1.7.0.tgz&lt;br /&gt;
 $ tar xvzf glew-1.7.0.tgz&lt;br /&gt;
 $ cd glew-1.7.0&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Simple DirectMedia Layer (SDL)====&lt;br /&gt;
&lt;br /&gt;
At present, there are binaries for SDL.&lt;br /&gt;
&lt;br /&gt;
Intel systems running 10.5 or higher:&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15.dmg &amp;gt; SDL-1.2.15.dmg&lt;br /&gt;
 $ hdiutil attach SDL-1.2.15.dmg&lt;br /&gt;
 $ sudo cp -r /Volumes/SDL/SDL.framework /Library/Frameworks&lt;br /&gt;
 $ hdiutil detach /Volumes/SDL&lt;br /&gt;
&lt;br /&gt;
Intel or PPC systems running 10.4 or higher:&lt;br /&gt;
 $ curl http://www.libsdl.org/release/SDL-1.2.15-OSX10.4.dmg &amp;gt; SDL-1.2.15-OSX10.4.dmg&lt;br /&gt;
 $ hdiutil attach SDL-1.2.15-OSX10.4.dmg&lt;br /&gt;
 $ sudo cp -r /Volumes/SDL/SDL.framework /Library/Frameworks&lt;br /&gt;
 $ hdiutil detach /Volumes/SDL&lt;br /&gt;
&lt;br /&gt;
====The GNU MP Bignum Library (libgmp)====&lt;br /&gt;
&lt;br /&gt;
 $ curl ftp://ftp.gmplib.org/pub/gmp-5.0.5/gmp-5.0.5.tar.bz2 &amp;gt; gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ tar xvjf gmp-5.0.5.tar.bz2&lt;br /&gt;
 $ cd gmp-5.0.5&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Ogg====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz &amp;gt; libogg-1.3.0.tar.gz&lt;br /&gt;
 $ tar xvzf libogg-1.3.0.tar.gz&lt;br /&gt;
 $ cd libogg-1.3.0&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
====Vorbis====&lt;br /&gt;
&lt;br /&gt;
 $ curl http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz &amp;gt; libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ tar xvzf libvorbis-1.3.3.tar.gz&lt;br /&gt;
 $ cd libvorbis-1.3.3&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
===Configuring with CMake===&lt;br /&gt;
&lt;br /&gt;
# Run CMake.&lt;br /&gt;
# Enter the location of the source code.&lt;br /&gt;
# Enter the location in which you would like to build the source code. This should be a different directory.&lt;br /&gt;
# Click &amp;quot;Configure&amp;quot;. You will be prompted as to which generator you would like to use. If you have Xcode installed, choose that. Wait while the configuration process runs. You may have to set the following:&lt;br /&gt;
## If CMake did not find your jpeg headers for some reason, set &amp;lt;code&amp;gt;JPEG_INCLUDE_DIR&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/path/to/Unvanquished/src/libs/jpeg&amp;lt;/code&amp;gt;.&lt;br /&gt;
## You may safely disable &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; to avoid having to compile the library. (At present, the format is not used by any game assets.)&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; to avoid having to compile nettle and hogweed.&lt;br /&gt;
## Check &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; to avoid having to compile Speex.&lt;br /&gt;
## Uncheck &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; to avoid having to compile Theora or Xvid. (At present, there are not cutscenes or any such that require it.)&lt;br /&gt;
## '''You will probably not be able to compile with the GLSL optimizer enabled; uncheck &amp;lt;code&amp;gt;USE_GLSL_OPTIMIZER&amp;lt;/code&amp;gt;'''&lt;br /&gt;
## If you have selected to generate XCode project files, make the &amp;lt;code&amp;gt;SDLMAIN_LIBRARY&amp;lt;/code&amp;gt; field blank. This option is not available if you have the generator set to Unix makefiles.&lt;br /&gt;
# Click &amp;quot;Generate&amp;quot;.&lt;br /&gt;
# You may now close XCode.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
====With XCode====&lt;br /&gt;
# Either start XCode and open the project file (in the build directory you specified) or double-click the project file in Finder.&lt;br /&gt;
# Open the project file created by CMake, which should be in the build directory you specified.&lt;br /&gt;
# Change the active target to &amp;quot;ALL_BUILD&amp;quot; and click Product&amp;amp;rarr;Build.&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start Terminal (Applications &amp;amp;rarr; Utilities &amp;amp;rarr; Terminal).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Type the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are on a multi-core or multi-processor machine, you may speed up the process by passing the &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; argument followed by the number of available cores to &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;; e.g., &amp;lt;code&amp;gt;make -j4&amp;lt;/code&amp;gt;. Note that doing so makes reading error messages more difficult, as multiple instances of the compiler will print to the screen at once, causing information to appear out of order.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing the build===&lt;br /&gt;
&lt;br /&gt;
====With Unix Makefiles====&lt;br /&gt;
&lt;br /&gt;
After compiling, you'll have to place the data files (&amp;lt;code&amp;gt;[http://sourceforge.net/projects/Unvanquished/files/Assets/pak0.pk3/download pak0.pk3]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[http://sourceforge.net/projects/Unvanquished/files/Assets/pak1.pk3/download pak1.pk3]&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;[http://sourceforge.net/projects/Unvanquished/files/Assets/pak2.pk3/download pak2.pk3]&amp;lt;/code&amp;gt;) in the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; directory in your build directory.&lt;br /&gt;
&lt;br /&gt;
 $ cd /path/to/Unvanquished&lt;br /&gt;
 $ cd main&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/Unvanquished/files/Assets/pak1.pk3/download &amp;gt; pak0.pk3&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/Unvanquished/files/Assets/pak1.pk3/download &amp;gt; pak1.pk3&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/Unvanquished/files/Assets/pak1.pk3/download &amp;gt; pak2.pk3&lt;br /&gt;
 $ cd ..&lt;br /&gt;
&lt;br /&gt;
Your file structure should look as follows:&lt;br /&gt;
&lt;br /&gt;
[[File:Build_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
You may now start the application as such:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386&lt;br /&gt;
&lt;br /&gt;
Note that older machines will not support the new OpenGL 3 renderer, and must be started specifying the &amp;quot;vanilla&amp;quot; (aka &amp;quot;GL&amp;quot;) renderer:&lt;br /&gt;
&lt;br /&gt;
 $ ./daemon.i386 +set cl_renderer GL&lt;br /&gt;
&lt;br /&gt;
===Bundling the Application===&lt;br /&gt;
&lt;br /&gt;
====With CPack====&lt;br /&gt;
&lt;br /&gt;
CPack is able to create standalone bundles (as well as many other types of installers). However you must generate the files using Unix Makefiles instead of XCode.&lt;br /&gt;
$ cd /path/to/Unvanquished-build&lt;br /&gt;
$ cpack -G Bundle&lt;br /&gt;
Some warnings will be printed however these can be safely ignored. There should be a file called Unvanquished.dmg in the Unvanquished-build folder.&lt;br /&gt;
&lt;br /&gt;
====Manually====&lt;br /&gt;
&lt;br /&gt;
You'll find the Mac [http://macdylibbundler.sourceforge.net/ dynamic library bundler] to be quite useful (you must generate the files using Unix Makefiles instead of XCode):&lt;br /&gt;
&lt;br /&gt;
 $ curl -L http://sourceforge.net/projects/macdylibbundler/files/macdylibbundler/0.4.1/dylibbundler0.4.1.zip/download &amp;gt; dylibbundler0.4.1.zip&lt;br /&gt;
 $ unzip dylibbundler0.4.1.zip&lt;br /&gt;
 $ cd dylibbundler&lt;br /&gt;
 $ make&lt;br /&gt;
 $ sudo make install&lt;br /&gt;
&lt;br /&gt;
Once you've done that, you can proceed to create the application bundle. Note that these steps assume that you have downloaded the data files to &amp;lt;code&amp;gt;main/&amp;lt;/code&amp;gt; as shown above:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git=/path/to/Unvanquished-git-repo&lt;br /&gt;
$ build=/path/to/Unvanquished-build-dir&lt;br /&gt;
$ mkdir -pv Unvanquished.app/Contents/{libs,MacOS,Resources,Frameworks}&lt;br /&gt;
$ cp -r $build/main Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ sips -s format tiff $git/debian/unvanquished.png --out temp.tiff&lt;br /&gt;
$ tiff2icns temp.tiff Unvanquished.app/Contents/Resources/Unvanquished.icns&lt;br /&gt;
$ rm temp.tiff&lt;br /&gt;
$ cp $build/daemon{,ded}.i386 $build/*.dylib Unvanquished.app/Contents/MacOS&lt;br /&gt;
$ cp -r /Library/Frameworks/SDL.framework Unvanquished.app/Contents/Frameworks&lt;br /&gt;
$ install_name_tool -id @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/Frameworks/SDL.framework/Versions/A/SDL&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGLi386.dylib&lt;br /&gt;
$ install_name_tool -change @rpath/SDL.framework/Versions/A/SDL @executable_path/../Frameworks/SDL.framework/Versions/A/SDL Unvanquished.app/Contents/MacOS/librendererGL3i386.dylib&lt;br /&gt;
$ for binary in Unvanquished.app/Contents/MacOS/*.{i386,dylib}; do dylibbundler -b -x $binary -d $dest/Unvanquished.app/Contents/libs/; done&lt;br /&gt;
$ cp /usr/lib/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ chmod +w ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -id @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/libs/libGLEW.1.7.0.dylib&lt;br /&gt;
$ install_name_tool -change /usr/lib/libGLEW.1.7.0.dylib @executable_path/../libs/libGLEW.1.7.0.dylib ./Unvanquished.app/Contents/MacOS/daemon.i386&lt;br /&gt;
$ cat &amp;gt; Unvanquished.app/Contents/Info.plist&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dict&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleDisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleExecutable&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;daemon.i386&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIconFile&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;Unvanquished.icns&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;net.Unvanquished&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleInfoDictionaryVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;6.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundlePackageType&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;APPL&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleShortVersionString&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;key&amp;gt;CFBundleVersion&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;string&amp;gt;0.4.0&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt;&lt;br /&gt;
^d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: &amp;lt;code&amp;gt;^d&amp;lt;/code&amp;gt; indicates pressing &amp;lt;span class=&amp;quot;key&amp;quot;&amp;gt;Ctrl&amp;lt;/span&amp;gt;+&amp;lt;span class=&amp;quot;key&amp;quot;&amp;gt;D&amp;lt;/span&amp;gt; on the keyboard.&lt;br /&gt;
&lt;br /&gt;
The contents of the completed application bundle should look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Bundle_dir_Mac_OS_X.png]]&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&lt;br /&gt;
===Visual Studio===&lt;br /&gt;
&lt;br /&gt;
CMake can generate Visual Studio projects for unvanquished however this feature is relatively new and may have some bugs.&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
# Double click on Visual_Studio32.bat&lt;br /&gt;
# Open build-32/Daemon.sln in Visual Studio 2010.&lt;br /&gt;
# In the two text boxes in the toolbar, select &amp;quot;Release&amp;quot; or &amp;quot;Debug&amp;quot; in the first one and Win32 in the second one&lt;br /&gt;
# Press F5 to build solution and run application, or just use Build &amp;amp;rarr; Build Solution to compile the code.&lt;br /&gt;
&lt;br /&gt;
====Important Notes====&lt;br /&gt;
&lt;br /&gt;
* The CMake script currently only supports 32 bit builds however this will change in the future&lt;br /&gt;
* QVM, LLVM and glsl-optimizer are disabled and probably do not work correctly with CMake generated Visual Studio projects.&lt;br /&gt;
* ncurses is not supported under Visual Studio.&lt;br /&gt;
&lt;br /&gt;
===MinGW===&lt;br /&gt;
Unvanquished is supported under MinGW. The build process should be fairly similar to the Linux instructions.&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- TODO: this may be incomplete --&amp;gt;&lt;br /&gt;
====Debian/Ubuntu====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install libcurl4-gnutls-dev libfreetype6-dev libglew1.5-dev \&lt;br /&gt;
   libgmp3-dev libjpeg8-dev libncurses5-dev libogg-dev libopenal-dev \&lt;br /&gt;
   libpng12-dev libsdl1.2-dev libvorbis-dev zlib1g-dev nettle-dev \&lt;br /&gt;
   libwebp-dev libspeexdsp-dev libtheora-dev&lt;br /&gt;
&lt;br /&gt;
Actual dev package names may vary, e.g. libgmp-dev instead of libgmp3-dev and libglew-dev or libglew1.7-dev instead of libglew1.5-dev.&lt;br /&gt;
&lt;br /&gt;
Since we have a debian directory in the source, you can also to check what's needed then install the listed packages (choosing from alternatives as needed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ dpkg-checkbuilddeps&lt;br /&gt;
 …&lt;br /&gt;
 $ sudo apt-get install &amp;lt;var&amp;gt;package(s)&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If dpkg-checkbuilddeps produces no output, you have all necessary build dependencies. Also, debhelper's only needed if you're building .debs.&lt;br /&gt;
&lt;br /&gt;
====Gentoo====&lt;br /&gt;
&lt;br /&gt;
 $ emerge curl freetype glew gmp jpeg ncurses libogg openal libpng libsdl libvorbis zlib&lt;br /&gt;
&lt;br /&gt;
===Configuring the code with CMake===&lt;br /&gt;
&lt;br /&gt;
After you have [[Getting the source|acquired the source code]], you can proceed to compile. Unvanquished uses CMake, so you must have that installed. &lt;br /&gt;
&lt;br /&gt;
====Using ccmake (curses-based front-end)====&lt;br /&gt;
&lt;br /&gt;
On Debian or Ubuntu:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-curses-gui&lt;br /&gt;
&lt;br /&gt;
On Gentoo you should set the '''ncurses''' USE flag either globally or individually, just for cmake.&lt;br /&gt;
To add the USE flag globally, edit the USE array in /etc/make.conf for it to include '''ncurses'''.&lt;br /&gt;
To only install cmake with ncurses functionality, you could do the following:&lt;br /&gt;
&lt;br /&gt;
 $ echo 'dev-util/cmake ncurses' &amp;gt;&amp;gt; /etc/portage/package.use &amp;amp;&amp;amp; emerge cmake&lt;br /&gt;
&lt;br /&gt;
Note that in Ubuntu, &amp;lt;code&amp;gt;cmake-curses-gui&amp;lt;/code&amp;gt; is in Universe, which you may have to enable with &amp;lt;code&amp;gt;software-properties-gtk&amp;lt;/code&amp;gt;. Make sure to reload the software sources with &amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt; afterwards.&lt;br /&gt;
&lt;br /&gt;
Next, configure the codebase.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir build&lt;br /&gt;
 $ cd build&lt;br /&gt;
 $ ccmake ..&lt;br /&gt;
&lt;br /&gt;
Or, in Debian or Ubuntu, you can build a package (but you'll need to have devscripts and fakeroot installed):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;/path/to/unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ fakeroot dpkg-buildpackage -b -uc&lt;br /&gt;
 $ sudo dpkg -i &amp;lt;var&amp;gt;../unvanquished_*.deb&amp;lt;/var&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once in &amp;lt;code&amp;gt;ccmake&amp;lt;/code&amp;gt;, use the following keys:&lt;br /&gt;
&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt; to configure. If an error occurs during this phase, make note of it and press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;e&amp;lt;/span&amp;gt; to dismiss it.&lt;br /&gt;
* Use the up and down arrow keys to navigate the compilation options.&lt;br /&gt;
* Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to enable or disable boolean options (i.e., on/off) or to edit textual options.&lt;br /&gt;
** Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Esc&amp;lt;/span&amp;gt; when editing a textual option to cancel the change.&lt;br /&gt;
&lt;br /&gt;
Once you have finished the configuration process, press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; again, then &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the makefile.&lt;br /&gt;
&lt;br /&gt;
====Using cmake-qt-gui (graphical front-end)====&lt;br /&gt;
&lt;br /&gt;
This graphical front end for cmake has its own package you must install:&lt;br /&gt;
&lt;br /&gt;
=====Debian/Ubuntu=====&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install cmake-qt-gui&lt;br /&gt;
&lt;br /&gt;
=====Gentoo=====&lt;br /&gt;
&lt;br /&gt;
With the '''qt4''' USE flag enabled:&lt;br /&gt;
&lt;br /&gt;
 $ emerge cmake&lt;br /&gt;
&lt;br /&gt;
Once installed, run with &amp;lt;code&amp;gt;cmake-gui&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Cmake-qt-gui.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
# Set the path where you have the source code downloaded.&lt;br /&gt;
# Set the path where you would like to build the engine. This may be the same directory if you wish.&lt;br /&gt;
# Click 'Configure'.&lt;br /&gt;
# Click 'Generate'.&lt;br /&gt;
&lt;br /&gt;
====Unnecessary libraries====&lt;br /&gt;
&lt;br /&gt;
Regardless of which front-end to cmake you use, you may want to disable some libraries that are not strictly necessary:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_WEBP&amp;lt;/code&amp;gt; &amp;amp;mdash; Some maps use WebP to store their textures. Currently this should have little impact on gameplay but more maps will likely use this format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_OPENAL&amp;lt;/code&amp;gt; &amp;amp;mdash; If this is disabled, SDL is used instead for sound.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CODEC_VORBIS&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause certain sound effects (those using the &amp;lt;code&amp;gt;.ogg&amp;lt;/code&amp;gt; format) not to play. At present, this has only a minor impact on gameplay, but more and more sounds will likely use the format in the future.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CURSES&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this will cause the external (not in-game) console to not use curses; it will not be scrollable and will be similar to the console in the original Tremulous. This does in no way affect gameplay.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_THEORA&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Theora.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_CIN_XVID&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this prevents videos from being recorded in Xvid.&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_VOIP&amp;lt;/code&amp;gt; &amp;amp;mdash; Disabling this removes VOIP support. Alternatively enabling &amp;lt;code&amp;gt;USE_INTERNAL_SPEEX&amp;lt;/code&amp;gt; will use the libraries distributed with Unvanquished for VoIP&lt;br /&gt;
* &amp;lt;code&amp;gt;USE_INTERNAL_CRYPTO&amp;lt;/code&amp;gt; &amp;amp;mdash; Enable this to use the crypto libraries provided by Unvanquished.&lt;br /&gt;
&lt;br /&gt;
===Compiling===&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ make -j4&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt; switch to make allows you to speed up the compilation process by running it in multiple threads; set the number following this to the number of cores your processor(s) have.&lt;br /&gt;
&lt;br /&gt;
===Acquiring the Game Files===&lt;br /&gt;
&lt;br /&gt;
The game files are not in the Git repository, and must be downloaded separately.&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished/build&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ cd main&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak0.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak1.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Assets/pak2.pk3/download&lt;br /&gt;
 $ wget http://sourceforge.net/projects/unvanquished/files/Map%20Pack/maps.7z/download&lt;br /&gt;
&lt;br /&gt;
You can also get the pak files in this way (requires curl):&lt;br /&gt;
&lt;br /&gt;
 $ cd &amp;lt;var&amp;gt;path/to/Unvanquished&amp;lt;/var&amp;gt;&lt;br /&gt;
 $ mkdir -p ~/.Unvanquished/main&lt;br /&gt;
 $ ./download-pk3.sh ~/.Unvanquished/main&lt;br /&gt;
&lt;br /&gt;
The maps archive file isn't strictly necessary: if you don't have a particular map, the game will normally download it for you.&lt;br /&gt;
&lt;br /&gt;
Now you can proceed to [[running the game]].&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
===CMake cannot locate Newton===&lt;br /&gt;
&lt;br /&gt;
If CMake cannot find Newton, you'll need to set it up yourself.&lt;br /&gt;
&lt;br /&gt;
It should be in &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;/path/to/Unvanquished&amp;lt;/var&amp;gt;/src/libs/libnewton/libs/&amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt;/libNewton.so&amp;lt;/code&amp;gt;.&lt;br /&gt;
Be sure to replace &amp;lt;var&amp;gt;your_os&amp;lt;/var&amp;gt; with the proper directory name.&lt;br /&gt;
&lt;br /&gt;
Use CMake as before to change the &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt; build setting to the said path:&lt;br /&gt;
&lt;br /&gt;
# Start the CMake configurator:&amp;lt;pre&amp;gt;$ ccmake ..&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Scroll down and highlight &amp;lt;code&amp;gt;NEWTON_LIBRARY&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Enter&amp;lt;/span&amp;gt; to begin editing and input in the path.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;C&amp;lt;/span&amp;gt; to configure and &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;G&amp;lt;/span&amp;gt; to generate the new makefiles.&lt;br /&gt;
# Press &amp;lt;span class=&amp;quot;hotkey&amp;quot;&amp;gt;Q&amp;lt;/span&amp;gt; to quit.&lt;br /&gt;
# Recompile the source:&amp;lt;pre&amp;gt;$ make&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
	<entry>
		<id>https://staging-wiki.unvanquished.net/index.php?title=Engine_features&amp;diff=452</id>
		<title>Engine features</title>
		<link rel="alternate" type="text/html" href="https://staging-wiki.unvanquished.net/index.php?title=Engine_features&amp;diff=452"/>
		<updated>2012-06-27T17:12:15Z</updated>

		<summary type="html">&lt;p&gt;Devhc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
The Daemon engine used by Unvanquished is a fork of the OpenWolf engine, which combines many features of the number of Quake 3 derivatives in existence, as well as a number of features unique to it.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
&lt;br /&gt;
Also see the list of [[New_Cvars|new cvars]].&lt;br /&gt;
&lt;br /&gt;
===Gameplay===&lt;br /&gt;
&lt;br /&gt;
* [[Navigation Meshes | Navigation-mesh]] based bot AI&lt;br /&gt;
* [[Voice say system]]&lt;br /&gt;
&lt;br /&gt;
===Rendering===&lt;br /&gt;
&lt;br /&gt;
* Legacy OpenGL renderer or a more modern (XReal-derived) OpenGL version 3 compliant renderer.&lt;br /&gt;
* [[Stereoscopic rendering|Stereoscopic (3d) rendering]]&lt;br /&gt;
* MD3 and MD5 model support&lt;br /&gt;
* Improved shader system&lt;br /&gt;
** Procedural vertex deformation&lt;br /&gt;
** Specular mapping (color and intensity)&lt;br /&gt;
** Bump (heightmap), normal, and parallax mapping&lt;br /&gt;
* Support for a number of image formats (JPEG, WebP, PNG, TGA)&lt;br /&gt;
* Outline fonts&lt;br /&gt;
* Procedural animation blending&lt;br /&gt;
&lt;br /&gt;
===Networking===&lt;br /&gt;
&lt;br /&gt;
* In-game IRC client&lt;br /&gt;
* VoIP support&lt;br /&gt;
&lt;br /&gt;
===Miscellaneous===&lt;br /&gt;
&lt;br /&gt;
* Localization support&lt;br /&gt;
* Curses-based console&lt;/div&gt;</summary>
		<author><name>Devhc</name></author>
	</entry>
</feed>