[[TOC]] The current release of the game is aimed at developers and not at 'normal' users. As such, the following instructions assume a reasonable level of technical proficiency. If you encounter difficulties, please post on the [http://www.wildfiregames.com/forum/index.php?showforum=312 forum]. == General prerequisites == You'll need: * An adequately high-spec computer - several gigabytes of free disk space, preferably at least 1GB of RAM for compiling, a fast CPU unless you want to spend ages waiting for the compiler, etc. Modern graphics hardware is also recommended, though the game can run (slowly) on fairly old devices (!GeForce 4, Intel 945GM, etc). * Up-to-date system software (Windows service packs, graphics driver updates, etc). * Some technical proficiency. We try to make the build process as smooth and painless as possible, but it's designed to be followed by programmers - if you just want to play the game, wait for a pre-packaged installer instead. == Windows == Windows XP and Vista are the main supported versions; 2000 and 7 may work too. === Acquiring the code === The game's code, data and build environment are stored on a Subversion server. The recommended way to get an up-to-date copy is with TortoiseSVN: * Download and install [http://tortoisesvn.net/ TortoiseSVN]. (Make sure you reboot when it asks you to.) * Use TortoiseSVN to check out `http://svn.wildfiregames.com/public/ps/trunk/`. This may take a while, and will use around 700MB of disk space. Make sure it's in a path that does not contain any space characters. The [http://tortoisesvn.net/docs/release/TortoiseSVN_en/index.html TortoiseSVN manual] has information on [http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-checkout.html checking out], as well as [http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-update.html updating] and [http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-patch.html creating patches]. (This is the read-only public SVN URL. If you have commit access, you need to use `http://svn.wildfiregames.com/svn/ps/trunk/` instead.) === Setting up the build environment === The game must be compiled with Microsoft Visual C++. If you already have Visual C++ 2005 or 2008 installed, make sure you have SP1 and then continue. Otherwise, you can get the free Express edition: * Download and install [http://www.microsoft.com/express/ Visual C++ 2008 Express Edition]. (You can skip the optional Silverlight and SQL Server components.) (If you have the old VC++ 2005 Express, you need to install the separate [http://www.microsoft.com/express/2005/platformsdk/default.aspx Platform SDK] (steps 1-3).) The Visual Studio project/solution files are automatically generated from the source files: * Run `build/workspaces/update-workspaces.bat`. * Open `build/workspaces/vc2008/pyrogenesis.sln`. (If you have VC++ 2005, use the `vc2005` directory instead.) Now you should be able to build the code from within Visual Studio, using "Build Solution" (F7). === Running === Run the game with F5 inside Visual Studio (assuming "pyrogenesis" is set as the startup project, which is default). If you want to run it outside the debugger, run `binaries/system/pyrogenesis_dbg.exe`. To run the (currently quite minimal) automated tests, run the "test" project. (Right click on "test" and "set as StartUp Project" and F5; or right click, "Debug", "Start new instance"). In VS's debug output window, ignore any "first-chance exception" messages; it should say ".......OK!" if it succeeded. === Keeping up to date === After you've set everything up, the process for staying up to date is: * [http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-update.html Update] the root directory of the checkout. * Close the solution in Visual Studio if you've got it open. Run `update-workspaces.bat` again. (This is only needed if any source files have been added or removed. If you forget to run this, you'll probably get build errors about missing symbols.) * Build again. == Linux, OS X == This is much less streamlined than the process for Windows. But you're cooler than a Windows developer, so you should be able to cope. * Install various standard tools and development libraries: * GCC (at least 4.1, preferably 4.3) * Subversion * NASM * SDL * Boost * zlib * libpng * libxml2 * OpenGL * OpenAL * libogg * libvorbis * cryptopp * !SpiderMonkey (1.6, threadsafe) * wxWidgets (probably called wxgtk on Linux) (optional, but required for the editor tools) * gamin (Linux only) * BFD (typically called something like binutils-dev) (Linux only) * valgrind * enet * and maybe some other things? * For '''Ubuntu''' the following might help: ''sudo apt-get install build-essential libsdl1.2-dev zlib1g-dev libpng12-dev libjpeg62-dev libgamin-dev nasm libwxgtk2.8-dev libboost-dev libboost-signals-dev libopenal-dev libalut-dev libvorbis-dev libogg-dev libcrypto++-dev binutils-dev libnspr4-dev libdevil-dev valgrind libenet-dev'' * For '''OS X''' you'll need [http://www.macports.org MacPorts] first. Then the following might help: ''sudo port install boost libsdl spidermonkey wxWidgets'' * You'll need to build the '''FCollada''' libraries: * `cd trunk/libraries/fcollada/src` * `make` * (This might require some adaptation for '''OS X''', since the makefile is Linux-specific) * You'll need a multi-threaded build of !SpiderMonkey. We're currently using !SpiderMonkey 1.6, so you should probably stick with that. If you have a single-threaded version, you should get some compiler errors and you might need to compile the right version yourself (see below). If you have non-1.6 then there may be more subtle runtime errors. * `svn co http://svn.wildfiregames.com/public/ps/trunk/` (or `http://svn.wildfiregames.com/svn/ps/trunk/` if you have commit access) * `( cd trunk/build/premake/src && make && cp bin/premake .. )` * `cd trunk/build/workspaces` * `./update-workspaces.sh` (you'll have to repeat this step each time a source file is added or removed) * `cd gcc` * `make -j3` (where `3` is the number of parallel builds to run, and could perhaps be one plus the number of CPU cores available) * Fix all the compiler errors somehow. * `( cd ../../binaries/system && ./pyrogenesis_dbg )` === Installing thread-safe !SpiderMonkey === On Linux: * `wget http://ftp.mozilla.org/pub/mozilla.org/js/js-1.60.tar.gz` * `tar -xzf js-1.60.tar.gz` * `cd js/src` * `JS_THREADSAFE=1 INCLUDES=-I/usr/include/nspr OTHER_LIBS=-L/usr/lib make -f Makefile.ref` * `make -f Makefile.ref export` * `cd ../../dist/Linux_All_DBG.OBJ` * `sudo cp lib/* /usr/lib` * `sudo mkdir /usr/include/js` * `sudo cp include/* /usr/include/js` * `sudo ldconfig` The process on OS X should be similar, but with `../../dist/Darwin_DBG.OBJ`.