It should be noted that there is a FREE version of MSVC 2005 (version 8), called "Express Edition". It requires registering with their little developer's world thingy, but if you don't want to stray from The Pointy-Clicky Safety Of Mother, it's your best bet.
I'm also assuming you know how to get around in MSVC, and will not be going over how to use it (except for necessary instruction).
Here is your list of chores:
http://msdn.microsoft.com/vstudio/express/visualc/download/
The free version comes as a 30 day trial version which needs to be permanently activated by getting a serial number by registering through a link given at the above URL. You might try using a fake email address, because they tell you the serial number in the registration confirmation page you're brought to after registering (unless you really don't mind getting spam from Mother).
windows.h
or opengl.h
. Either way, you should feel ripped off. Anyway, to right this wrong, install this lovely SDK:
If the above link dries up, go to http://msdn.microsoft.com and search for ".NET Framework 1.1". dotnetfx.exe
is the filename you want.
When you're presented with installation options, make sure ONLY the following are enabled (unless you don't mind downloading and installing an assload of files):
Plus any other extra pieces of Mother's Worthless Crap you care to install.
If the above link dries up, go to http://msdn.microsoft.com and search for "PSDK-x86.exe".
printf
) and link the C libraries dynamically, you will find out that no matter what seemingly appropriate DLL files you distribute with your bastard application, certain Windows machines will complain of either missing DLL files, or that the "application configuration is incorrect".The hand-wavey explanation is that Mother has devised a brilliant new method of specifying DLL dependencies through manifest files, and you can no longer just lump the requisite DLL files in with your release executables.
Fortunately you can just lump in a directory containing said DLL files, plus a manifest file which contains certain metadata about its DLL buddies. This directory is included in the full, non-free version of MSVC 2005 (but not the free version). I've uploaded a zip file containing the necessary turds which you can just throw in with your release executables. This particular set of files is specific to MSVC 8 (hence the "VC80"). You can find the little bastards here:
http://www.thedods.com/victor/Microsoft.VC80.CRT.zip
It should be noted that these files are unnecessary if you don't release your application to the general non-MSVC-having populace.
Supposedly since these files are "redistributable components", there is no legal issue with me providing them for download outside of Mother's Domain.
C:/projects
).http://www.libsdl.org/index.php
Look under "Download" for SDL 1.X (1.2 is the most recent as of August 2006). There will be several different packages you can choose from, but you want development library package. This is SDL-devel-1.X.X-VC6.zip
(SDL-devel-1.2.11-VC6.zip
is the most recent as of August 2006). Download away.
Unzip the file you downloaded into your projects directory. It should create a subdirectory matching the name and version of the library, such as SDL-1.2.11
.
http://www.libsdl.org/projects/SDL_image/
Similarly, you want to download the package of the form SDL_image-devel-1.X.X-VC6.zip
(SDL_image-devel-1.2.5-VC6.zip
is the most recent as of August 2006).
Unzip the file you downloaded into your projects directory. It should create a subdirectory matching the name and version of the library, such as SDL_image-1.2.5
.
http://download.savannah.gnu.org/releases/freetype/
You want the package of the form ftXXXX.zip
(ft221.zip
is the most recent as of August 2006).
Unzip the file you downloaded into your projects directory. It should create a subdirectory matching the name and version of the library, such as freetype-2.2.1
. FreeType does not come precompiled, so you'll need to open it using MSVC (the solution file is located at freetype-2.2.1/builds/win32/visualc/freetype.sln
) and compile a "Release" build. This should produce a file called freetype-2.2.1/objs/freetype221.lib
.
If the above link ceases to be, go to http://www.freetype.org and "go ahead, snoop around!"
http://tortoisesvn.tigris.org/
I'm sick of writing specific instructions on what to download. Just look around for downloads. You'll want to download a ".msi" file (which is some sort of installable format) and run it as if it were a regular exe file. It will probably require you to reboot Winders to take effect.
To use TortoiseSVN, just use Windows Explorer normally. It adds menu items to the context menu (the right-click menu).
xuqrijbuh
which contains the game engine source.
There are three subdirectories of xuqrijbuh
:
branches
contains development branches of various [sub]trees, when applicable tags
contains text files indicating revision numbers for notable landmarks in the tree's development trunk
contains the main development tree of the source code -- also where the application binaries are produced
The game engine solution file is under the trunk
directory and is predictably called xuqrijbuh.sln
.
For general information on XuqRijBuh, go to the SourceForge homepage:
http://sourceforge.net/projects/xuqrijbuh/
http://www.thedods.com/victor/resources.zip
Download this and unzip it into the xuqrijbuh/trunk
directory.
Go to the desktop and right-click on the icon with the patronizing title of "My Computer". Select the "Advanced" tab, and then click on the "Environment Variables" button. An inappropriately small dialog will appear where you can add and edit environment variables. Assuming your projects directory is C:/projects
, Add the following user variables (accounting for differences in library versions):
XRB_SDL_PATH
with the value C:/projects/SDL-1.2.11
XRB_SDL_image_PATH
with the value C:/projects/SDL_image-1.2.5
XRB_FREETYPE_PATH
with the value C:/projects/freetype-2.2.1
XRB_FREETYPE_LIB
with the value freetype221.lib
Hit OK and get out of that 'hole of a menu, and you're ready to compile the game engine!
libxrb
is the library itself, and produces a .lib file which is linked into each application to produce executables. It is a dependency for every application in the solution. All projects besides libxrb are applications. disasteroids
is the first full sample game implementation provided with XuqRijBuh and as of August 2006, is still under development. lesson00
lesson01
... are tutorials intended to teach usage of the game engine library incrementally in small, manageable steps. If you ever run an app, and it fails inexplicably, it's probably because you're a douche bag. Either that or you're missing the resources directory (though I mean to make this slightly more obvious in the future). See XuqRijBuh Resources.
In addition to requiring the resources directory, you'll need to copy several DLL files into the xuqrijbuh/trunk
directory. These are (again, replacing library version numbers):
C:/projects/SDL-1.2.11/lib/SDL.dll
C:/projects/SDL_image-1.2.5/lib/SDL_image.dll
C:/projects/SDL_image-1.2.5/lib/jpeg.dll
C:/projects/SDL_image-1.2.5/lib/libpng13.dll
C:/projects/SDL_image-1.2.5/lib/zlib1.dll
You can optionally put these files in your executable path, but then you might forget to package them up when making a release of your application.
Each project has a "Debug" and a "Release" configuration. Their object files are built in separate directories, so one can switch between configurations without clobbering files that would otherwise have to be recompiled. Each application is configured to produce its executables in the xuqrijbuh/trunk
directory. Furthermore, the Debug configuration for each will produce an executable which ends in _debug.exe
-- thus allowing the Debug and Release executables to peacefully coexist in the same directory.
Before you can run the applications (at least from the MSVC IDE), you must edit each of the applications' project properties (not that of libxrb
though). Pick All Configurations
and then go to Configuration Properties > Debugging
and change "Working Directory" to . This should correctly place the working directory where the executables, DLL files and resource directory are.
In theory, you could compile all libraries and the game engine statically, and only have to distribute the executable along with any file assets you may require. This sounds nice in principle, but it requires downloading the full sources to all aforementioned libraries (plus a few that SDL_image relies on such as libpng), installing any other necessary supplementary development files (such as DirectX headers, needed for a full compilation of SDL in Winderps) and compiling them all as static libraries (something that SDL and SDL_image do not currently support, so it would require some project file hacking). Your application's project file would then require modifications to statically link the recompiled libraries. It is certainly possible, but explaining how to do so is out of the scope of this document.
Anyway, assuming you followed the example applications' configurations, you'll need to package the following files in your release:
your_application.exe
SDL.dll
SDL_image.dll
jpeg.dll
libpng13.dll
zlib1.dll
Microsoft.VC80.CRT
(the directory described in Redistributable Turds)