Introduction Troubleshooting Gameplay Single-Player Multiplayer Dedicated Servers Linux Server Setup Development Other Sources Of Information Epilogue
[7.1] Installing the Linux Server
First read the README that comes with the Linux server distribution. It will save you grief later! After you read the README, here is some useful supplemental information about installation.

You do not need to copy over 'd3voice1.mn3' or 'd3voice2.mn3'. You also do not need to copy over d3.mn3 or d3_2.mn3 if you do not want to host games with the single-player maps.

[7.2] Passing command line parameters to your D3 Linux server
In the Linux server, there seems to be some problems with two part command line parameters. An example of a two part parameter is something like '-useport 2022', or '-tempdir /var/temp'. Problems occur when the server sees only -tempdir and no specifying directory, even though you specify it!

The solution to this problem is to wrap all two part parameters in quotation marks. So '-useport 2022' would look like "-useport 2022" and '-tempdir /var/temp' would look like "-tempdir /var/temp". I am not sure if this is a D3 Linux server issue, or a tcsh issue. I never cared to investigate this further since a solution exists for the problem.

[7.3] How do I install Mercenary on the Linux server?
This is something that is not documented. You need to copy merc.hog over to the Linux server, and then rename it to extra13.hog, thereby erasing the extra13.hog file which came with the distribution. All the files in extra13.hog are also in merc.hog. You need to do this if you want to play the Mercenary single player maps in Anarchy mode, or the multiplayer maps.

Do not forget to copy over the Mercenary MN3 files into the Linux D3 ./missions directory.

[7.4] Why doesn't Mercenary support Co-Op mode for single-player maps?
Because there wasn't enough time to fully find and fix all the bugs with Co-Op Mercenary.
[7.5] Why do I get a shared library error: "main: error in loading shared libraries: undefined symbol: register_frame_info"?
Due to differences in Linux distributions, two versions of main have been supplied, which are 'main' and 'main.gz'. If you get the error above, ungzip 'main.gz' and use that version. The .gz version has a stdc++ library dependancy, and if you do not have it on your system you will need to install it on your machine.

The version of libstdc++ you will want is 2.9.0, which maybe found on your distribution CD, or on the Web.

[7.6] Why does my server burn 100% CPU time during a level switch?
This only occurs when PXO goes down, and the server is very stubborn and sits there twiddling it's thumbs until it successfully writes the statistics for the level to PXO. At least this is my theory of what happens, but the bottom line is it does not change.
[7.7] Why do I get weird port numbers associated with my server(s) in GameSpy?
Good question. I do not fully understand what causes this, but I suspect it may have something to do with the fact that your machine has 2 NICs in it. The solution to the problem is to bind D3 to an IP of a NIC. This is achieved by using the -useip <ip of NIC> command line parameter when you are launching the server. You should also read section [7.2] when doing this.
[7.8] Why is it *NOT* a good idea to run the server as root?
As a general rule of thumb, if you can avoid running something as root, do so. D3 is one of those applications which do not need to run as root! Generally this is done for security purposes, there could be something inside D3 which can be exploited by a external hacker, and could gain root access to your machine. Running the server as a non-root user, at least makes life more difficult for the hacker.
[7.9] Why do I get the "String Table Not Found" error?
Obviously you did not README that comes with the D3 Linux server! You need to copy d3.hog from your windows installation.
[7.10] Why does my server freeze during launching, or fail all together?
Here is a list you can go down to help you trouble shoot. The list is valid if you run either a single or multiple servers on your machine:
  • If this is your first time trying to launch the server, read section [7.1].
  • Make sure /usr/lib/ is installed properly.
  • Make sure all files in ./online and ./netgames are the latest version, and not stale leftovers from a previous version.
  • Check your server .cfg file.
  • Switch your server to Direct TCP~IP mode. This will eliminate PXO out of the equation. If PXO is down, your server won't register with PXO and fail to start up.
  • Ensure that the port you are launching D3 on is not already used by another application. You can use the netstat command to figure out if there is a port conflict. Just for quick diagnostics, try running the server under a different port number, using the command line -useport <port>.
  • Ensure the GameSpy port is not conflicting with another application.
Again use netstat to figure out who is using that port and to find a free one. For quick diagnostics, use -gamespyport <port> to change the port

NOTE: even though you're not posting your server to GameSpy, the port is still USED! Therefore the point above still applies regardless if you are registering your server with GameSpy or not! Make sure you read section [7.2]. It's possible D3 is seeing only one piece of a two part command line parameter. D3 does not complain if it does not see the value for the parameters like -useport, -gamespyport, or -useip.

Top of this section
8 - Development
6 - Dedicated Servers
0 - Table of Contents