The revisions let you track differences between multiple versions of a post.

Revision of Team- IPX ETQW Server install guide from Sun, 03/08/2008 - 17:48

Team IPX ETQW Server at Home

Hi All

Here is some more in-depth detail on how to setup the Team IPX ETQW Server
This information is a follow up from this link
http://teamipx.net/blog/harassmentpanda/2008/07/20/team+ipx+server

The Server Hadware
1. MOTHERBOARD: Gigabyte
2. CPU: AMD Duron 2 GHZ
3. RAM: 2GB DDR667
4. VIDEOCARD: Onboard NVIDIA with shared 32MB Ram
5. 2 X HD: 250GB HD
6. DVD 52x
7. FLOPPY: No
8. POWER SUPPLY: Antec 350W
9. KVM Logitech Keyboard & Mouse

Router Requirement
ADSL2+
UP&P Required
NAT Required
Port Forwarding Required

Firewall Rules
Assume the Linux server ipaddress is 192.168.1.5

Source address “ANY” tcp/udp 3076 Destination 192.168.1.5
Source address “ANY” tcp/udp 27766 Destination 192.168.1.5
Source address “192.168.1.5” tcp 80 Destination “ANY”

NB port 3076 is for Punk Buster
NB Port 27766 is the server announcement Port for the ETQW tracker and client connections

NAT Rules
Incoming port 27766 Port Translation 27766 server IP Address 192.168.1.5
Incoming port 3076 Port Translation 3076 server IP Address 192.168.1.5

NB these ports need to be change from the default ones due to the fact that they clash with the current ports required to join an ETQW server

Bandwidth Requirement
INTERNET UPSTREAM REQUIREMENTS

Suggested Maximum Players setting

256Kbps: 8 players
512Kbps: 13 players
768Kbps: 17 players
1.5Mbps: 24 players

Suggested Player to Bot maximum (Minimum Clients = 16, Maximum Players – determined by upstream value)
256Kbps: 4 players + 12 bots
512Kbps: 10 players + 6 bots
768Kbps: 13 players + 3 bots

NB suggested upstream bandwith on ADSL2+ is 1024Kpbs

OS Installed
Linux Version Ubuntu 8.04 LTS Server Edition
http://www.ubuntu.com/getubuntu/download

Standard install + SSH server to allow for remote administration
I set the RAID up myself it is a LVM
This is my Vmware Server at home

Where to get the files required for ETQW 1.5 Server Linux
Enemy Territory: Quake Wars v1.5 Dedicated Server – Linux
http://www.egn.com.au/files/browse/12/318

Size 431.71 MB

ETQWPro 0.6 Released
Change Log
http://myhannes.info/wiki/index.php/Promod_0.6_changelog

Cvars List
http://myhannes.info/wiki/index.php/Cvars_full_list

Download Location for Zip source files
http://myhannes.info/ccount11/click.php?id=30

NB you only need the zip file for the server install

Installing ETQW Server

I will keep this basic, I will assume that you have your Linux Server built and already have a SSH shell connection to the Linux Server
Link to ssh tools
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
You will need putty.exe and psftp.exe

I will put some “sudo” command in the install documentation incase you have not logged in to the Linux box as “root”

Install ETQW Linux server 1.5
You will need to have your ETQW DVD ready and have it mounted in your server DVD Drive

robag@krull:~$ sudo mount /dev/cdrom
[sudo] password for robag:
mount: block device /dev/scd0 is write-protected, mounting read-only

Sftp the file ETQW-server-1.5-full.x86.run
To your Linux servers home driver

To start the installer run this command
robag@krull:~$ sudo ./ETQW-server-1.5-full.x86.run
this will give you a license screen to agree to just press “enter”
use you right arrow key and select yes, press enter

This will now take you to the installer
accept the default path of “/usr/local/games/etqw.server”
use you arrow key to accept the default and remember to install Punk Buster

When the install finishes you should end up with a directory structure like this
Issues this command before creating files in the directory
robag@krull:/usr/local/games$ sudo chown -R root:root /usr/local/games/etqw.server/
[sudo] password for robag:
This command will set the correct file permissions on the etqw.server directory and sub-directories

Path /usr/local/games/etqw.server

base
copyrights.txt
etqw-dedicated
etqwded.x86
etqw_icon.png
etqwtv.txt
EULA.txt
libgcc_s.so.1
libjpeg.so.62
libSDL-1.2.id.so.0
libstdc++.so.6
openurl.sh
pb
readme_1_5_patch.txt
README.txt
sdl.1.2.12.patch
server_readme.txt

Now for some very important files

In the location /usr/local/games/etqw.server/base
You will find the file “server.cfg”
This is you server config file it is were almost all the setting for ETQW server go
Here is a list of mine

robag@krull:/usr/local/games/etqw.server/base$ cat server.cfg

///////////////////////Start File /////////////////////////

// you can directly use this file without removing the description

bot_aimSkill “2” // sets the bot’s default aiming skill. 0 = EASY, 1 = MEDIUM, 2 = EXPERT, 3 = MASTER, default = “1”
bot_allowClassChanges “1” // 0 = bots won’t ever change their class, 1 = Bots can change their class thru script/code, default = “1”
bot_allowObstacleDecay “1” // 0 = dont allow obstacle decay. 1 = allow obstacle decay, default = “1”
bot_balanceCriticalClass “1” // have the bots try to keep someone playing the critical class at all times. 0 = keep the class they spawn in as, default = “1”
bot_doObjectives “1” // 0 = bots let the player play the hero, with the bots filling a supporting role, 1 = bots do all the major objectives along with the player, default = “1”
bot_enable “1” // 0 = bots will not be loaded in the game, 1 = bots are loaded, default = “1”
bot_fakePing “1” // have the bots display fake pings in the scoreboard, default = “0”
bot_knifeOnly “0” // goofy mode where the bots only use their knifes in combat, default = “0”
bot_minClients “5” // keep a minimum number of clients on the server with bots and humans. -1 = disabled, default = “-1”
bot_noChat “0” // 0 = bots chat, 1 = bots never chat, default = “0”
bot_noRandomJump “0” // makes bots not randomly jump, default = “0”
bot_noTaunt “0” // 0 = bots taunt, 1 = bots never taunt, default = “1”
bot_sillyWarmup “1” // 0 = bots play the game like normal, 1 = bots shoot each other and act silly during warmup, default = “0”
bot_skill “2” // sets the bot’s default AI skill. 0 = EASY, 1 = NORMAL, 2 = EXPERT, default = “1”
bot_sleepWhenServerEmpty “1” // has the bots stop thinking when the server is idle and there are no humans playing, to conserve CPU, default = “1”
bot_uiNumGDF “2” // the number of gdf bots to add to the server. -1 = disabled, default = “-1”
bot_uiNumStrogg “2” // the number of strogg bots to add to the server. -1 = disabled, default = “-1”
bot_uiSkill “2” // only used by the GUI for skill presets, you can ignore this setting totally, default = “1”
bot_useDeployables “1” // 0 = bots dont drop deployables of any kind, 1 = bots can drop all deployables, default = “1”
bot_useShotguns “1” // 0 = bots wont use shotguns/nailguns, 1 = bots will use shotguns/nailguns, default = “0”
bot_useSniperWeapons “1” // 0 = bots wont use sniper rifles, 1 = bots will use sniper rifles, default = “1”
bot_useSpawnHosts “1” // 0 = strogg bots can’t use spawn host bodies, 1 = bots can use spawnhosts, default = “1”
bot_useStrafeJump “1” // 0 = bots can’t strafe jump, 1 = bots can strafe jump to goal locations that are far away, default = “0”
bot_useSuicideWhenStuck “1” // 0 = bots never suicide when stuck, 1 = bots suicide if they detect that they’re stuck, default = “1”
bot_useTKRevive “1” // allows the bots to use the advanced tactic of TK reviving if their teammate is weak, 0 = disabled, default = “1”
bot_useUniforms “1” // 0 = bots won’t steal uniforms, 1 = bots take uniforms, default = “1”
bot_useVehicles “1” // 0 = bots dont use vehicles, 1 = bots do use vehicles, default = “1”

g_allowComplaint_charge “0” // allow complaints for teamkills with charges, default = “0”
g_allowComplaint_explosives “0” // allow complaints for teamkills with explosive weapons and items, default = “1”
g_allowComplaint_firesupport “0” // allow complaints for teamkills with fire support, default = “1”
g_allowComplaint_vehicles “0” // allow complaints for teamkills with vehicle, default = “1”
g_autoFireTeam “0” // prompt to join a fireteam when switching to a new team, default = “0”
g_autoReadyPercent “15” // percentage of a full server that must be in game for auto ready to start, default = “50”
g_autoReadyWait “1” // length of time (in minutes) auto ready will wait before starting the countdown, default = “1”
g_disableFootsteps “0” // enable/disable footsteps, default = “0”
g_disableGlobalAudio “0” // disable global VOIP communication, default = “0”
g_disableTransportDebris “0” // the parts of a destroyed/decayed vehicle that are just there for visuals and don’t actually interact with anything, default = “0”
g_disableVehicleSpawns “0” // disables vehicles spawning from construction pads, default = “0”
g_execMapConfigs “0” // execute map cfg with same name, default = “0”
g_gravity “1066” // gravity, default = “1066”
g_logDebugText “0” // dunno, default = “0”
g_maxVoiceChats “4” // maximum number of voice chats a player may do in a period of time, default = “4”
g_maxVoiceChatsOver “30” // time over which the maximum number of voice chat limit is applied, default = “30”
g_noBotSpectate “1” // disables the ability to spectate bots, default = “0”
g_noVehicleDecay “0” // enables / disables vehicle decay, default = “0”
g_playerPushForce “200” // force players can be pushed by other players, default = “200”
g_showPlayerArrows “1” // enable/disable arrows above the heads of players, off = 0, all = 1, friendly only = 2, default = “1”
g_timeoutToSpec “5” // timeout (in minutes) for players who are AFK to go into spectator mode, 0 = disabled, default = “0”
g_useBotsInPlayerTotal “1” // should bots count towards the number of players required to start the game?, default = “1”
g_useSimpleStats “0” // only look up local server stats, default = “0”
g_warmupDamage “1” // enable/disable players taking damage during warmup, default = “1”
g_writeStats “1” // write stats txt files at the end of maps, default = “0”

logFile “1” // 1 = buffer log, 2 = flush after each print, default = “0”
logFileName “$Y$M$D_server.log” // name of log file, if empty, console.log will be used. $Y = year, $M = month, $D = day, $h = hour, $m = minute, $s = second, default = “console.log”
logTimeStamps “1” // add time stamps to console log, default = “0”

net_serverMaxClientRate “16000” // maximum rate to a client in bytes/sec, default = “16000”
net_serverMaxReservedClientSlots “2” // maximum number of player slots reserved for session invites, default = “2”
net_serverRemoteConsolePassword “xxxxxxxx” // remote console password, default = “” also know as rcon
net_useUPnP “1” // use UPnP for external address identification, default = “1”

set si_needpass “1” //makes server ask for password
set g_password “yes”
set g_privatePassword “xxxxxxxxxx” //place password in between quote marks

si_adminname “Robag” // admin name(s), default = “”
si_adminStart “0” // admin required to start the match, default = “0”
si_allowLateJoin “1” // enable/disable players joining a match in progress, default = “1”
si_antiLag “1” // server does antilag on players, default = “1”
si_antiLagForgiving “0” // how forgiving the antilag is – the higher, the more forgiving, default = “0”
si_antiLagOnly “0” // ONLY use antilag, default = “0”
si_disableVoting “0” // disable/enable all voting, default = “0”
si_email “[email protected]” // contact email address, default = “”
si_gameReviewReadyWait “0” // wait for players to ready up before going to the next map, default = “0”
si_irc “#TeamIPX” // IRC channel, default = “”
si_maxPlayers “32” // max number of players allowed on the server, default = “24”
si_motd_1 “^7Welcome to the Team – ^4I^7P^AX ^7Prac Server” // motd line 1, default = “”
si_motd_2 “^7You can kill an ^4I^7P^AX, ^7but you’ll never outsmart one”// motd line 2, default = “”
si_motd_3 “^7irc.gamesurge.net #TeamIPX “ // motd line 3, default = “”
si_motd_4 “^7visit www.teamipx.net “ // motd line 4, default = “”
si_name “^7Team – ^4I^7P^AX ^7Prac Server” // name of the server, default = “ETQW Server”
si_readyPercent “10” // percentage of players that need to ready up to start a match, default = “51”
si_rules “sdGameRulesCampaign” // ruleset for game, default = “sdGameRulesCampaign”, can be “sdGameRulesCampaign”, “sdGameRulesObjective” or “sdGameRulesStopWatch”
si_spectators “1” // 1 = allow spectators, 0 = require all clients to play, default = “1”
si_teamDamage “1” // enable team damage, default = “1”
si_teamForceBalance “1” // stop players from unbalancing teams, default = “1”
si_timelimit “20” // time limit (in minutes), default = “20”
si_website “http://www.teamipx.net” // website info, default = “”

set m1 “set g_nextMap $m2; spawnServer campaign_africa” // rotation script for each campaign, keep it at the end of your config, see rotation.txt for more
set m2 “set g_nextMap $m3; spawnServer campaign_northamerica” // rotation script for each campaign, keep it at the end of your config, see rotation.txt for more
set m3 “set g_nextMap $m4; spawnServer campaign_northeurope” // rotation script for each campaign, keep it at the end of your config, see rotation.txt for more
set m4 “set g_nextMap $m1; spawnServer campaign_pacific” // rotation script for each campaign, keep it at the end of your config, see rotation.txt for more
vstr m1 // rotation script for each campaign, keep it at the end of your config, see rotation.txt for more
///////////////////////End File /////////////////////////

Here is the rotations.txt file
file location :/usr/local/games/etqw.server/base/rotation.txt
// explanation rotation.txt for UNRANKED server
//this file allows the server to rotate through the maps for ETQW
if you want to use a map- or campaign-rotation on your server, replace the spawnServer line in your server.cfg with one of the rotations listed below
keep the map-/campaign-rotation at the end in your config file

///////////////////////Start File /////////////////////////

  1. map rotation #####

set m1 “set g_nextMap $m2; spawnServer area22”
set m2 “set g_nextMap $m3; spawnServer ark”
set m3 “set g_nextMap $m4; spawnServer canyon”
set m4 “set g_nextMap $m5; spawnServer island”
set m5 “set g_nextMap $m6; spawnServer outskirts”
set m6 “set g_nextMap $m7; spawnServer quarry”
set m7 “set g_nextMap $m8; spawnServer refinery”
set m8 “set g_nextMap $m9; spawnServer salvage”
set m9 “set g_nextMap $m10; spawnServer sewer”
set m10 “set g_nextMap $m11; spawnServer slipgate”
set m11 “set g_nextMap $m12; spawnServer valley”
set m12 “set g_nextMap $m1; spawnServer volcano”
vstr m1

  1. campaign rotation #####

set m1 “set g_nextMap $m2; spawnServer campaign_africa”
set m2 “set g_nextMap $m3; spawnServer campaign_northamerica”
set m3 “set g_nextMap $m4; spawnServer campaign_northeurope”
set m4 “set g_nextMap $m1; spawnServer campaign_pacific”
vstr m1

  1. mixed rotation #####

set m1 “set g_nextMap $m2; set si_rules sdGameRulesCampaign; spawnServer campaign_africa”
set m2 “set g_nextMap $m3; set si_rules sdGameRulesObjective; spawnServer area22”
set m3 “set g_nextMap $m4; set si_rules sdGameRulesStopWatch; spawnServer ark”
set m4 “set g_nextMap $m5; set si_rules sdGameRulesCampaign; spawnServer campaign_northamerica”
set m5 “set g_nextMap $m6; set si_rules sdGameRulesObjective; spawnServer canyon”
set m6 “set g_nextMap $m7; set si_rules sdGameRulesStopWatch; spawnServer island”
set m7 “set g_nextMap $m8; set si_rules sdGameRulesCampaign; spawnServer campaign_northeurope”
set m8 “set g_nextMap $m9; set si_rules sdGameRulesObjective; spawnServer outskirts”
set m9 “set g_nextMap $m10; set si_rules sdGameRulesStopWatch; spawnServer quarry”
set m10 “set g_nextMap $m11; set si_rules sdGameRulesCampaign; spawnServer campaign_pacific”
set m11 “set g_nextMap $m12; set si_rules sdGameRulesObjective; spawnServer refinery”
set m12 “set g_nextMap $m13; set si_rules sdGameRulesStopWatch; spawnServer salvage”
set m13 “set g_nextMap $m14; set si_rules sdGameRulesObjective; spawnServer sewer”
set m14 “set g_nextMap $m15; set si_rules sdGameRulesStopWatch; spawnServer slipgate”
set m15 “set g_nextMap $m16; set si_rules sdGameRulesObjective; spawnServer valley”
set m16 “set g_nextMap $m1; set si_rules sdGameRulesStopWatch; spawnServer volcano”
vstr m1
///////////////////////End File /////////////////////////

Here is the usergroups.dat file location :/usr/local/games/etqw.server/base/usergroups.dat

///////////////////////Start File /////////////////////////

// you can directly use this file without removing the description

group Default { // all players are in this group by default, do NOT set a password, remove or rename this group!
voteLevel 1
}

group Staff {
password xxxxxxxx //rconpassword set here password is not in quotes

control {
Default
Staff
}

adminBan
adminChangeCampaign
// adminExecConfig // this group is NOT allowed to execute predefinied cfg’s definied in usergroups.dat in ‘configs’ (remove this entry or comment it out like i did)
// adminGlobalVOIPMute // this group is NOT allowed to edit g_disableGlobalAudio (Voice) (remove this entry or comment it out like i did)
adminKick
adminPlayerMute
adminPlayerVOIPMute
// adminRestartCampaign // this group is NOT allowed to restart the campaign (remove this entry or comment it out like i did)
adminRestartMap
adminSetTeam
adminShuffleTeams
adminStartMatch
adminWarn

noBan
noKick

voteLevel 4
}

group Admin {
password xxxxxxxx // password used to login into this group

control {
Default // admins in this group are allowed to move players to the group specified here
Staff // admins in this group are allowed to move players to the group specified here
Admin // admins in this group are allowed to move players to the group specified here
}

adminBan // this group is allowed to ban players/bots (banning bots is useless!)
adminChangeCampaign // this group is allowed to change campaign
adminExecConfig // this group is allowed to execute predefinied cfg’s definied in usergroups.dat in ‘configs’
adminGlobalVOIPMute // this group is allowed to edit g_disableGlobalAudio (Voice)
adminKick // this group is allowed to kick players/bots
adminPlayerMute // this group is allowed to mute a player (Text)
adminPlayerVOIPMute // this group is allowed to mute a player (Voice)
adminRestartCampaign // this group is allowed to restart the campaign
adminRestartMap // this group is allowed to restart the map
adminSetTeam // this group is allowed to switch players to the other team
adminShuffleTeams // this group is allowed to remix teams (by XP or Randomly)
adminStartMatch // this group is allowed to start a match (only usefull if si_adminStart = 1)
adminWarn // this group is allowed to warn players

noBan // admins in this group cannot be banned
noKick // admins in this group cannot be kicked
noMute // admins in this group cannot be muted
noWarn // admins in this group cannot be warned

voteLevel 5 // this group is level 5 and is allowed to excute all votes smaller & equal to this number
}

configs {
“Disable Bots” “bots_disable.cfg” // a config to be executed if players successfully voted for it or if admin executed it
“Enable Bots” “bots_enable.cfg” // a config to be executed if players successfully voted for it or if admin executed it
}

votes {
“kickplayer” “1” // vote to kick a player
“muteplayer” “1” // vote to mute a player
“servermode” “1” // vote a cfg to be executed (specified in usergroups.dat in ‘configs’)
“setcampaign” “1” // vote to change campaign in Campaign Mode or to change the RulesSet to Campaign
“shufflerandom” “1” // vote to rebalance teams randomly
“shufflexp” “1” // vote to rebalance teams by XP
“swapteams” “1” // vote to swap teams
} ///this end bracket is very important, you will get EOF errors otherwise

///////////////////////End File /////////////////////////

Here is the bots_enabled.cfg file
File location robag@krull:/usr/local/games/etqw.server/base/bots_enabled.cfg

///////////////////////Start File /////////////////////////

// you can directly use this file without removing the description
//
// since bots are not working on ranked server you cannot use this, it’s just an example so you know how it works

set bot_minClients “10”

///////////////////////End File /////////////////////////

Now for the start up etqw.server script file

File location
/usr/local/games/etqw.server/start.sh

///////////////////////Start File /////////////////////////

#!/bin/sh
SERVERDIR=/usr/local/games/etqw.server
PROGRAM=etqw-dedicated
OPTIONS=”+set net_serverDedicated 1 +set net_useUPnP “1” +set net_port 27766 +set net_sdnetPort 3076 +set in_tty 0 +exec server.cfg”

$SERVERDIR/$PROGRAM $OPTIONS

///////////////////////End File /////////////////////////

How to create the file
sudo pico start.sh
pico will open simply copy and paste the file content the press “ctrl” then x
when prompted press “y” to save file
confirm file name then press enter

when the file is saved
run this command

robag@krull:/usr/local/games/etqw.server$ sudo chmod +x start.sh
to confirm that the file is now executable
robag@krull:/usr/local/games/etqw.server$ ls -la start.sh
-rwxr-xr-x 1 root root 289 2008-08-02 10:23 start.sh

To create the other files required in the config use the same pico command in the /base folder

Now to start up the server

In the “/usr/local/games/etqw.server” folder issue this command

sudo ./start.sh

This will start you ETQW server in forgroung mode so that you can see any errors during start up
If all has gone well

You will find some log files
/home/Robag/.etqw/
If the server has started look for the PID file

Run this command
cat /home/robag/.etqw/etqw.pid
if the server is running a four digit number should be displayed

The etqw.server log file we setup in the server.cfg is located here

/home/robag/.etqw/base/20080803_server.log
Each time the server is started it will create a new log file
To view the log use this command
tail /home/robag/.etqw/base/20080803_server.log

To check that the server is authorized and connect to the punk buster server check this log file
/home/robag/.etqw/base/demonware_server.log

To view this file use this command

tail /home/robag/.etqw/base/demonware_server.log

Well that is the basic hope this helps

ta
Rohan