<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
	<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
	<meta name="keywords" content="osirion, free, game, space, trade, combat, freelancer, privateer, opengl, radiant, gpl, creative commons">
	<link rel="stylesheet" type="text/css" href="osirion.css">
	<link rel="icon" type="image/png" href="http://osirion.org/icon.png">
	<title>Project::OSiRiON - Building the development version</title>
</head>

<body>
<div id="page">

<!-- header and menu ======================================= -->

<table class = "osirionmenu" width="100%" cellpadding="0" cellspacing="0"  border="0">
<tr>
	<td>
		<a href="http://osirion.org"><img class="osirionmenu" src="images/banner.png" alt="Project::OSiRiON"></a>
	</td>
</tr><tr>
	<td class="osirionmenu">
		<a class="osirionmenu" href="http://osirion.org/">News</a> .
		<a class="osirioncurrent" href="index.html">Documentation</a> .
		<a class="osirionmenu" href="http://osirion.org/index.php?page=screenshots">Screenshots</a> .
		<a class="osirionmenu" href="http://osirion.org/index.php?page=downloads">Downloads</a> .
		<a class="osirionmenu" href="http://osirion.org/forum/">Forum</a> .
		<a class="osirionmenu" href="http://osirion.org/wiki/">Wiki</a> .
		<a class="osirionmenu" href="http://osirion.org/tracker/">Tracker</a>
	</td>
</tr>
</table>

<div id="pagecontent">

<!-- Building the development version ====================== -->

<div class="content">

<h1 class="content">Building the development version</h1>

<p class="content">
	The latest release is usually lagging behind current development. If you want to check
	the latest developments for yourself, you can get the most recent source code and game
	data from the subversion repository.
</p>
<p class="content">
	Building the development version is very similar to <a href="installation_source.html">building
	from source code</a>. The system requirements still apply. Additionally you will need
	a subversion client.
</p>
<ul class="content">
	<li class="content"><a href="#download_source">Obtaining the source code</a>
	<li class="content"><a href="#download_data">Obtaining the game data</a>
	<li class="content"><a href="#configure">Configuring the source code</a>
	<li class="content"><a href="#building">Building the binaries</a>
	<li class="content"><a href="#running">Running</a>
	<li class="content"><a href="#updating">Updating</a>
	<li class="content"><a href="#source_data">Source data</a> <span class="superscript">optional</span>
	<li class="content"><a href="#radiant_support">Radiant support files</a> <span class="superscript">optional</span>
	<li class="content"><a href="#organization">Organization of the distribution</a>
</ul>

<p></p>

</div> <!-- class="content" -->

<!-- Obtaining the source code ===================================== -->

<div class="content">

<h2 class="content" id="download_source">Obtaining the source code</h2>

<p class="content">
	On linux, you can use the Subversion command line client tool. The following 
	command will create a new subdirectory <span class="fixed">osirion</span> and download the source code into it.
</p>
<div class="fixed">
	svn checkout svn://osirion.org/osirion osirion
</div>
<p class="content">
	On windows, you can use the Turtoisesvn SubVersion client to access the
	SVN repositories. You can download it here:
</p>
<ul class="content">
	<li class="content"><a href="http://tortoisesvn.tigris.org">http://tortoisesvn.tigris.org</a>
</ul>
<p class="content">
	Enter the new directory:
</p>
<div class="fixed">
	cd osirion
</div>
<p class="content"></p>

</div> <!-- class="content" -->

<!-- Obtaining the game data ======================================= -->

<div class="content">

<h2 class="content" id="download_data">Obtaining the game data</h2>
<p class="content">
	The game data should be located in the <span class="fixed">data</span> subdirectory of the main distribution.
	You can use the game data package from the website or get it from the osirion-data subversion repository:
	<ul class="content">
		<li class="content"><a href="svn://osirion.org/osirion-data">svn://osirion.org/osirion-data</a>
	</ul>
</p>
<p class="content">
	Run the following command from within the main distribution directory to download
	the game data into the <span class="fixed">data</span> subdirectory:
</p>
<div class="fixed">
	svn checkout svn://osirion.org/osirion-data data
</div>

<p class="content"></p>

</div> <!-- class="content" -->

<!-- Configuring the source code =================================== -->

<div class="content">

<h2 class="content" id="configure">Configuring the source code</h2>
<p class="content">
	Create the configure script:
</p>
<div class="fixed">
	autoreconf -i
</div>
<p class="content">
	Create a build directory, If something goes wrong, or building doesn't work any more after updating,
	you can just delete the build directory and start over without destorying the working copy.
	Enter the build directory and configure the source code:
</p>
<div class="fixed">
	mkdir build<br>
	cd build<br>
	../configure --with-bullet=/usr/local --enable-static-bullet
</div>
<p class="content">
	Use the <span class="fixed">--help</span> option to get a list of all available options: 
</p>
<div class="fixed">
	../configure --help
</div>

<p class="content">
If you want to use clang, you'll need pass the <fixed>-Wno-overloaded-virtual</fixed> switch to the compiler,
to prevent the build from failing with a warning on the bullet header files:
</p>
<div class="fixed">
	CC=clang CXX=clang++ CXXFLAGS="-Wno-overloaded-virtual" ../configure
</div>

<p class="content"></p>

</div> <!-- class="content" -->

<!-- Building the binaries ========================================== -->

<div class="content">

<h2 class="content" id="building">Building the binaries</h2>
<p class="content">
	Compile the source code:
</p>
<div class="fixed">
	make -j2
</div>
<p class="content">
	The <span class="fixed">-j2</span> options tells make to use two threads while building, if you have a
	quad-core cpu, you can use <span class="fixed">-j4</span>.
</p>
<p class="content">
	The binaries will be built in the <span class="fixed">src/</span> subdirectory of the build directory.
</p>
<p class="content">
	<b>Important</b>:<br>
	<span class="fixed">make install</span> is not supported. Results are unpredictable.
</p>
<p class="content">
	Leave the build directory:
</p>
<div class="fixed">
	cd ..
</div>

<p class="content"></p>

</div> <!-- class="content" -->

<!-- Running ======================================================= -->

<div class="content">

<h2 class="content" id="running">Running</h2>
<p class="content">
	The client and the dedicated server will look for game data in the <span class="fixed">data</span> subdirectory 
	of the current working directory. Since the binaries are build in the <span class="fixed">src</span> you will
	have start them with the <span class="fixed">src/</span> prefix.
</p>
<p class="content">
	To start the client:
</p>
<div class="fixed">
	./build/src/osirion
</div>
<p class="content">
	If the client opens a new window and immediatly close it again, it probably could not find
	the game data and exited. Check your installation.
</p>
<p class="content">
	To start the dedicated server:
</p>
<div class="fixed">
	./build/src/osiriond
</div>
<p class="content">
	If you are using windows, the binaries will be called <span class="fixed">osirion.exe</span> and <span class="fixed">osiriond.exe</span>.
</p>

</div> <!-- class="content" -->

<!-- Updating ====================================================== -->

<Div class="content">

<h2 class="content" id="updating">Updating</h2>
<p class="content">
	Once you downloaded the source code and the game data from the subversion repository,
	there is no need to re-download the entire distribution when there are updates available.
	You can update your local copy and rebuild it.
</p>
<p class="content">
	Update the source code:
</p>
<div class="fixed">
	cd osirion<br>
	cd build<br>
	make clean<br>
	cd ..<br>
	svn update
</div>
<p class="content">
	Update the game data:
</p>
<div class="fixed">
	cd data<br>
	svn update<br>
	cd ..
</div>
<p class="content">
	Rebuild the binaries:
</p>
<div class="fixed">
	autoreconf<br>
	cd build<br>
	../configure  --with-bullet=/usr/local --enable-static-bullet<br>
	make -j2<br>
	cd ..
</div>
<p class="content"></p>

</div> <!-- class="content" -->

<!-- Source data =================================================== -->

<div class="content">

<h2 class="content" id="source_data">Source data (optional)</h1>

<p class="content">
	There is a seperate repository for files that are used to
	create the game data, like blender, gimp or vector graphics files.
	It is not necessary to download these files to play the game,
	but if you are interested in contributing to the game you
	might want to get them.
</p>
<p class="content">
	To download the source data from the subversion repository:
</p>
<div class="fixed">
	svn checkout svn://osirion.org/osirion-data-src data-src
</div>

<p class="content"></p>

</div> <!-- class="content" -->

<!-- Radiant support files ========================================= -->

<div class="content">

<h2 class="content" id="radiant_support">Radiant support files (optional)</h1>
<p class="content">
	You can skip this section if you do not intent to create models with netradiant or
	gtkradiant 1.5.	These files probably won't work with other versions. You can find precompiled
	netradiant packages here:
	<ul class="content">
		<li class="content"><a href="http://ingar.satgnu.net/gtkradiant">http://ingar.satgnu.net/gtkradiant</a>
	</ul>
<p class="content">
	These instructions assume gtkradiant is installed in the directory
	<span class="fixed">/usr/local/games/netradiant</span>. If it is installed in a different 
	directory on your system, edit these instructions accordingly.
<p class="content">
	Copy the support files to the gtkradiant folder:
</p>
<div class="fixed">
	cd data<br>
	cd gtkradiant<br>
	cp -vr * /usr/local/games/netradiant
</div>
<p class="content">
	Open the file <span class="fixed">/usr/local/games/netradiant/games/osirion.game</span> in 
	your favourite editor. Look for a line that begins with:
</p>
<div class="fixed">
	enginepath_linux=
</div>
<p class="content">
	Make sure it points to your osirion data directory. For example,
	if you checked out the source code into <span class="fixed">/home/user/osirion</span>, 
	then the data will be in <span class="fixed">/home/user/osirion/data</span> and 
	the line should look like this:
</p>
<div class="fixed">
	enginepath_linux="/home/user/osirion/data"
</div>
<p class="content">
	Save the changes.
</p>

</div> <!-- class="content" -->

<!-- Organization of the distribution ============================== -->

<Div class="content">

<h2 class="content" id="organization">Organization of the distribution</h1>

<pre>
/doc 					Documentation

	index.html			Documentation content
	attributions.html		List of game data attributions
	installation_release.html	Installing the latest release
	installation_source.html	Building from source code
	installation_develop.html	Building the development version (this file)
	guide.html			Player guide
	manual.html			User manual

/src 					C++ source code

	/audio				audio library
	/auxiliary			auxiliary functions
	/client				osirion client
	/core				game-independent core library
	/dedicated			osiriond dedicated server
	/filesystem			filesystem library
	/game				game-specific functions 
		/base			base game module
		/example		example game module
		/intro			intro game module
	/math				mathematical classes and functions
	/sys				low-level system functions
	/render				render library
	/ui				user interface library

/data					Data files

	/base				game data files
		/bitmaps		essential textures
		/ini			game world definitions
		/maps			3D models (.map format)
		/materials		material definitions
		/models			3D models (.ase and .obj format)
		/particles		particle definitions
		/textures		game world textures

	/gtkradiant			radiant support files
</pre>

</div> <!-- div content -->

<!-- footer ================================================ -->

</div> <!-- div pagecontent -->

<div id="pagefooter">

<div class="floatright">
	<a href="http://validator.w3.org/check?uri=referer">
	<img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Strict" height="31" width="88">		
	</a>
</div>
<p>
	Copyright &copy; 2007-2012 Project::OSiRiON
</p>
</div>

</div>
</body>

</html>