Unreal Departments

News

Notes

Links

Home  >  Section Title  >  Subsection Title  >  Page Title

Installing the UT dedicated server on Linux


WARNING - The content on this page is still under development and has not yet been verified.

To do - add summary of page contents, split page into separate installation and configuration pages. Finish page!

Installing 7-zip support utilities on Linux


Most of the files on this web site are compressed using the 7-zip utility.

In order to be able to decompress them, it is necessary to install some 7-zip utilities.

There are two different ways of doing this, the first (but not developed in detail here) is to install the Windows version of 7-zip using the WINE utility, This give full access to the features of 7-zip but does require a GUI to operate. Here, we will use the second method as it does not require access to a GUI and can be used in a terminal session (e.g. over SSH). The second method uses p7zip.

The master download location for p7zip is here and it is possible to install the utility from that location.

It is, however, preferable to install using the package management utility of your Linux distribution.

The example screen shots shown below are taken from a 64-bit Fedora 8 system. Version numbers and the like might differ slightly on other systems.

First, let us see if p7zip is already installed
[root@margrave01 ~]# yum list installed|grep -i p7zip
[root@margrave01 ~]#

Out of luck - so we had better install it:
[root@margrave01 ~]# yum install p7zip
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package p7zip.x86_64 0:4.51-3.fc8 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
p7zip x86_64 4.51-3.fc8 fedora 649 k

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 649 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): p7zip-4.51-3.fc8.x86_64.rpm | 649 kB 00:02
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: p7zip ######################### [1/1]

Installed: p7zip.x86_64 0:4.51-3.fc8
Complete!
[root@margrave01 ~]#

Obtaining the UT Linux Dedicated Server


The UT Linux Dedicated Server can be found here

Please note that there are two files. The p7zip utility will glue them back together for you when it unpacks the file.

Decisions, decisions


A number of decisions have to be made before installing the UT Dedicated Server. These are:
With one exception, the answers to these questions will depend on the particular circumstances of your Linux system.

The answers that I show are simply the choices that I made. There is no fundamental law of nature that says that you must make the same choices so please do not think that these are commandments written on stone.

The one exception that I mentioned is the choice of user to run the server. Under no circumstances should the UT Dedicated Server be run as the root user on your system.

That is slightly easier said than done, as the UT Dedicated Server also acts as a web server and so by default binds to TCP port 80 - a privileged port.

Fortunately, UT can be configured to use a different port for the web interface and so you can choose a port above 1024 and run the UT Dedicated Server as a non-privileged user.

The reason that you must not run the UT Dedicated Server as the root user is that if someone were to attack the UT Dedicated Server (for example, by causing a buffer overflow) then they would obtain the privileges of the user running the UT Dedicated Server. You really do not want that user to be root!

In the following examples, I will use the user utserver. Feel free to pick a different username!

How will UT be started or re-started?


I prefer to control UT through the service interface (/etc/init.d/ on RedHat-style systems) and give users permission to start/stop/re-start the service.

The more usual mechanism is for UT to be run from a script that loops and automatically re-starts the UT server after a crash. Such scripts are also more common in environments where multiple UT Dedicated Servers are being run on a single system and where each instance of UT is listening on different ports.

A limitation of the basic service approach is that it does not easily allow multiple instances of the UT Dedicated Server to be managed through the service interface.

As these guides are focused on getting a single UT Dedicated Server up and running for use on a LAN or for a few friends using a low bandwidth Internet connection, that's not too much of a problem.

Where will the UT Dedicated Server files be placed?

If you follow the above recommendations then you will create a specific user account for the UT Dedicated Server and most of the UT files will go in the home directory for that user.

If you are also running a local web server to act as a redirect server then you will need to put files under the web server's document root (for example, /var/www/htmldocs/utredirect/). There will also be a service management script in /etc/init.d/.

So, let's get started...

Creating the UT Dedicated Server user

It is necessary to create a specific user to run the UT Dedicated Server package. The user should not be a privileged user for security reasons. For our purposes, we are going to create a user utserver.

Login as root and type the following:


[root@margrave01 ~]# useradd --comment UTDedicatedServer --create-home utserver
[root@margrave01 ~]#


Note that in RedHat-derived systems, the default is to create a group with the same name as the username so that every user is in a separate group.

Now set the password on the account:

[root@margrave01 ~]# passwd --stdin utserver
Changing password for user utserver.
type_some_suitable_password
passwd: all authentication tokens updated successfully.
[root@margrave01 ~]#


Retrieving and installing the UT Dedicated Server packages

Now login as the utserver user

[root@margrave01 ~]# su -l utserver
[utserver@margrave01 ~]$


And retrieve the UT Dedicated Server packages...


[utserver@margrave01 ~]$ wget http://www.margrave.myzen.co.uk/downloads/utserver/Linux-ut-server-436.7z.001
--13:08:03-- http://www.margrave.myzen.co.uk/downloads/utserver/Linux-ut-server-436.7z.001
=> `Linux-ut-server-436.7z.001'
Resolving www.margrave.myzen.co.uk... 212.23.8.80
Connecting to www.margrave.myzen.co.uk|212.23.8.80|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 50,331,648 (48M) [text/plain]

100%[===============================================>] 50,331,648 756.49K/s ETA 00:00

13:09:09 (743.70 KB/s) - `Linux-ut-server-436.7z.001' saved [50331648/50331648]

[utserver@margrave01 ~]$ wget http://www.margrave.myzen.co.uk/downloads/utserver/Linux-ut-server-436.7z.002
--13:09:19-- http://www.margrave.myzen.co.uk/downloads/utserver/Linux-ut-server-436.7z.002
=> `Linux-ut-server-436.7z.002'
Resolving www.margrave.myzen.co.uk... 212.23.8.80
Connecting to www.margrave.myzen.co.uk|212.23.8.80|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 19,931,543 (19M) [text/plain]

100%[===============================================>] 19,931,543 756.00K/s ETA 00:00

13:09:46 (729.20 KB/s) - `Linux-ut-server-436.7z.002' saved [19931543/19931543]


And now check that the files have downloaded properly


[utserver@margrave01 ~]$ md5sum Linux-ut-server-436.7z.001
fb7d5cd3baa37bee1feaed67d8b397c8 Linux-ut-server-436.7z.001
[utserver@margrave01 ~]$ md5sum Linux-ut-server-436.7z.002
b674a33fe3f7884f7ce67af19cc5f149 Linux-ut-server-436.7z.002
[utserver@margrave01 ~]$


And now extract the files.


The 7za utility (the working part of the p7zip package) takes a single option (e = extract) and the name of the first file in the archive.

[utserver@margrave01 ~]$ 7za e Linux-ut-server-436.7z.001

7-Zip (A) 4.51 beta Copyright (c) 1999-2007 Igor Pavlov 2007-07-25
p7zip Version 4.51 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Processing archive: Linux-ut-server-436.7z.001

Extracting ut-server-436.tar

Everything is Ok
[utserver@margrave01 ~]$ ls -lh
total 256M
-rw-rw-r-- 1 utserver utserver 48M 2008-06-03 21:29 Linux-ut-server-436.7z.001
-rw-rw-r-- 1 utserver utserver 20M 2008-06-03 21:37 Linux-ut-server-436.7z.002
-rw------- 1 utserver utserver 189M 2001-09-07 20:57 ut-server-436.tar
[utserver@margrave01 ~]$


As can be seen from the directory listing, the output is the file ut-server-436.tar.

Unpack the tar file in situ

[utserver@margrave01 ~]$ tar -xf ut-server-436.tar
[utserver@margrave01 ~]$ ls -lh
total 256M
-rw-rw-r-- 1 utserver utserver 48M 2008-06-03 21:29 Linux-ut-server-436.7z.001
-rw-rw-r-- 1 utserver utserver 20M 2008-06-03 21:37 Linux-ut-server-436.7z.002
drwxrwxr-x 11 utserver utserver 4.0K 2001-05-25 18:45 ut-server
-rw------- 1 utserver utserver 189M 2001-09-07 20:57 ut-server-436.tar
[utserver@margrave01 ~]$


As you can see, we now have the UT Dedicated Server in /home/utserver/ut-server/

Obtaining the bonus packs

[utserver@margrave01 ~]$ wget http://www.margrave.myzen.co.uk/downloads/utbonuspacks/UTBonusPack001.7z
--13:24:54-- http://www.margrave.myzen.co.uk/downloads/utbonuspacks/UTBonusPack001.7z
=> `UTBonusPack001.7z'
Resolving www.margrave.myzen.co.uk... 212.23.8.80
Connecting to www.margrave.myzen.co.uk|212.23.8.80|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10,160,951 (9.7M) [text/plain]

100%[===============================================>] 10,160,951 756.37K/s ETA 00:00

13:25:08 (747.87 KB/s) - `UTBonusPack001.7z' saved [10160951/10160951]

[utserver@margrave01 ~]$ wget http://www.margrave.myzen.co.uk/downloads/utbonuspacks/UTBonusPack002.7z
--13:25:16-- http://www.margrave.myzen.co.uk/downloads/utbonuspacks/UTBonusPack002.7z
=> `UTBonusPack002.7z'
Resolving www.margrave.myzen.co.uk... 212.23.8.80
Connecting to www.margrave.myzen.co.uk|212.23.8.80|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1,074,902 (1.0M) [text/plain]

100%[===============================================>] 1,074,902 679.91K/s

13:25:18 (677.14 KB/s) - `UTBonusPack002.7z' saved [1074902/1074902]

[utserver@margrave01 ~]$ wget http://www.margrave.myzen.co.uk/downloads/utbonuspacks/UTBonusPack003inoxxpack.7z
--13:25:32-- http://www.margrave.myzen.co.uk/downloads/utbonuspacks/UTBonusPack003inoxxpack.7z
=> `UTBonusPack003inoxxpack.7z'
Resolving www.margrave.myzen.co.uk... 212.23.8.80
Connecting to www.margrave.myzen.co.uk|212.23.8.80|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3,582,739 (3.4M) [text/plain]

100%[===============================================>] 3,582,739 760.70K/s ETA 00:00

13:25:37 (737.30 KB/s) - `UTBonusPack003inoxxpack.7z' saved [3582739/3582739]

[utserver@margrave01 ~]$ wget http://www.margrave.myzen.co.uk/downloads/utbonuspacks/UTBonusPack004-no-umod.7z
--13:25:48-- http://www.margrave.myzen.co.uk/downloads/utbonuspacks/UTBonusPack004-no-umod.7z
=> `UTBonusPack004-no-umod.7z'
Resolving www.margrave.myzen.co.uk... 212.23.8.80
Connecting to www.margrave.myzen.co.uk|212.23.8.80|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11,312,333 (11M) [text/plain]

100%[===============================================>] 11,312,333 751.98K/s ETA 00:00

13:26:03 (744.68 KB/s) - `UTBonusPack004-no-umod.7z' saved [11312333/11312333]


And then verify the MD5 checksums

[utserver@margrave01 ~]$ for i in UTBonus*.7z ; do md5sum $i ; done
e6a0f92e45e24a3c56dafffc6b463b4c UTBonusPack001.7z
876f8048e220a31fb0e51f3c89dfbe8f UTBonusPack002.7z
66f024be5411d0989dc35df2e740653d UTBonusPack003inoxxpack.7z
851f16758220b50ac093da8a1413b472 UTBonusPack004-no-umod.7z
[utserver@margrave01 ~]$


A brief diversion - tidying-up

At this point, in order to de-clutter the /home/utserver/ directory, I'd recommend that once a file has been dealt with (as have the two Linux-ut-server-436.7z.00x files), that the files be moved to a separate long-term storage location.


[utserver@margrave01 ~]$ mkdir -p /home/utserver/masterinstallfiles/
[utserver@margrave01 ~]$ mv Linux-ut-server-436.7z.00* ./masterinstallfiles/
[utserver@margrave01 ~]$ rm ut-server-436.tar
[utserver@margrave01 ~]$


Unpack the bonus packs


[utserver@margrave01 ~]$ for i in UTBonusPack*.7z ; do 7za e $i ; done

7-Zip (A) 4.51 beta Copyright (c) 1999-2007 Igor Pavlov 2007-07-25
p7zip Version 4.51 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Processing archive: UTBonusPack001.7z

Extracting UTBonusPack.umod

Everything is Ok

7-Zip (A) 4.51 beta Copyright (c) 1999-2007 Igor Pavlov 2007-07-25
p7zip Version 4.51 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Processing archive: UTBonusPack002.7z

Extracting utbonuspack2/DE.umod
Extracting utbonuspack2/CTF-HallOfGiants.unr
Extracting utbonuspack2/CTF-Orbital.unr
Extracting utbonuspack2

Everything is Ok

7-Zip (A) 4.51 beta Copyright (c) 1999-2007 Igor Pavlov 2007-07-25
p7zip Version 4.51 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Processing archive: UTBonusPack003inoxxpack.7z

Extracting 003utinoxxpack.umod

Everything is Ok

7-Zip (A) 4.51 beta Copyright (c) 1999-2007 Igor Pavlov 2007-07-25
p7zip Version 4.51 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Processing archive: UTBonusPack004-no-umod.7z

Extracting Help/BP4README.txt
Extracting system/skeletalchars.int
Extracting system/SkeletalChars.u
Extracting maps/CTF-Beatitude.unr
Extracting maps/CTF-EpicBoy.unr
Extracting maps/CTF-Face-SE.unr
Extracting maps/CTF-Ratchet.unr
Extracting maps/DM-Bishop.unr
Extracting maps/DM-Closer.unr
Extracting maps/DM-Grit-TOURNEY.unr
Extracting maps/DM-Viridian-TOURNEY.unr
Extracting maps/DOM-Bullet.unr
Extracting maps/DOM-Cidom.unr
Extracting maps/DOM-Lament][.unr
Extracting maps/DOM-WolfsBay.unr
Extracting textures/Factory.utx
Extracting textures/SGTech1.utx
Extracting textures
Extracting system
Extracting maps
Extracting Help

Everything is Ok
[utserver@margrave01 ~]$


That left a bit of a mess in the directory so let's tidy it up somewhat. Move the maps etc. from BP2 & BP4

[utserver@margrave01 ~]$ mv *.unr /home/utserver/ut-server/Maps/
[utserver@margrave01 ~]$ mv *.utx /home/utserver/ut-server/Textures/
[utserver@margrave01 ~]$ mv skeletalchars.int /home/utserver/ut-server/System/
[utserver@margrave01 ~]$ mv SkeletalChars.u /home/utserver/ut-server/System/
Move the download files

[utserver@margrave01 ~]$ mv -v *.7z ./masterinstallfiles/
`UTBonusPack001.7z' -> `./masterinstallfiles/UTBonusPack001.7z'
`UTBonusPack002.7z' -> `./masterinstallfiles/UTBonusPack002.7z'
`UTBonusPack003inoxxpack.7z' -> `./masterinstallfiles/UTBonusPack003inoxxpack.7z'
`UTBonusPack004-no-umod.7z' -> `./masterinstallfiles/UTBonusPack004-no-umod.7z'
[utserver@margrave01 ~]$
Remove some empty directories
Caution - /home/utserver/maps/, not /home/utserver/ut-server/Maps/.
[utserver@margrave01 ~]$ rmdir /home/utserver/maps/
[utserver@margrave01 ~]$ rmdir /home/utserver/system/
[utserver@margrave01 ~]$ rmdir /home/utserver/textures/
[utserver@margrave01 ~]$ rmdir /home/utserver/Help/
[utserver@margrave01 ~]$ rmdir utbonuspack2/
[utserver@margrave01 ~]$

In order to unpack BP1 & 3, we need a utility to manage UMOD formatted files. There is a Perl script to do that here

[utserver@margrave01 ~]$ wget http://www.margrave.myzen.co.uk/downloads/installationutilities/umodunpack.pl
--11:18:21-- http://www.margrave.myzen.co.uk/downloads/installationutilities/umodunpack.pl
=> `umodunpack.pl'
Resolving www.margrave.myzen.co.uk... 212.23.8.80
Connecting to www.margrave.myzen.co.uk|212.23.8.80|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 24,424 (24K) [application/x-perl]

100%[===============================================>] 24,424 --.--K/s

11:18:21 (231.21 KB/s) - `umodunpack.pl' saved [24424/24424]

[utserver@margrave01 ~]$
We need to make the script executable (well, maybe not need but it certainly helps)

[utserver@margrave01 ~]$ chmod 755 umodunpack.pl
And we can check that it works by invoking the --help option

[utserver@margrave01 ~]$ ./umodunpack.pl --help
Usage: ./umodunpack.pl [--base <base_dir>] --list|--info|--unpack <umod_file>

Unpack a Umod file for Unreal our Unreal Tournament.

-h|--help : this help
-v|--version : display version info
-i|--info : info on umod file
-l|--list : list files in Umod
-b|--base <base_dir> : base directory for Unreal install, default
is .
-u|--unpack : extract the files to the UT basedir (default)
-e|--extract <file> : extract specific file
-r|--readme : view ReadMe file, if any, in umod

Use 'perldoc ./umodunpack.pl' for more info.

[utserver@margrave01 ~]$


We can query the UMOD files for information about them


[utserver@margrave01 ~]$ ./umodunpack.pl --info 003utinoxxpack.umod

Mod Name: Unreal Tournament Inoxx Pack (http://www.unrealtournament.com/)
Version: 100 (http://unreal.epicgames.com/tournamentversions.htm)
Developer: Epic Games, Inc. (http://www.epicgames.com/)

[utserver@margrave01 ~]$ ./umodunpack.pl --info UTBonusPack.umod

Mod Name: Unreal Tournament Bonus Pack (http://www.unrealtournament.com/)
Version: 100 (http://unreal.epicgames.com/tournamentversions.htm)
Developer: Epic Games, Inc. (http://www.epicgames.com/)

[utserver@margrave01 ~]$

[utserver@margrave01 ~]$ ./umodunpack.pl --info DE.umod

Mod Name: DEMutators (www.digitalextremes.com)
Version: 101 (www.digitalextremes.com)
Developer: Digital Extremes (www.digitalextremes.com)

[utserver@margrave01 ~]$


[utserver@margrave01 ~]$ ./umodunpack.pl --base /home/utserver/ut-server/ --unpack UTBonusPack.umod
extracting file: Maps\DM-Cybrosis][.unr
extracting file: Maps\DM-Malevolence.unr
extracting file: Maps\DM-ArcaneTemple.unr
extracting file: Maps\DM-Mojo][.unr
extracting file: Maps\DM-Shrapnel][.unr
extracting file: Maps\DM-HealPod][.unr
extracting file: Maps\DM-Agony.unr
extracting file: Maps\CTF-Cybrosis][.unr
extracting file: Maps\CTF-Darji16.unr
extracting file: Maps\CTF-Hydro16.unr
extracting file: Maps\CTF-Noxion16.unr
extracting file: system\multimesh.u
extracting file: system\relics.u
extracting file: system\relicsbindings.u extracting file: system\multimesh.int
extracting file: system\relics.int
extracting file: system\relicsbindings.int
extracting file: system\epiccustommodels.u
extracting file: system\tnalimeshskins.int
extracting file: system\tskmskins.int
extracting file: system\tcowmeshskins.int
extracting file: textures\tnalimeshskins.utx
extracting file: textures\tskmskins.utx
extracting file: textures\tcowmeshskins.utx
extracting file: Help\BonusPackReadme.txt
[utserver@margrave01 ~]$


Unpack

[utserver@margrave01 ~]$ ./umodunpack.pl --base /home/utserver/ut-server/ --unpack UTBonusPack.umod
extracting file: Maps\DM-Cybrosis][.unr
extracting file: Maps\DM-Malevolence.unr
extracting file: Maps\DM-ArcaneTemple.unr
extracting file: Maps\DM-Mojo][.unr
extracting file: Maps\DM-Shrapnel][.unr
extracting file: Maps\DM-HealPod][.unr
extracting file: Maps\DM-Agony.unr
extracting file: Maps\CTF-Cybrosis][.unr
extracting file: Maps\CTF-Darji16.unr
extracting file: Maps\CTF-Hydro16.unr
extracting file: Maps\CTF-Noxion16.unr
extracting file: system\multimesh.u
extracting file: system\relics.u
extracting file: system\relicsbindings.u
extracting file: system\multimesh.int
extracting file: system\relics.int
extracting file: system\relicsbindings.int
extracting file: system\epiccustommodels.u
extracting file: system\tnalimeshskins.int
extracting file: system\tskmskins.int
extracting file: system\tcowmeshskins.int
extracting file: textures\tnalimeshskins.utx
extracting file: textures\tskmskins.utx
extracting file: textures\tcowmeshskins.utx
extracting file: Help\BonusPackReadme.txt
[utserver@margrave01 ~]$


Note that the system and textures directories have a lower case lead letter. As case is significant in a Linux filesystem, it is necessary to move the output files to the correct System and Textures directories. Please pay special attention here to the case of the files names.

[utserver@margrave01 ~]$ ls ./ut-server/
Help Logs Maps Music NetGamesUSA.com Sounds system System textures Textures ucc Web
[utserver@margrave01 ~]$ mv -v ./ut-server/system/* ./ut-server/System/
`./ut-server/system/epiccustommodels.u' -> `./ut-server/System/epiccustommodels.u'
`./ut-server/system/multimesh.int' -> `./ut-server/System/multimesh.int'
`./ut-server/system/multimesh.u' -> `./ut-server/System/multimesh.u'
`./ut-server/system/relicsbindings.int' -> `./ut-server/System/relicsbindings.int'
`./ut-server/system/relicsbindings.u' -> `./ut-server/System/relicsbindings.u'
`./ut-server/system/relics.int' -> `./ut-server/System/relics.int'
`./ut-server/system/relics.u' -> `./ut-server/System/relics.u'
`./ut-server/system/tcowmeshskins.int' -> `./ut-server/System/tcowmeshskins.int'
`./ut-server/system/tnalimeshskins.int' -> `./ut-server/System/tnalimeshskins.int'
`./ut-server/system/tskmskins.int' -> `./ut-server/System/tskmskins.int'
[utserver@margrave01 ~]$ mv -v ./ut-server/textures/* ./ut-server/Textures/
`./ut-server/textures/tcowmeshskins.utx' -> `./ut-server/Textures/tcowmeshskins.utx'
`./ut-server/textures/tnalimeshskins.utx' -> `./ut-server/Textures/tnalimeshskins.utx'
`./ut-server/textures/tskmskins.utx' -> `./ut-server/Textures/tskmskins.utx'
[utserver@margrave01 ~]$ rmdir ./ut-server/system/
[utserver@margrave01 ~]$ rmdir ./ut-server/textures/
[utserver@margrave01 ~]$


[utserver@margrave01 ~]$ ./umodunpack.pl --base /home/utserver/ut-server/ --unpack DE.umod
extracting file: System\de.int
./umodunpack.pl: file exists, skipping: de.int
extracting file: System\de.u
./umodunpack.pl: file exists, skipping: de.u
extracting file: Help\demutators-readme.txt
extracting file: System\de-logo.bmp
modifying ini file: System\UnrealTournament.ini
[utserver@margrave01 ~]$

Note that there are multiple versions of the de.u file floating about. If you need the version included in the bonus pack then extract the file individually somewhere other than in the UT Dedicated Server directory and then overwrite the existing de.u (and .int)

[utserver@margrave01 ~]$./umodunpack.pl --base /home/utserver/ut-server/ --unpack 003utinoxxpack.umod
extracting file: Maps\DM-Crane.unr
extracting file: Maps\DM-SpaceNoxx.unr
extracting file: Maps\CTF-Face][.unr
extracting file: Maps\CTF-High.unr
extracting file: Maps\CTF-Kosov.unr
extracting file: Maps\CTF-Nucleus.unr
extracting file: textures\noxxpack.utx
extracting file: textures\xutfx.utx
extracting file: Help\InoxxPack.txt
[utserver@margrave01 ~]$


Note that once again, we have a textures directory and so we have to move any files in the textures directory into the Textures directory

[utserver@margrave01 ~]$ mv -v ./ut-server/textures/* ./ut-server/Textures/
`./ut-server/textures/noxxpack.utx' -> `./ut-server/Textures/noxxpack.utx'
`./ut-server/textures/xutfx.utx' -> `./ut-server/Textures/xutfx.utx'
[utserver@margrave01 ~]$ rmdir ./ut-server/textures/
[utserver@margrave01 ~]$

And tidy up again

[utserver@margrave01 ~]$ mv -v *.umod ./masterinstallfiles/
`003utinoxxpack.umod' -> `./masterinstallfiles/003utinoxxpack.umod'
`DE.umod' -> `./masterinstallfiles/DE.umod'
`UTBonusPack.umod' -> `./masterinstallfiles/UTBonusPack.umod'
[utserver@margrave01 ~]$


TBD: Note sort out server packages and BP4 readme

Last but not least, we want apply the final patch final UTPG patch. This can be found here

Applying the patch works best if we are in the root of the UT Dedicated Server package installation

[utserver@margrave01 ~]$ cd /home/utserver/ut-server/
[utserver@margrave01 ut-server]$ pwd
/home/utserver/ut-server
[utserver@margrave01 ut-server]$


And now get the patch

[utserver@margrave01 ut-server]$ wget http://www.margrave.myzen.co.uk/downloads/utpatches/UTPGPatch451.tar.bz2
--17:17:41-- http://www.margrave.myzen.co.uk/downloads/utpatches/UTPGPatch451.tar.bz2
=> `UTPGPatch451.tar.bz2'
Resolving www.margrave.myzen.co.uk... 212.23.8.80
Connecting to www.margrave.myzen.co.uk|212.23.8.80|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3,064,473 (2.9M) [application/x-tar]

100%[===============================================>] 3,064,473 722.66K/s ETA 00:00

17:17:46 (709.44 KB/s) - `UTPGPatch451.tar.bz2' saved [3064473/3064473]


The patch is compressed in the relatively uncommon (for the desktop world at least) bzip format and contains a tar file that should be extracted from the root directory of the UT Dedicated Server installation.

[utserver@margrave01 ut-server]$ bunzip2 UTPGPatch451.tar.bz2
[utserver@margrave01 ut-server]$ tar -xvf UTPGPatch451.tar
Help/
Help/ReleaseNotes.htm
System/
System/IpDrv.int
System/NullRender.so
System/Core.u
System/UBrowser.u
System/Engine.u
System/IpServer.int
System/d3ddrv.int
System/patch.md5
System/Core.int
System/IpDrv.u
System/SDLGLDrv.so
System/IpServer.u
System/UWeb.u
System/editorres/
System/editorres/AddSpecial.bmp
System/editorres/BBTerrain.bmp
System/editorres/BBCurvedStair.bmp
System/editorres/BrushClipSplit.bmp
System/editorres/AddMover.bmp
System/editorres/ModeSubtract.bmp
System/editorres/BBSpiralStair.bmp
System/editorres/BBLinearStair.bmp
System/editorres/ModeRotate.bmp
System/editorres/TexturePan.bmp
System/editorres/ShowAll.bmp
System/editorres/HideSelected.bmp
System/editorres/ShowSelected.bmp
System/editorres/BBSheet.bmp
System/editorres/BrushClipDelete.bmp
System/editorres/BBCube.bmp
System/editorres/ModeAdd.bmp
System/editorres/BBVolumetric.bmp
System/editorres/ModeScale.bmp
System/editorres/BrushClipFlip.bmp
System/editorres/TextureRotate.bmp
System/editorres/InvertSelections.bmp
System/editorres/ModeCamera.bmp
System/editorres/BBCylinder.bmp
System/editorres/BBCone.bmp
System/editorres/ModeBrushClip.bmp
System/editorres/BBSphere.bmp
System/editorres/BBGeneric.bmp
System/editorres/ModeDeintersect.bmp
System/editorres/ModeFaceDrag.bmp
System/editorres/BrushClip.bmp
System/editorres/ModeVertex.bmp
System/editorres/vssver.scc
System/editorres/ModeIntersect.bmp
System/glidedrv.int
System/UnrealEd.ini
System/UnrealEd.int
System/IpDrv.so
System/Core.so
System/UWeb.int
System/edsplash.bmp
System/Engine.so
System/Render.so
System/ucc-bin
System/Engine.int
System/UBrowser.int
System/UTServerAdmin.u
System/softdrv.int
System/UWeb.so
System/ut-bin
System/Fire.so
System/NullDrv.so
System/Window.int
System/opengldrv.int
System/galaxy.int
System/SDLDrv.so
System/editor.int
System/UTServerAdmin.int
System/Editor.so
System/windrv.int
System/OpenGLDrv.so
System/checkfiles.sh
System/NullNetDriver.so
Web/
Web/current_console.uhtm
Web/inc/
Web/inc/menu_header.inc
Web/inc/content_footer_tables.inc
Web/inc/content_header_tables.inc
Web/inc/top_end.inc
Web/inc/footer.inc
Web/inc/top_begin.inc
Web/inc/header.inc
Web/inc/menu_footer.inc
Web/defaults_ippolicy-h.uhtm
Web/menu.uhtm
Web/plaintext/
Web/plaintext/current_console.uhtm
Web/plaintext/inc/
Web/plaintext/inc/whiteheader.inc
Web/plaintext/inc/footer.inc
Web/plaintext/inc/header.inc
Web/plaintext/defaults_ippolicy-h.uhtm
Web/plaintext/menu.uhtm
Web/plaintext/root.uhtm
Web/plaintext/current.uhtm
Web/plaintext/current_game.uhtm
Web/plaintext/defaults.uhtm
Web/plaintext/current_menu.uhtm
Web/plaintext/current_console_send.uhtm
Web/plaintext/defaults_rules.uhtm
Web/plaintext/defaults_bots.uhtm
Web/plaintext/defaults_settings.uhtm
Web/plaintext/defaults_server.uhtm
Web/plaintext/defaults_maps.uhtm
Web/plaintext/current_console_log.uhtm
Web/plaintext/current_mutators.uhtm
Web/plaintext/message.uhtm
Web/plaintext/defaults_menu.uhtm
Web/plaintext/defaults_ippolicy-d.uhtm
Web/plaintext/current_players.uhtm
Web/plaintext/defaults_ippolicy-f.uhtm
Web/root.uhtm
Web/current.uhtm
Web/current_game.uhtm
Web/defaults.uhtm
Web/current_menu.uhtm
Web/current_console_send.uhtm
Web/defaults_rules.uhtm
Web/defaults_bots.uhtm
Web/images/
Web/images/1.gif
Web/images/3-1.gif
Web/images/3-2.gif
Web/images/4-1.gif
Web/images/4-2.gif
Web/images/right.gif
Web/images/5-1.gif
Web/images/5-2.gif
Web/images/m1-1.gif
Web/images/m1-2.gif
Web/images/6-1.gif
Web/images/6-2.gif
Web/images/image.gif
Web/images/7-1.gif
Web/images/7-2.gif
Web/images/7-3.gif
Web/images/logo.gif
Web/images/m3-1.gif
Web/images/m3-2.gif
Web/images/1-1.gif
Web/images/1-2.gif
Web/images/2-1.gif
Web/images/2-2.gif
Web/defaults_settings.uhtm
Web/defaults_server.uhtm
Web/defaults_maps.uhtm
Web/current_console_log.uhtm
Web/current_mutators.uhtm
Web/message.uhtm
Web/defaults_menu.uhtm
Web/defaults_ippolicy-d.uhtm
Web/current_players.uhtm
Web/defaults_ippolicy-f.uhtm
checkfiles.sh
patch.md5
[utserver@margrave01 ut-server]$

There is a utility to check the integrity of the patch files but it seems to have suffered some bit rot over the years and generates a number of warnings.

[utserver@margrave01 ~]$ cd /home/utserver/ut-server
[utserver@margrave01 ut-server]$ sh checkfiles.sh
UTPG Linux Patch tester - v451
Checking...
many instances of...
find: warning: you have specified the -maxdepth option after a non-option argument -iname, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.

Everything is OK
[utserver@margrave01 ut-server]$


At this point, we have done enough to have a running UT Dedicated Server but I intend to show how to add the MapVoteLA package as that greatly enhances the usability of the server from the point of view of the players. So, first download a copy and place a copy in our archive of master files.
MapVoteLA can be obtained here utserver@margrave01 ~]$ wget www.margrave.myzen.co.uk/downloads/serverutilities/MapvoteLA13.zip
--20:33:03-- http://www.margrave.myzen.co.uk/downloads/serverutilities/MapvoteLA13.zip
=> `MapvoteLA13.zip'
Resolving www.margrave.myzen.co.uk... 212.23.8.80
Connecting to www.margrave.myzen.co.uk|212.23.8.80|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 239,936 (234K) [application/zip]

100%[===============================================>] 239,936 525.63K/s

20:33:04 (524.73 KB/s) - `MapvoteLA13.zip' saved [239936/239936]

[utserver@margrave01 ~]$ cp -v MapvoteLA13.zip /home/utserver/masterinstallfiles/
`MapvoteLA13.zip' -> `/home/utserver/masterinstallfiles/MapvoteLA13.zip'
[utserver@margrave01 ~]$


As a rule, I normally unzip unknown files into a temporary directory and then move them to the desired final location. The reason for doing so is that not all zip files extract to the correct directory (e.g. some extract to a single directory, others to the correct directory but with the wrong case etc.).

[utserver@margrave01 ~]$ mkdir temp
[utserver@margrave01 ~]$ cd temp
[utserver@margrave01 temp]$ mv ../MapvoteLA13.zip .
[utserver@margrave01 temp]$ unzip MapvoteLA13.zip
Archive: MapvoteLA13.zip
inflating: Help/MapVoteAdminArea.gif
inflating: Help/MapVoteMain.gif
extracting: Help/MapVoteReport.gif
inflating: Help/ReadMe.txt
inflating: System/MapVoteLA.ini
inflating: System/MapVoteLA13.int
inflating: System/MapvoteLA13.u
inflating: Redirect/MapvoteLA13.u.uz
[utserver@margrave01 temp]$ ls -lh
total 268K
drwxrwxr-x 2 utserver utserver 4.0K 2008-09-07 20:37 Help
-rw-rw-r-- 1 utserver utserver 235K 2008-09-07 20:37 MapvoteLA13.zip
drwxrwxr-x 2 utserver utserver 4.0K 2008-09-07 20:37 Redirect
drwxrwxr-x 2 utserver utserver 4.0K 2008-09-07 20:37 System
[utserver@margrave01 temp]$


[utserver@margrave01 temp]$ mv -v ./Help/* /home/utserver/ut-server/Help/
`./Help/MapVoteAdminArea.gif' -> `/home/utserver/ut-server/Help/MapVoteAdminArea.gif'
`./Help/MapVoteMain.gif' -> `/home/utserver/ut-server/Help/MapVoteMain.gif'
`./Help/MapVoteReport.gif' -> `/home/utserver/ut-server/Help/MapVoteReport.gif'
`./Help/ReadMe.txt' -> `/home/utserver/ut-server/Help/ReadMe.txt'
[utserver@margrave01 temp]$ mv -v ./System/* /home/utserver/ut-server/System/
`./System/MapVoteLA13.int' -> `/home/utserver/ut-server/System/MapVoteLA13.int'
`./System/MapvoteLA13.u' -> `/home/utserver/ut-server/System/MapvoteLA13.u'
`./System/MapVoteLA.ini' -> `/home/utserver/ut-server/System/MapVoteLA.ini'
[utserver@margrave01 temp]$
For our immediate purposes, we are not interested in the redirect directory and the remaining files in /home/utserver/temp/ may be safely deleted.

Configuring the server

At last! We reach the configuration files. There are two files of interest /home/utserver/ut-server/System/UnrealTournament.ini and /home/utserver/ut-server/System/MapVoteLA.ini.

UnrealTournament.ini



For the first configuration file /home/utserver/ut-server/System/UnrealTournament.ini, the sequence that I will show here works only on a copy. That way, it is always possible to revert to a default configuration file.
[utserver@margrave01 ~]$ cd /home/utserver/ut-server/System
[utserver@margrave01 System]$ cp -v UnrealTournament.ini ut.ini
`UnrealTournament.ini' -> `ut.ini'
[utserver@margrave01 System]$


All subsequent edits should be done on the file ut.ini. TBD - MapVoteLA, TeamBeacon2k4, Advanced Web Server, XMaps (maybe), use of retail textures to fix the skating bot problem. Command lines to start the various game types. Place holder - assumes the use of MapVoteLA and Wormbo's TeamBeacon2k4

Death Match


cd /home/utserver/ut-server/System
./ucc-bin server DM-Deck16][?game=Botpack.DeathMatchPlus?Mutator=TeamBeacon2k4.TeamBeacon2k4,MapVoteLA13.BDBMapVote?ini=ut.ini -nohomedir 2>&1 >/var/ut/ut$(date --iso-8601=minutes|tr '\:' '_'|tr '\+' '_').log&

Assault


cd /home/utserver/ut-server/System
./ucc-bin server AS-Frigate?game=Botpack.Assault?Mutator=TeamBeacon2k4.TeamBeacon2k4,MapVoteLA13.BDBMapVote?ini=ut.ini -nohomedir 2>&1 >/var/ut/ut$(date --iso-8601=minutes|tr '\:' '_'|tr '\+' '_').log&

Capture the Flag


cd /home/utserver/ut-server/System
./ucc-bin server CTF-EternalCave?game=Botpack.CTFGame?Mutator=TeamBeacon2k4.TeamBeacon2k4,MapVoteLA13.BDBMapVote ini=ut.ini -nohomedir 2>&1 >/var/ut/ut$(date --iso-8601=minutes|tr '\:' '_'|tr '\+' '_').log&

Domination


cd /home/utserver/ut-server/System
./ucc-bin server DOM-Cinder?game=Botpack.Domination?Mutator=TeamBeacon2k4.TeamBeacon2k4,MapVoteLA13.BDBMapVote?ini=ut.ini -nohomedir 2>&1 >/var/ut/ut$(date --iso-8601=minutes|tr '\:' '_'|tr '\+' '_').log&

Last Man Standing


cd /home/utserver/ut-server/System
./ucc-bin server DM-Deck16][?game=Botpack.LastManStanding?Mutator=TeamBeacon2k4.TeamBeacon2k4,MapVoteLA13.BDBMapVote?ini=ut.ini -nohomedir 2>&1 >/var/ut/ut$(date --iso-8601=minutes|tr '\:' '_'|tr '\+' '_').log&

Team Death Match


cd /home/utserver/ut-server/System
./ucc-bin server DM-Deck16][?game=Botpack.TeamGamePlus?Mutator=TeamBeacon2k4.TeamBeacon2k4,MapVoteLA13.BDBMapVote?ini=ut.ini -nohomedir 2>&1 >/var/ut/ut$(date --iso-8601=minutes|tr '\:' '_'|tr '\+' '_').log&



If you have comments or questions, please contact me at IronMonkey. Thanks!