Friday 7 August 2009

A Guide to Configure Urban Terror on Linux

Urban Terror (or UrT for short, not to be confused with Unreal Tournament) is a great standalone first-person shooter available for Linux too, using the ioQuake3 engine. In this article I'll show several ways to make it a little faster by tweaking several variables in favour of performance over good looking graphics. Experienced players will probably know all of this, so this guide is intended to newbies.


The configuration settings will go inside a text file called autoexec.cfg, which should be created (if it doesn't already exist) inside the Urban Terror directory. That could be something like UrbanTerror or ~/.q3a/q3ut4/ (usually it should be the one which contains the ioUrbanTerror.i386 and ioUrTded.i386 files - or their 64-bit equivalents), depending on how and where you installed Urban Terror. The commands and scripts which are placed in this file are automatically executed when Urban Terror starts. You can set here keyboard binds, customise client variables, write basic scripts and so on.

Alternately, you can spread these settings all over more files, for example key binds in binds.cfg, cl variables in cl.cfg, scripts in scripts.cfg and so on, and then just add lines in autoexec.cfg which go like this:

exec binds.cfg
exec cl.cfg
exec scripts.cfg ...

UrT is based on the ioQuake3 engine, which is open-source and maintained by the ioquake3.org project, which just recently shipped a new version of the engine recently. So mostly all the configuration variables that apply to Quake 3 will apply to Urban Terror too.

To start with, for better understanding of how autoexec.cfg works, just create it and add some lines like this:

set r_gamma 1.3 // sets the gamma to a higher value than default
bind v "+button5" // +button5 means bandage, so pressing V will bandage yourself or a teamate

Everything that follows the two slashes are comments. Now you can observe the changes in the game, and see the maps are brighter than usual and V will trigger the bandage action. Notice that these can be configured from the game itself too, but there are some which don't, so you'll have to put them in a cfg file, otherwise they remain set to the default value.

Here are some lines to add in autoexec.cfg to make Urban Terror faster. Notice that everything that follows double slash (//) are comments, so the game will ignore those, and you don't have to add them in your file. There are comments on what a command is doing before it and comments showing the default value of the specified variable. The values I set here are the ones which I regularly use, but the comments will help you know what are the values for obtaining maximum performance. Notice that not all of them are engine-related, some will just customise the look and feel, without any impact on performance.

All of these are called cvars, which is the shorter form for Console Variables or Configuration Variables. Variables starting with r_ (e.g. r_gamma) refer to renderer variables, cl_ refer to client variables, sv_ (e.g. sv_) refer to server configuration, and so on. Also notice that although these are not all the cvars (huge lists can be found here, here or here), they are usually most useful for both configuring Urban Terror and getting a better framerate. Most of the variables can take either the value of 1 (true, enable) or 0 (to disable that specific cvar). You can maximum tweak some of them, but there are variables which should be left default, because enabling them can be really useful and the performance impact when disabling them is negligible.

// cg_ cvars
// prevents lag effects when shooting
set cg_antilag 1 // default 1
// use small gun; some players do not like the gun taking up half of the screen, use this setting to make it small
set cg_gunsize 1 // default 0
// hit sounds when hitting an opponent; this really helps to know whether you hurt an opponent or not
set cg_hitsound 1 // default 0

// amount of time ejected shells stay on the ground, has a small effect on performance if disabled; measured in miliseconds (so 5000 is 5 seconds)
set cg_sfxbrasstime 0 // default 5000
// disable muzzle flash from weapons
set cg_sfxMuzzleFlash 0 // default 1
// in how many spots an injured teamate bleeds
set cg_visibleBleeding 3 // default 5
// enable or disable breathing sound of an exhausted player
set cg_sfxBreathing 1 // default 1
// disable all particle effects except hit effects
set cg_sfxParticle 0 // default 0
// disable smoke effects like blood when hitting other players
set cg_sfxParticleSmoke 0 // default 0
// disable damage skins on models whena a player gets hit
set cg_sfxShowDamage 1 // default 1
// enable bullet impact effects when hitting surfaces
set cg_sfxSurfaceImpacts 1 // default 1

// if enabled it will show info messages about who hit you and where; 0 to disable, 1 to show where you were hit and by whom; 2 where, by whom and what amount of damage did they do
set cg_showBulletHits 0 // default 2
// show fps
set cg_drawfps 1 // default 1

// cap the maximum fps (frames per second)
set com_maxfps 70 // default 85

// Renderer cvars
// change gamma (brightness of colours)
r_gamma 1.4 // default 1

// mouse sensitivity
sensitivity 12 // default 5

// Keyboard binds
// these are binds which I use, so you should customise those to your likings, not everyone uses ESDF for movement etc.
// movement binds
bind e "+forward"
bind s "+moveleft"
bind f "+moveright"
bind d "+back"
bind SHIFT "+movedown"
bind r "+activate" // activate (use)
bind t "+button5" // reload
bind a "+button8" // sprint
bind q "+button6" // bandage

// weapons - should be self-explanatory
bind v "ut_weaptoggle knife"
bind w "ut_weaptoggle secondary"
bind z "ut_weaptoggle bomb"
bind g "ut_weaptoggle grenade"
bind z "ut_weaptoggle sidearm"

// misc binds
bind b "ui_radio" // open the radio menu

// chat binds
bind y "messagemode" // chat (all)
bind u "messagemode2" // chat (team)
bind i "messagemode3" // chat (target)

// Scripts
// UrT supports basic scripts, which allow you to change settings on the fly. For example:

set n0 "sensitivity 7; bind n vstr n1"
set n1 "sensitivity 9; bind n vstr n2"
set n2 "sensitivity 12; bind n vstr n0"
bind n vstr n0

// the above script will change the sensitivity when you press the N key, and cycle it through 7, 9 and 12

Additional resources
There are many places in which you can find help on further configuring Urban Terror, like the official manual or Quake 3 configuration sites, like this or this.

9 comments:

Anonymous said...

"// hit sounds when hitting an opponent; this really helps to know whether you heart an opponent or not"

I heart all my opponents!

Thanks for the great guide.

Craciun Dan said...

Ooops, I guess I was thinking to something else while writing this :)
Thank you for the correction.

Anonymous said...

LINUX URBAN TERROR IS A JOKE

URBAN TERROR IS SO LAME IT'S A JOKE. TRY BATTLEFIELD (ANY) OR CASTLE WOLFENSTEIN ON XP (OLD).

THESE LINUX GAMES ARE A JOKE AND ARE NOT GETTING BETTER. IN FACT, LINUX OS IS A JOKE IN 2009.

STOP THE LINUX PROMO B.S., BECAUSE LINUX IS GETTING WORSE BY THE YEAR. LINUX IS A JUNK OS.

:)

Bojan said...

@anonymus (2):

Urban Terror is a good game. Don't talk crap. FYI, RTCW is also natively available on Linux. So get a bit informed before flaming.

Anonymous said...

faster??? in terms of fps performance your script dropped me from 65fps to 24fps. luckily i am able to change and do a writeconfig ;)

Anonymous said...

"LINUX OS IS A JOKE..."

This has to be by far the most amusing statement I've read this week, thanks for the entertainment!

Anonymous said...

CASTLE WOLFENSTEIN?

must mean the one based of quake3 by id

all quake3 derivatives run great on linux
i for one think q3 engine based games can run better on linux but hey, each to their own, right?

UrbanTerror is a kick ass game! It needs tighter maps though.

Anonymous said...

"LINUX OS IS A JOKE..."

Moron ! That statement alone proves that you know very little.

"LINUX URBAN TERROR IS A JOKE"

Apparently you are the only joke here, cause Urban Terror runs smoothly on Linux. And on Its a lot more fun than more realistic games. UT is actually all about fun. But I guess you are not having fun in your life since you feel the urge to express yourself through hate.
Try SEX ! It really works ;)

Chomps said...

To the poor "Anonymous" Character with obviously, small man syndrome and that has only ever used one OS in his miserable life...I kinda agree with 'Landing on water'...Try Sex, cos what you don't know is that *nix was around long before Window$ or M@c and is basically the backbone of the entire Internet. Also try getting out a bit more cos ignorence can be harmful to guys like you who should never have been alowed to even touch a computer. Please