Smokes your problems, coughs fresh air.

Tag: unreal tournament

Creating an Unreal Tournament 99 server in Linux

(Post edited to reflect the steps required for the 451 version of the server, which has some crucial bug fixes, among which a working webadmin.)

I created an Unreal Tournament 99 server using this page as a guide (I may update that page myself soon, to help out others). However, I had to do a lot more, so here is the info:

First get and unpack the UT server, the 451 patch and the server utility script:

wget http://ut-files.com/Entire_Server_Download/ut-server-436.tar.gz
tar -zxf ut-server-436.tar.gz ut-server
wget http://www.ut-files.com/Patches/UTPGPatch451LINUX.tar.tar # May be changed to .tar.bz2 by the admins soon
tar xfj UTPGPatch451LINUX.tar.tar
wget http://ut-files.com/Entire_Server_Download/server_scripts/asu-0.6.tar.gz
tar -zxf asu-0.6.tar.gz
chmod +x asu.sh System
ln -s libSDL-1.1.so.0 libSDL-1.2.so.0

Because of some error (as described), map names with ][ in them, like DM-Deck16][, are 0 bytes. So, you have to copy them from some other UT installation. 2399Skillz on the forums said he’ll fix it, so it might be fixed at some point.

Next, you can run the asu.sh script. Choose option “I”, to install. Most important thing is to choose the username it will run under (not nobody as it suggests). The rest is obvious.

The script will have made an ucc.init file. Important to know is, that the path of the server is set in it. So, if you want to move the server to another dir, you have to change that file. The path name is mentioned several times.

Next you want to enable the webadmin. You can do that by opening UnrealTournament.ini, going to the [UWeb.WebServer] section and setting bEnabled=True and choose a port (5080 is standard):

[UWeb.WebServer]
Applications[0]=UTServerAdmin.UTServerAdmin
ApplicationPaths[0]=/ServerAdmin
Applications[1]=UTServerAdmin.UTImageServer
ApplicationPaths[1]=/images
DefaultApplication=0
bEnabled=True
ListenPort=5080 

When going to the webadmin, be sure to include /ServerAdmin/ in your address bar, because otherwise it will try to redirect you to that, using a HTTP redirect, but that will fail because the server has no idea you’re using an internet hostname and therefore it will redirect you to it’s LAN-IP, which obviously won’t work if the server is not in your LAN. Apache has config parameters to set the redirect hostname, but this webadmin doesn’t.

As a security precaution, patch 451 adds brute force protection to the admin login. See the file Releasenotes.htm in the Help dir for more info. In the Engine.Gameinfo section, a few rules should be added/modified (depending on whether they’re already there or not):

[Engine.GameInfo]
(snip)
...
LoginDelaySeconds=1.000000
MaxLoginAttempts=50
ActionToTake=DO_KickBanPlayer

The server (at moment of writing) has special net-textures, to reduce the size of the installation. Problems my occur when clients are using the high-res textures (see aforementioned topic). To solve this, copy the normal CD1 textures to the server dir.

I was under the impression that the asu stuff would take care of setting the environment properly so the files can be found, but when trying to start the server, it complained about not being able to find it’s data directory. It started doing that after applying the 451 patch, so that might be the cause. To fix it, I added this line below MYUSER=User.ini in ucc.init:

UT_DATA_PATH="$MYDIR/System/"

However, it might not be necessary when you apply the patch before you extract the asu scripts. I applied the patch after, so that may have been the difference. Try without this modification first.

You can start the server by “./ucc.init start”. Or stop by “./ucc.init stop”. Or restart by “./ucc.init restart”.

Preventing syntax errors with old shell scripts

I was trying to install Unreal Tournament GOTY on one of my Linux machines. I downloaded and ran the script ut-install-436-GOTY.run but I got this error:

cannot open `+6' for reading: No such file or directory 

This line caused it:

sum1=`tail +6 $0 | cksum | sed -e 's/ /Z/' -e 's/   /Z/' | cut -dZ -f1`

To fix it, I set this environment variable:

export _POSIX2_VERSION=199209

Apparently, this makes programs behave differently. Research is required to find out exactly what it does…

© 2024 BigSmoke

Theme by Anders NorenUp ↑