This wiki entry should give you the run down of how the code is configured and what you need (and optionally need) to have in order to compile the code
If you already have a clone of the codebase, you can run the PrereqChecks.bat script to verify your machine is ready for working with the code. There are some libraries it can't check for, however (refer to the bat source for more).
For starters, the only supported IDE is Visual Studio 2013 (and the compilers found in it).
Next, you'll need the June 2010 version of the DirectX SDK.
Finally, you'll need the C++ Boost libraries. At the time of writing, we're using version 1.55. The project will look for boost under
C:\Program Files (x86)\boost\boost_1_55_0, and you will need to have compiled all of boost for Visual C++ 12, with the default function call type set to
When compiling boost from source on Windows 8.1, you may need to set your include directories differently.
set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\INCLUDE;C:\Program Files (x86)\Windows Kits\8.1\include\shared;C:\Program Files (x86)\Windows Kits\8.1\include\um;C:\Program Files (x86)\Windows Kits\8.1\include\winrt
You can download a prebuilt copy of boost to get started faster. (Note: You'll want the 32bit version!)
Once you've installed boost, open a command prompt in your
boost_1_55_0 directory and run:
bjam.exe toolset=msvc-12.0 cxxflags=/Gz --build-type=complete define=_SCL_SECURE_NO_WARNINGS,BOOST_NO_EXCEPTIONS,BOOST_FILESYSTEM_NO_DEPRECATED
NOTE: not all binary libraries appear to be able to compile with these defines (likely due to
Be sure to delete the files in
/stage/libs/ prior to building so that previous (cached) build objects aren't used.
NOMINMAX, so the shitty min/max macros won't be defined, allowing code to use std::min/max. If you need to use macro variants, use VC++'s
Some projects require 'vld.h' from Visual Leak Detector which we use to see if we are leaking memory at runtime. You can get Visual Leak Detector from here
LowLevel can optionally build some additional code if you have a copy of the XDK. You will need to remove the
LOWLEVEL_NO_X360 define from the project config to even begin to enable this code. If you have the XDK, I assume you aren't just some script kiddie and can handle some of the other small compiler hurdles that will follow
BlamLib references the SlimDX SDK, a .NET wrapper for DirectX.
OpenSauce PC and HEK
Halo PC uses GameSpy for its multiplayer framework. GameSpy's OpenSDK also has some useful HTTP libraries, which we use in Halo1_CE.
If you do not have the Open SDK (it was free, but you'll need to source it elsewhere now), open up the project's
Common/Precompile.hpp and search for the
YELO_USE_GAMESPY_OPEN define and comment it out. You'll also need to remove the SDK's file references in the vcproj. In VS's Solution Explorer, these files can be found under Halo1->Halo1_CE->Common->Shared->GameSpy.
If you do have the SDK, apply the bug fix for
ghttpProcess.c that is documented in the same
Precompile.hpp mentioned above.
In the lastest OpenSDK they have some code that won't compile under OpenSauce's default settings. We use
stdcall conventions where OpenSDK uses (or assumes)
cdecl. Because of this, you'll need to change the signature of
gsCore.c to explicitly be
Chances are high that all code found in the Xenon part of the codebase references the XDK. You'll need that to compile the projects.