Over the years, the D2X-XL project has been growing from humble beginnings to delivering a greatly enhanced, stable product with several thousand users. It has devoured thousands of work hours and a significant amount of money on my side.
The growing popularity has led to increasing demand on my web site, forcing me to move to a virtual server that costs me about twenty euros per month.
Although there are so many people enjoying the fruit of our work, only a few faithful supporters ever have donated to this project. Nobody is making any money from this project, but if you are enjoying playing Descent using D2X-XL, it should be worth something to you. The time has come to give back for what you have freely received.
If you cannot or don't want to use Paypal, drop me an e-mail, and I will give you a credit card or bank account where you can send some money. You don't have to send a lot, but a lot of you giving a little bit each will help to fund this project.
D2X is a port of Descent 2 to OpenGL. It is an open source project and has received a lot of enhancements compared to Descent 2. My work on this project would not have been possible if hadn't been for the people who initially implemented the OpenGL and SDL code in D2X, so my thanks to them: It is for them that we can still play this great game on modern hardware. My thanks also to the many people who have provided input for this project, be it in the form of bug reports, great ideas, logos, encouragement, or other.
Descent 2 is a pretty old game, and further development has slowed down; so there are a few issues - some still stemming from the original Descent 2 - that have never been adressed or solved in D2X.
As I still like Descent 2 pretty much, I was always looking for a way to get rid of the things that plagued me most in Descent 2. Getting hold of the D2X source files and being able to create a MS Visual C++ 6 project for D2X finally enabled me to fix these annoyances.
Although D2X-XL contains a lot of enhancements and new features, it is still fully backwards compatible to every other Descent 2 version and particularly to D2_Win98 and d2_3dfx (which constitute the reference for every other D2 version). As many fixes simply restore features of the original Descent 2 that were missing in D2X (like availability of all cockpit views, or working mouse steering), it is even closer to them than D2X itself. Keeping full backwards compatibility is my concern, and where I break it, it happens accidentally and will be fixed as soon as I notice it, or get notified of it.
In multiplayer games, all game-relevant features of D2X-XL (e.g. mouselook, dual missile launch, or the cockpit window 'radar') are completely turned off if the game host does not use D2X-XL. If the game host uses D2X-XL, he has full control over these features and can turn them on or off at his free disposal.
Installing the game data
The Descent 2 data has to reside in '/usr/local/games/d2x-xl'. Organize the data in subfolders as outlined below. Download d2x-xl-data-<version>.rar (e.g. d2x-xl-data-1.14.95.rar) and extract it to the data folder using subfolders.
User specific data goes to a folder named '.d2x-xl' in the user directory (/home/<username>). Place the d2x.ini and default player files in the proper sub-directories of that folder (~/.d2x-xl/config and ~/.d2x-xl/profiles).
Find a detailled Descent installation guide for Linux here.
To build all required libraries and the program, you need to install the OpenMotif, Mesa, SDL, SDL_mixer, curl and DirectFB packages plus their devel packages. For debug builds you will also need the MesaGLw-devel package.
It is highly recommended to use the SDL and SDL_mixer versions from www.descent2.de, as they contain bug fixes and enhancements required for flawless operation of d2x-xl. If you don't, program crashes may be the result.
Compiling and installing SDL and SDL_mixer
- Download and install the SDL and SDL_mixer source code (e.g. to /home/<username>/SDL and /home/<username>/SDL_mixer).
- Compile and install SDL and SDL_mixer:
- cd to the proper folder
- sh ./autogen.sh
- chmod 0755 ./configure
- sudo make install
The D2X-XL versions of the SDL and SDL_mixer libraries should now have been installed in /usr/local/lib. They need to be copied to /usr/lib or /usr/lib64, depending on your system architecture.
Compiling and installing D2X-XL
- cd to the d2x-xl source folder
- sh ./autogen.sh
- chmod 0755 ./configure
- ./configure '--enable-release=yes --enable-debug=no
- cp ./d2x-xl /usr/local/games/d2x-xl
- Download and install SDL_mixer. It is recommended to use the version from my web site as it contains a few bug fixes.
- Download the GUS patches linked to at the SDL_mixer page and extract them to '/usr/share'. Make sure only to extract the files stored in 'timidity/instruments' - do not overwrite any '/usr/share/timidity/timidity.cfg' already existing!
- Extract 'timidity.cfg' to a temporary location and copy it to '/usr/share/timidity/instruments.cfg'
- Open '/usr/share/timidity/timidity.cfg' with a text editor and put a '#' at the beginning of all lines starting with 'dir' or 'source'.
- If this file doesn't exist yet, create an empty new one instead.
- Add a line containing 'dir /usr/share/timidity/instruments' and a line containting 'source instruments.cfg' to the file and save it.
- Alternatively, you can download a free patch set from freepats. Put the patches into '/usr/share/timidity' and edit '/usr/share/timidity/timidity.cfg' as described above, but use the folder and cfg file names from the freepats patch distribution.
Theoretically, this should enable midi playback.
Missing OpenGL related symbols
If you run into linker errors about missing OpenGL related symbols, your system doesn't have the latest OpenGL libraries installed. You should therefore install the latest Mesa-devel package. If that doesn't help, you can proceed as follows. For GL_FRAMEBUFFER_EXT, you can try to edit arch/ogl/fbuffer.c and fbuffer.h and enable the explicit loading of function pointers to the required functions. Just comment out the lines containing '#ifdef _WIN32' and those containing the corresponding '#endif'. If that doesn't help, open include/ogl_init.h and change '#define RENDER2TEXTURE 2' to '#define RENDER2TEXTURE 0'. This will still enable camera views in D2X-XL, although at the cost of quite a performance hit. You can completely disable camera usage in the render options menu of D2X-XL.
For glDrawRangeArrays, edit ogl_defs.c and ogl_defs.h and make it non-Windows specific by removing '#ifdef WIN32' ... '#endif' surrounding it.