I wanted to create a new TRON KillerApp server, but I have only a decent Linux box running Debian. But I thought, 2x2,4 GHz and 8 Gig of RAM would make a damn fine machine for all of you out there, so I figured out a way to run it on Linux anyway. Without a monitor, from commandline and with an extra user in its own environment, so it should not be possible to use its security holes for gaining access to your machine. I also added a failsafe script that kicks in and restarts the server if it crashes.
You will have to install Tron, the unofficial patch 1.042 and KillerApp on your Windows machine in order to copy some files from there later on. Lets start:
First, we login to our machine via ssh (as root user) and create a new user called gameserver. This one will be used for running our TRON server:
Code: Select all
useradd --home-dir /home/gameserver --password swordfish --shell /bin/false gameserver
Code: Select all
apt-get install wine xvfb
Now create a new directory /home/gameserver/tron with
Code: Select all
mkdir /home/gameserver/tron
Code: Select all
Directories and all subfiles in them:
Custom
LightCycleGameData
Profiles
ServerData
tcdg
Files:
Engine.rez
Game.rez
Game2.rez
mfc42.dll
mpger.ls0 (If you have it)
SndDrv.dll
Sound.rez
TRONSrv.exe
autoexec.cfg
bl.dat
gamep5.rez
gamep6.rez
launchcmds.txt
layout.bin
ltmsg.dll
msvcirt.dll
server.dll
Note that there has to be a config inside the ServerData folder. And JUST ONE CONFIG. So you should start up the program at least one time on your windows box and do all the required settings in the multiplayer wizard. After that, you have a preconfigured configfile that you can copy to your linux box.
Second note: Get a msvcirt.dll somewhere on the internet or copy it over from your Windows box into the tron-folder. Wine needs this file to start up the server.
This is it - the tron server files are on your box and your user is created. But in order to start up properly it still needs some registry entries in your fake windows environment. Otherwise the TRONSrv.exe fails with a "Could not load resource file" error.
To create your fake wine folder, type
Code: Select all
sudo -s -u gameserver
xvfb-run -a winecfg
Press CTRL+C to quit the program (you can't use it without a display) and type
Code: Select all
exit
Now type the following into your terminal
Code: Select all
mcedit /home/gameserver/.wine/system.reg
Directly after the line
Code: Select all
[Software\\Microsoft\\Windows NT\\CurrentVersion\\SvcHost] 1338803243
"netsvcs"=str(7):"BITS\0"
Code: Select all
[Software\\Monolith Productions\\No One Lives Forever\\1.0] 1339584011
[Software\\Monolith Productions\\TRON 2.0\\1.0] 1339521803
"CDKey"="YOUR-CDKE-YGOE-SHER-E000"
"Commands"="-windowtitle \"TRON 2.0: Killer App Mod\""
"InstallDir"="Z:\\tron"
"KAModFOV"="106"
"KAModResolution"="1360x768"
"KAModTemp"="Z:\\tron\\Custom\\Mods\\Retail\\KAModTemp\\WORLDS\\RETAILSINGLEPLAYER"
"Language"="German"
"Last Random"=dword:00000000
"Num Launcher Runs"=dword:00000004
"OptionsWarning"=dword:00000001
"ProfileName"="Player"
"Save Commands"=dword:00000001
"SelectedMod"="Retail"
"UpdateCommandLine0"="-rez gamep5.rez"
"UpdateCommandLine1"="-rez gamep6.rez"
"UpdateCommandLine4"="-rez \"Z:\\tron\\tcdg\\game\""
"UpdateNum"=dword:00000005
Since you chose to start TRONSrv from the Z: drive you will still have to tell wine which folder to use as the Z: drive. In our case, this is /home/gameserver.
To do so, create a symlink with the following commands:
Code: Select all
mkdir /home/gameserver/.wine/dosdevices/z:
ln -s /home/gameserver /home/gameserver/.wine/dosdevices/z:
Create a new crontab for the gameserver user with the following command:
Code: Select all
EDITOR=mcedit crontab -e -u gameserver
Code: Select all
MAILTO=""
* * * * * /home/gameserver/tron_check.sh
Code: Select all
mcedit /home/gameserver/tron_check.sh
Code: Select all
#!/bin/bash
# check daemon
ps -ef | grep -v grep | grep TRONSrv.exe
# if not found - equals to 1, start it
if [ $? -eq 1 ]
then
cd tron && nohup xvfb-run -a wine TRONSrv.exe >/dev/null 2>/dev/null &
else
echo "tron found - do nothing"
fi
Important: Don't add more than one config in the "ServerData" folder. This does not work and opens the wizard. Since we have no screen, we can't use it to start the server.
Now we will make sure, that the whole directory belongs to the right user and that the script is executable:
Code: Select all
chown -R gameserver:gameserver /home/gameserver
Code: Select all
chmod +x /home/gameserver/tron_check.sh
You can check my server status here, it is running very stable via wine:
http://hirnschwund.net/" onclick="window.open(this.href);return false;
Running a second server is also possible, but a bit more complicated. I will not cover that here, however I am here if anyone needs assistance.