This is an old revision of the document!
Dieser Artikel wurde ins Deutsche übersetzt.
Conventions used:
Words in angle brackets <like this>
mean you have to type whatever corresponds to the word, leaving out the brackets: /record <filename>
means you’d have to input your desired filename (without brackets) in place of <filename>, as in /record wallhaxx0r
(that would record a demo named wallhaxx0r.dm_68).
“Vanilla client” refers to the default executable (ioUrbanTerror or Quake3-UrT) that comes with the official installation from Frozen Sand. (Although Urban Terror began as a Quake III Arena mod, starting with 4.0 it has been compatible with several standalone engines, most if not all variations of the ioquake3 codebase.)
Questions this article doesn’t answer should be pointed at the official Urban Terror forum, after having read the official FAQ and the official manual.
Depending on what games you’re used to, UrT may exhibit surprising behavior and lack features you’d expect. This is a partial list of such idiosyncracies.
Right now, Urban Terror is slowly transitioning from 4.1(.1) to 4.2 version, the latter being (un)officially unstable beta, updated more or less weekly. At any given time, there are about 700 4.1(.1) servers and 250 4.2.x servers online, most of the players still flocking to the older version. If you just want to play the game, download 4.1.1. This article includes directions for both versions.
Currently, DSWP aka <<<Wurst test serwer has four 4.1 and one outdated 4.2 server.
Occasionally, when connecting to a server, you’d get an “invalid gamefolder” error message. This is usually caused by the differing versions of the server and your client — 4.1 server browser also shows all 4.2 servers (but not vice versa).
4.1.1 is backwards-compatible with the previous 4.1 — you can play with it on older servers, but not vice versa. Both versions have active servers, although 4.1.1 greatly outnumbers 4.1 version (dswp.de aka <<<Wurst test serwer is running 4.1). The differences between these two versions are minor (4.1.1 is effectively a mappack — see the official news for description) and you’re advised to download 4.1.1.
The only operating system–specific parts of Urban Terror are the binaries, and all 4.x installers include Windows, Linux and Mac binaries, so there are only two (contentwise-identical) installers available: ZIP, and Windows-specific EXE. The EXE however is not a real installer but a self-extracting archive — it doesn’t prompt you for install location, instead launching a command line window and sitting there for some time, unpacking stuff. If you do download EXE, let the install process finish (it’s done when the “black window” closes) — threads complaining about the “Can’t load default.cfg” error caused by impatient people are all too common on the official forum. You can find the unpacked game folder (named UrbanTerror) right where you ran the installer. Urban Terror does not use the Windows registry and you can extract/move the folder anywhere you want without breaking anything.
Installer unpacking the largest file, zpak000_assets.pk3:
When running the installer for the second time (say, because you cancelled the first run and are trying again), you’ll see it asking whether it should overwrite the already-extracted files:
If you see this, close the command line window, delete the UrbanTerror folder, and then run the installer again.
The newest version is 4.2.011, released in April 06. Frozen Sand has also made available an alternative full ZIP download (about 1.3 GB) (mirror).
(This is less of an issue now that the updater can check every PK3 whenever you run it; however, there still are some environments the updater fails on.) Should you see a message that your game is outdated when you launch it, it’s caused by broken PK3s — for whatever reason, downloading one or several of the game files was interrupted. The easiest way to check which files are broken is comparing their sizes (see the table below). However, this is not completely reliable, since there may be garbage in the middle of an otherwise OK file. For a reliable result, you need to compare the checksums of all files against the checksums in the table below. To compute the MD5 checksums, you need dedicated software — Linux and other Unixes (including OS X) should come with the command-line md5sum already installed, Windows users can download the install-less graphical WinMD5Free or use Microsoft’s command-line checksum utility. Whenever a checksum differs from the published value, the corresponding file is corrupted; delete it and run the updater again, or download a new copy from a link in the table below.
If you download the full ZIP or need to download any of the PK3s separately (see below), and your download gets interrupted or the downloaded file(s) are broken, you should get a download manager.
There’s a bug in the UI that disables the “log in” menu entry if the auth key you entered is invalid (e.g. you made a typo). You can always re-enter the key with the command /auth-set <key>
in the console; should you want to use the menu entry, find the file named authkey
in the installation folder and delete it. Alternatively, you can open the file with a text editor and paste the auth key directly, replacing the original contents of the file.
64-bit Linux users may need 32-bit compatibility libraries to run the updater — there’s currently no 64-bit binary. There’s a relevant thread on the official forum.
The Mac version of the client currently does not support PowerPC processors. There’s a relevant thread on the official forum.
Urban Terror 4.22) is incompatible with the previous 4.1(.1) — while you can copy over your configs, you can’t play on older servers. Do not attempt to install 4.2 as an update to 4.1(.1) (in the same folder), this will break both versions. It’s impossible to use the (not auth-capable) ioUrbanTerror client from 4.1 for this version — it doesn’t support the new protocol 70.
Unlike in previous versions, the main deployment method for 4.2 is a dedicated downloader called UrTUpdater.
Windows and Linux updaters come as ZIP and TAR.GZ archives, respectively. Extract the contents to where you want to install the game, and run the updater. Note that you have to extract all of the contents of the archive, that is, the updater has to be inside the UrbanTerror42 folder — otherwise, after successfully running the updater, all the game content would be scattered among the other files and folders.
In case you have an earlier updater (pre-4.2.010 release), you will have to download the new one — no versions other than 3.1 will work anymore. The 3.1 version is capable of doing MD5 checks on the existing files and re-downloading them even in the middle of an update if any of them turns out to be broken.
Version history (ancillary files have not been updated since .001, binaries have been updated in pretty much every version — lately this has included the updater itself):
Direct links, checksums and filesizes for all the updateable content in .011:
The shiny new thing in 4.2 is called “auth” — if you have registered on the official UrT forum, you can (and should) request an auth key via your account page. Think of the auth key as an in-game username + password rolled into one. You can request and input a new one whenever you feel the need to (you inadvertently give it to someone, an evil haxx0r steals it, or $DEITY forbid, the whole auth infra gets compromized). Using auth is not compulsory and most servers allow you to play without.
Auth key ties your forum account to your in-game identity, ensuring you’ll be identified as yourself across all auth-enabled servers (different and independent from GUID-based identification used currently). Being authed is supposed to keep you name and tag from being stolen, and give you some protection against cheating accusations — you could easily prove you are indeed the same player who pwns in T3h L33t UrT L34gu3 and not some random kid with downloaded skills. In the bright happy future Frozen Sand envisions, most if not all servers have auth compulsory and this makes life much harder for cheaters — getting permbanned means you’ll need to register a new account etc.
To use the auth key, click on “log in” in the main menu, and input the key in the box. Alternatively, you can use the console command auth-set <key>
(on Windows and Linux, you should be able to simply paste the key with Ctrl+V (Shift+Insert if this fails)). Using numpad to input the digits of the auth key will cause problems (for example, 7 inputs the digit and moves the cursor to the leftmost position, regardless of the Num Lock state). Should these methods fail, you can open the file named authkey
, located in your UrT installation directory, and replace its contents with your auth key. If the file doesn’t exist, create it (see the configuration files section if you have trouble doing so).
There’s a thread on urtinfo that should answer all your questions regarding auth.
The main menu:
By pressing Esc at any moment while playing, you can access the in-game menu (most setup options are available in both main and in-game menu):
When connecting to a server, after the map loads, in most game modes you’ll be prompted with the team selection menu:
(You notice it suggests using the auto-join button. It’s a good advice.) You can access this menu at any time by pressing Esc, under player → team select.
Selecting your weapon and item loadout is done under player → weapon / gear select. Each of the boxes represents a slot: possible equipment is restricted by these, and you can never fill all slots at once (the disabled ones are clearly marked as such). You have one primary weapon slot, one secondary weapon slot, one sidearm slot, grenades slot, and three item slots. The minimal allowed gear is primary, sidearm and one item in the first item slot. Even if your setup has no room for secondary and grenades, you can still pick them up from dead bodies. For more advanced loadout selection methods, see the gear cvar article (you’ll need to know about config files first).
You can somewhat customize your character’s look: there are two models (male and female) with 2 skins per team for each. All skins are available for everyone. Your personal color is displayed on your arm and leg bands, on the minimap arrows, and in the scoreboard and player list, allowing your team mates to identify you even when they can’t see your name. (Some servers disable personal colors, forcing everyone to wear their team color.)
The HUD of Urban Terror:
The player list is commonly called “team overlay” or occasionally “mini-scoreboard”; you can customize its properties under options → Team Info Settings.
The lagometer is a connection quality display: green represents your ping (the thinner and smoother the better), black bars in the green area represent ping flux, and pink swathes appear when you have packet loss.
On the minimap, each team mate is represented by an arrow in their personal color; the arrow points in the direction they’re looking. When you’re requesting a medic via the radio, your arrow flashes. Medics’ arrows have a little red cross at the tail. You can change the size, position and transparency of the map and the size of arrows under options → Minimap Settings.
Stamina and damage indicators: the meter turns gray segment by segment the more you sprint or jump; if you get injured, the lost health/stamina is represented by dark red. When you bleed, the health blinks between your team color and dark red; there’s also periodic “blackout” effect with your view blotting with red every few seconds. The human figure shows the location of your injuries: legs, arms, torso or head wound(s).
Depending on game mode and server setup, you may also see these timers:
You can change your FOV under options → General Settings, and change the weapon size under options → Gun Settings. The comparison of FOVs and gun sizes:
By default, different messages are separated on the screen:
Top rows show hit messages (only displayed to the attacker and the attackee) and death messages (displayed to everyone); the bottom rows are for chat and the text accompanying radio calls. You can change the display time and amount of rows under options → Chat Settings. Oldschool players can force the Quake 3 style chat + messages on top of the screen with cg_standardChat 1
.
Due to large amount of specific data, this section has a separate article dedicated to it.
Climbing and ledge grabbing: Since the very first released beta, it has been possible to not just climb ladders, but to climb on top of any object low enough. To do so, jump against an object while holding W — keep it pressed, and your character will pull themself up. Ledge grabbing can also keep you from doing the lemming thing — grabbing anything while you’re falling will bring you to stop instantly with no damage whatsoever.
Sprinting: Sprint is bound to E by default, a modifier key — you’ll have to hold this in addition to forward; the alternate “oldschool” method is to hold AWD3). Sprinting is noticably faster than simply running, but it also depletes your stamina. Sprinting is the best way to gain speed for jumps and slides. You can’t sprint in other directions or while swimming; sprint does speed up your movement while in spec.
Strafe and circle jumping: Although bunny hopping in straight line has no effect (or even a negative effect) on your speed, Quake-based games have strafe and circle jumping (the linked articles discuss Quake 3, not UrT, but the underlying theory is the same). What you need to know is that the maximum speed attainable in the game by running straight is limited (as are the strafe and backpedalling speeds), but it’s pretty easy to “abuse” the quasi-physics of the engine by moving in another direction in addition to forward, thus achieving noticably higher overall speed. Running on ground additionally limits the maximum speed with friction, but air does not have any friction, hence instead of strafe/circle running it makes sense to use respective jumping techniques. Due to the game having sprint, circle jumping is much more powerful in UrT than strafe jumping.
To circle jump, you’ll have to sprint (to gain the initial speed) and then continue jumping while keeping sprint pressed and moving your mouse left and right — the exact speed is less important than smoothness of the movement. The direction of turning can be used to affect your direction — turning more than 90° to the side can get you around corners even without walljumping.
Fun detail: when you move at speed over 600 Quake units per second, there will be a team-colored trail behind you. While useless in combat, this adds a bit of visual appeal to jump videos.
Walljumping: Introduced in 3.6, this is essentially a variation of the boot of passion (kicking people by jumping against them). Walljumping allows you to scale obstacles faster than climbing over them would allow, gaining height to get on top of objects that are too high for climbing anyway, and gaining speed by kicking against a wall sideways. In certain situations, walljumping is also usable for jumping down from heights, though somewhat tricky. You can make three walljumps in a row before you have to touch a horizontal surface.
Kicking aka the boot of passion: initially an actual item you had to equip, the boot is nowadays an emergency feature similar to knife you are always carrying. You have to hold a knife, pistol or grenade to kick; a kick always hits “body” and does 20 damage. It’s most useful for moving blocking teammates out of doorways and such (you can’t kick them if friendly fire is disabled though).
Goomba stomp: introduced in 4.0, this is probably the most difficult method for killing someone: when falling from a height where you’d break your legs or die altogether, you land on the head of someone else, you’ll get a goomba kill. Landing on their shoulder does not result in any damage (although you may hear the distinctive “plonk” sound, this is a client prediction error — all hits are actually decided on the server side).
Powerslide: Sliding (introduced in 4.0) is useful for bridging gaps between jumps, fitting through doors and tunnels, and speeding out from behind the corner — once you’re sliding, it doesn’t really matter which way you are facing, so you can aim at the most likely threat direction. (You do lose some speed if you don’t turn correctly, but this is mainly important on jump maps.) Sliding also allows you to move fast with broken legs — you can jump down from a height and slide while bandaging or shooting until you’re covered or reach your destination.
Swimming: When underwater, you have 16 seconds worth of breath (replenished instantly when you surface), and it takes 8 seconds from starting to drown to dying.
Stamina management: The only actions using stamina are sprinting, jumping and crouching (more precisely, only crouching down, not standing up); walking, running, climbing and swimming are free (however, your stamina won’t refill while you’re in the water).
Bleeding and medding (bandaging and healing): All wounds except for hits in kevlar vest and helmet will bleed4), losing about 5% health per second. While bleeding, you leave a blood trail and make noise every few seconds, at the same time, your view will suffer from “blackout” effect and your aim will jerk. Bleeding or health level does not affect your speed (except for leg wounds), but since your stamina is equal to your health, your top speed / time you can sprint is lowered. Every player is capable of bandaging themself and other players (including the enemies); bandaging also fixes legs that are broken due to a fall. It’s possible to heal your teammates if you’re carrying a medkit (if you don’t carry one, but your patient does, you still can heal them, but at noticably slower rate). You can bandage and heal while swimming or climbing a ladder. Medding makes distinctive sound and blocks your actions for a short amount of time, so mind where you do this. Two (three, …) people healing someone make the process two (three, …) times faster.
In competitive play (matchmode), the matches are played in two halves, the teams being switched after the first one.
We have weekly bomb nights — connect dswp.de:22223 @ Sunday 20:00 CEST.
This is essentially the same as bomb mode in Counter-Strike: the red team has to plant the bomb in one of the two bomb spots (named “red” for A and “black” for B) while blue has to stop them. In bomb matchmode, each half is usually formed of 10 rounds which are time limited. (Usually a timer on your upper right corner of the screen counts down to zero ending one round.)
A round can be won by the red team by either killing everyone in the opposite team in the given time, or successfully blowing up one of the two targets (bombsites). To win a round as the blue team, you must keep the reds from planting the bomb in the given time or defuse it if it has been planted (done with the use key, Ctrl/Strg by default). If the bomb has not been planted the blue team can either try to kill everyone from the red team or just survive until the time for the round has expired (remember this only works if the bomb has not been planted yet).
Planting/defusing the bomb: Bomb bag is considered a weapon, by default accessible with 6 or scrolling through the weapons with the mouse wheel, and can be dropped with ut_weapdrop
. The planting is done with the fire button (left mouse button); once you have started the planting process you can’t move or switch weapons until it’s finished. In UrT, you can only plant right on the bomb spot — no hiding the bomb in the corners of the bombsite. Bomb spots are visible on both your minimap and in-game as animated targets6).
Tips:
There is usually one to six capture points (represented by gray flags); every x seconds (default 60) the teams get awarded a point for every flag they currently have in their team color.
CTF is the other main competitive mode for UrT. This mode has both teams attempting to bring the enemy flag to theirs (capturing aka capping) in order to score; you can also get points for things like killing the flag carrier, returning the taken flag and simply being in the scoring team. A flag that has been dropped (either deliberately or because the carrier died) will return after a short set time with no points added or deduced for neither team.
When a flag is taken, dropped or returned, a message is shown to everyone on the server and action-specific sound played globally; while a flag is away, the name of the team that owns this flag will blink in the right upper corner of the screen. When both flags are away, the “hot potato” timer starts ticking; when it reaches zero, both flags explode (killing the carrier if not dropped beforehand) and return. This feature was introduced to get rid of the long boring standoffs.
In the European competitive scene, wave respawns are used (all dead players spawn at the same time every x seconds), making the gameplay rotate around timers. In higher divisions, timer awareness can lead to entertaining scenes where one of the two duelling players stops shooting to get killed at the best moment, and their opponent does the same to kill the foe at the worst moment. Using wave respawns has led to creative abuse of teamkilling: when you see a team mate you’d normally heal and the timer is nearing zero, you can simply kill them and avoid the slow healing process altogether (doing /kill
in the console is punished with double respawn delay, so you’ll either have to hope for a teamkill or step on a nade). While recognized and allowed technique in matches, teamkilling is still considered a bit of a bad form by some and there are various suggestions to make it useless.
In the US scene, standard delay-based respawn is used and medics are much more common.
You should be careful with using teamkilling on public servers: usually the ones that have friendly fire enabled also have TK limits, and many of the players may not understand your behavior either.
Flag is considered an item and you can drop it with ut_itemdrop flag
(or by selecting the flag with the item keys and dropping it with a generic bind).
The “kill everything that moves” mode; while one of the most common modes in Quake 3, it’s rarely seen in UrT.
Similar to CTF, but only the team leader can score a cap. Being one of the oldest modes, FTL has remained strikingly unpopular, having only a few nigh-empty servers at any given moment.
The most common mode for public servers.
TS is the competitive mode in UrT in the same way Bomb is in Counter-Strike.
This entry does not discuss any Urban Terror mods (the most famous of them being the zombie mod) that make changes to the gamecode. You can Google for these (note that Frozen Sand refuses to allow any mods-related discussion on their forum).
Jump is the defrag/race mode of UrT. In 4.1(.1), there’s no support for timers or anything like that and typically the jump servers report their mode as CTF, with “jump” in the server name. There’s no competitive jumping scene; what you get for finishing a map is bragging rights, and perhaps a cool demo/video if you can pull this off. Jump is becoming an official mode though; for UrT HD, all kinds of bells and whistles are planned. The 4.2 version has a rudimentary jump mode (g_gametype 9
) since .006; as of .009, it includes timer start, stop and cancel entities and the possibility to add colored paths to maps. So far no maps utilizing these features have been released, although several existing ones are being updated.
UrT jumping does not use any weapons (although there are HK69 & HE nades, and jump servers generally have damage disabled); instead, players rely on walljumping to gain height and speed in a similar manner. Most maps have nodamage floors and/or surfaces that teleport you back to the start of the particular jump (not the start of the map); only a few maps like Deathjumps: Hell kill you on the first mistake. For those who find that friction is for noobs, there are various icy maps available, where all the jumps require running on a rather uncooperative surface.
Red team (ten to twenty bots, normally unarmed) are skeet, constantly respawning on jump pads; blue are shooting at them from a closed balcony or platform. Newer maps have nifty reloading stations that allow you to carry much more ammo than it’s possible in normal gameplay. Skeet servers run in TDM mode, which means scoring is straightforward: every kill gives one point.
Urban Zone holds sort-kinda annual Skeet Shoot Tournaments, the signups for SST 2012 opening on September 2nd.
Developed by Asche and Holblin, this utilizes special stage-based maps where capturing a point unlocks the next one. One team is attacking and capturing, the other one defending. There are currently only a few maps available, but both Asche and Holblin are now members of Frozen Sand and the assault mode will be part of UrT HD.
Copied from Counter-Strike, this is another map-based mode: one team has only knives and are locked in a control room where they can activate various death traps the other team has to avoid to reach and kill them. Most of the map names for this mode start with “ut4_deathrun_”.
Whenever you see someone with a hat, goggles, mask, horns or whatever, it’s something called funstuff — additional small models you can attach to your character. Funstuff does not require any modifications to your game and its use is completely free. There’s a more detailed article on the topic.
There are four chat modes, global, team, target and PM (private message), the first two being bound to T and Y by default.
type | bind command | script command | behavior |
---|---|---|---|
global chat | messagemode | say | shown to everyone |
team chat | messagemode2 | say_team | shown only to your teammates |
target chat | messagemode3 | tell_target | shown only to the person under your crosshair |
PM | tell <slot number> | shown only to the person you’ve specified |
“Bind command” is what you’d bind to a key — you press the key for chat prompt, type your text, hit Enter. The default keys for normal and team chat are T and Y. messagemode3
only works if there is someone under your crosshair; PMs cannot be bound like this7).
“Script command” is what you’d use in console and in scripts — /say y'all so ghei
or bind q "+button6; say_team Bandaging @ $location"
. The latter would cause you to spam this line to your teammates every time you bandage someone. (As always, think through what’s necessary and what not; useless spamming is a good way to get yourself kicked on many servers.) See “Basic scripting” below for explanation and usage.
In FFA, all chat is forced global. In team-based modes, the configuration of a particular server may force all chat to be teamchat; in round-based gamemodes (TS & bomb) it’s common to disallow chat for dead players. Spectators’ chat is always visible to spectators only.
You can only use basic ASCII/ANSI symbols in chat; if you use say ä or ², these will be replaced with period. Some characters (~, ", //, %, ^, $) have meta meaning and will either be replaced with space or cause the next word to disappear altogether (e.g., unknown words patterned like $macros are discarded).
While in global chat everything is displayed in yellow, team chat, target chat and radio messages are white and can be colorized by using the Quake color codes.
Example: ^1the ^2gaily ^3colored ^4example ^5string ^6for ^7the ^8wiki results in
Radio is a menu-driven interface for playing predefined voice messages, by default accessible by pressing U and then number keys according to the menus. There’s a dedicated article on using, binding and customizing the commands.
Demos are recordings of the game events — everything that is streamed to you when you’re playing on a server (people playing, their movement, hits, radio messages, chat) gets written in the file. Demos are not videos — see “Turning demos into videos” below about how to do that.
By default, the key for starting and stopping demos is F12; while recording, there’s a text shown at the top of the screen. By default, demos have names in the format of <year>_<month>_<day>_<hours>_<minutes>_<seconds>_<your current nickname>_<current map>_<current gamemode>.dm_68. You can change this by recording manually with the command /record <desired name>; stop the demo with /stoprecord. Usually, you’re better off with F12 and renaming the files later if needed.
Beware: If you quit the game while recording, the state of F12 will “stick” so that next time you’ll have to press it twice to start recording. Always check for the “RECORDING” text; if you can’t see it, you’re not recording.
To spectate someone, you can simply click through the players (by default left mouse button, or whatever you happen to use for shooting), but on a large-ish server like DSWP TDM this is time-consuming. Use /playerlist, find the slot number next to the player’s name you’re interested in, and do /follow <number>. Funny bug: If you do /follow while not speccing someone (floating freely), you’ll see people having no hands and no weapon in first person view. To fix this, press Ctrl twice for free-floating mode again, press left mouse button to spec anyone, and then do /follow again.
To view a demo, use the built-in demo browser (demos in the main menu) to locate the file you need. This browser however has serious limitations, most importantly, when the amount of demos exceeds a certain limit, the ones with alphabetically earlier names will not be displayed (if you have large-ish amount of demos with actual names, the automatically-named ones won’t be visible).
On Linux, you’ll probably have to rename demos to all-caps (demoname.dm_68 to DEMONAME.dm_68) before you can watch them. For more comfortable demo playback, see the “Software” section below. In case you want to change the demo playback speed (useful for watching aimbot demos), see this post.
If you can’t load the demo (error message “Couldn’t load maps/ut4_xxx.bsp”), you lack the particular map the demo was recorded on. The quickest way to fix this is to point your browser at our map server and append the map’s name (ut4_xxx.bsp) to the address on the title bar, with BSP replaced with PK3. Download the map and save it in q3ut4 folder of your UrT installation. Alternatively, there are many sites hosting UrT maps; quick Google search with the map name put between quotes usually gives you a download location (ut.s.finestway.com is a nice site, with ~ 2300 maps available). Based on hearsay, some browsers on some systems may save the map with a ZIP extension instead of PK3 so you’d have to rename it before you could use it.
If you experience horrible lag when playing back a demo (that goes away when you speed the playback up and then slow to normal again), it’s probably caused by ut_timenudge. The only known fix is setting it to 0.
Demo playback has an interesting failure mode: if you have UrT 4.1.18), you can play and record on 4.1 servers (such as DSWP) just fine, but when playing back the demo, weird things can occur — up to and including dropping back into the main menu with an error message (CM_InlineModel: bad number
). The reason is that some maps were updated for 4.1.1 while retaining exactly the same name — and when you’re playing back a demo recorded on the previous version of the map, data in the demo and structure of the map will clash.
The affected maps are Casa, Harbortown, Ramelle, Ricochet, Subway, Swim (The Bath), Thingley, Tombs and Uptown. (Some of the new maps in 4.1.1 started out as custom maps and you may run into the same problems with them in case the standalone version and the 4.1.1 version have any differences.)
To view 4.1 demos on 4.1.1, you have to temporarily rename or move zpak001_assets.pk3; there’s currently no other way. Linux users can use Pirat’s playdemo script (see the next section) that automatically takes care of this.
Occasionally you may see how the viewpoint player in the demo suddenly starts moving in a straight line, going through walls and whatever. This is not some kind of cheat; the person recording had CI (connection interrupted), a state where no information can move to and from the server for a noticable amount of time. While online, this looks like everyone stopping for a few seconds and then snapping to different locations; when playing back a demo, the game interprets straight constant-speed movement between points right before and right after CI.
Windows: There’s the UrT Demo Loader by 1UP clan. It associates the DM_68 extension with itself so that you can double-click on any demo file in the file manager, and the loader will start Urban Terror with it. This also allows you to organize your demos easily — since you can launch a demo from anywhere, you can collect different demos into different folders. (Note: the limitations of UrT mean that when you start a demo that is not located in q3ut4\demos, the loader actually creates a copy of the demo there and the game will play this copy.)
Linux: playdemo, written by Pirat, allows you to play any demo located anywhere. It also removes the need to rename demos to all-caps. For sniffing whether it’s a 4.1 or 4.1.1 demo, there’s demo file analyzer.
The folder structure of Urban Terror is exactly the same as in Quake III Arena, just the base folder is q3ut4 instead of baseq3. Maps and configs are saved in the base folder, everything else in their respective subfolders (q3ut4/demos/ for demos etc).
Console is used to input commands and set variables in-game; it’s mostly equivalent to changing values in config files. Everything typed into the console must be preceded by /
or \
, otherwise the string will be output as global chat (the opposite is not true: you can’t type /commands into the chat). The console is hard-bound to the “tilde key” which on non-US keyboards is most commonly `, ^ or some other diacritic, usually located right below Esc. (You can bind the console to something else in addition to the default, but the tilde key cannot be assigned to anything else.) If all else fails, Shift+Esc will do the trick. To force the console open without any delay, use scr_conspeed 9999
. You can scroll up and down in the console using the PgUp and PgDn keys, or the mouse wheel (when scrolled up even by a single line, the console contents stop moving so you can read them easily). As usual, there’s console history: you can avoid retyping a previous command by flipping through them using up and down arrow keys. In UrT, console history is persistent (you can close the game, start it up again, and the previously-used commands will still be there).
Occasionally it appears the console is totally empty when you open it. However, the line of red carets visible means the console is simply scrolled to the top; hit Ctrl+End to get back to the last line.
To save the console contents to a file, use condump <filename>
. Note that on the vanilla client there’s a pretty strict limit to how much text the console can hold and condump can save. If you wan’t to be sure every event in the console gets saved, enable logfile in your server.cfg (logfile 2
). qconsole.log doesn’t record echoes or other output that other players can’t see (like the output of cvarlist
).
Useful command for updating your settings without restarting the game after you’ve changed something in the config is exec <filename>
(the file must have CFG extension, but you can omit the extension in the command itself).
For location of the config files, see the respective section.
You always have the main config file, q3config.cfg
; this file gets overwritten every time you run UrT, so you don’t want to add your scripts there (changing the existing values after you’ve shut down the game is OK though). To customize UrT further, you’ll need to create autoexec.cfg
that will get automatically executed every time and has precedence over q3config — if a value is different in q3config and autoexec, the one from the latter gets applied.
These config files are plain text in ASCII/ANSI encoding; the default text editor of your system (Notepad, Emacs, vi, gedit, Kate) will be able to handle this just fine. Do not edit config files with a word processor (Word, Write): the most likely result is a screwed up file. If you have problems creating a file with CFG extension or you can’t see the extensions, you can make a copy of q3config.cfg, rename it, open it and delete the contents.
Using the vanilla client, a single config file can be 64 kB at most; should you ever need to get around this, you can split your config into several files that are executed via commands in autoexec: exec <filename>.cfg
for each file. If you have an excessive amount of scripts, UrT may crash with MAX_CVARS error: you’d either have to reduce the amount of variables or use some other client (see the Alternate clients section for a list).
Setting a variable in the config file is done with set <cvar> "<value>"
. It’s a good practice to always use this format; while “set” can be omitted, double quotes are required in some cases. To force a cvar being written to q3config.cfg when you change it, use seta
.
Binding keys and buttons is done with bind <key> +<action>
. If you want to bind something to a key you don’t know the name for, use a workaround: bind something to this key via the in-game menu, open q3config and find the relevant line. Most actions are performed on keypress and stopped when the key is released (shooting only while you hold the mouse button etc). The plus sign is important; if you omit it, the action will never get reset (you’ll shoot until the ammo runs out, and then continue empty clicking.) Should you ever run into this problem, you can cancel the action via the console, by typing /-<action>
. See the next section for more advanced +
and -
use.
Using the vanilla client, you can bind MOUSE4 (or aux1) only if you have in_mouse 1
enabled (you’ll need to do in_restart
for it to take effect if you type this into the console). Binding MOUSE5 (or aux2) or scroll wheel tilt is not possible with the vanilla client; you’ll either have to use an alternate client or rebind them to keyboard keys using either the software installed with the mouse driver (if applicable) or some dedicated remapping program. You can’t bind Esc and “tilde” key (the key right below Esc) to anything else. On layouts with AltGr, UrT may read this key as Ctrl. When using non-US layout on Windows, beware that the vanilla client will use the values corresponding to the US layout (AZERTY users would have to press A although bandage is bound to Q etc9)).
Partial list of the keys and buttons (most of the other keys use the values you see printed on them):
MOUSE1, MOUSE2, MOUSE3 | left & right mouse button10), middle button / scroll wheel click |
---|---|
MWHEELUP, MWHEELDOWN | scroll wheel up & down |
INS, HOME, PGUP | Insert, Home, Page Up |
DEL, END, PGDN | Delete, End, Page Down |
Print Screen11) | |
0x00 | Scroll Lock |
TAB | Tab aka the →| key |
CAPSLOCK | Caps Lock |
UPARROW, DOWNARROW, LEFTARROW, RIGHTARROW | arrow keys |
SEMICOLON | ; on US keyboard |
KP_ | all numpad keys are prefixed with KP_ , as in KP_SLASH . All keys use their “Num Lock off” values; 5 is KP_5 , Num Lock itself KP_NUMLOCK . On the vanilla client, KP_STAR is not recognized, you’ll have to use * instead. |
While you’d be able to find the names of most of the actions by skimming the config file (+attack
for firing the weapon is pretty obvious), some of the actions have nonsensical and/or opaque names. This is a partial list:
+button3 | fire mode (auto, burst, semi) |
---|---|
+button5 | reload |
+button6 | bandage/heal |
+button7 | use (also switches between first person, third person, and free-floating while in spec) |
+button8 | sprint |
+button12 | from the 3.5 README: *** forgotten feature *** if you put maptoggle on 0 you can bind a key to button12 (like bind j +button12) that'll only display the minimap so long as its held down |
+speed | walk (UrT has “always run” turned on by default) |
messagemode | global chat |
messagemode2 | team chat |
Scripts, although limited, are very common in all Quake-based games: in UrT, even the demo recording and stopping (F12 key) uses a simple script (with some of the problems this causes).
A basic script would be as follows:
bind x "vstr do_stuff" set do_stuff "vstr do_stuff_on" set do_stuff_on "ut_echo doing stuff; set do_stuff vstr do_stuff_off" set do_stuff_off "ut_echo not doing stuff; set do_stuff vstr do_stuff_on"
Bound to X, this echoes “doing stuff” when you first press the key, and “not doing stuff” on the next press; after that, the cycle starts from the beginning. You can have near-arbitrary amount of different variables, your main worry being ensuring that each one would point to the next one:-P
Explanation of what does what:
vstr
instructs the game to execute the contents of a variable12).
do_stuff
is an intermediary variable whose contents are to be changed at will: you notice that both lines after that set do_stuff
to something else (it’s initially set to execute the first variable, otherwise the script would not work).
On key press, do_stuff
gets executed and in turn immediately executes the first variable (do_stuff_on
); the first variable, when executed, echoes the string and sets do_stuff
to execute do_stuff_off
. do_stuff_off
echoes its own string and sets do_stuff
to execute the first variable, do_stuff_on
again, completing the circle. All possible scripts, however complicated, use the same basic technique; if you can follow this explanation, you should be able to customize any script you come across.
A variation of vstr
is +vstr
that executes something on key press and something else on key release:
bind x "+vstr do_stuff_on do_stuff_off"
A limitation of +vstr
is that if you call another vstr
via one of the variables, the second argument to +vstr
won’t get executed.
Beware that scripting in Quake 3 / Urban Terror is full of edge cases and the limitations offer nasty surprises; for example, to make a “hold to zoom” bind, you’d have to do this:
bind x "+vstr zoominonce zoomout" set zoominonce "vstr zoomin" set nothing "" set zoomin "ut_zoomin; set zoominonce vstr nothing" set zoomout "ut_zoomreset; set zoominonce vstr zoomin"
The empty nothing
ensures that the rifle won’t continue zooming in when you hold the key. Quite easy solution.
However, the seemingly simple script that would allow you to zoom in and out with the same key:
bind x "vstr zoominout" set zoominout "vstr zoomin" set zoomin "ut_zoomin; set zoominout vstr zoomout" set zoomout "ut_zoomreset; set zoominout vstr zoomin"
would mean that every time you die while scoped in, after respawning you’d have to press the zoom key twice to actually zoom in — the state stored in zoominout
cannot be reset when you die. If you have more than one or two of such sticky scripts, it would make sense to bind a special key for resetting all of them at once, to be hit whenever you respawn.
ut_echo
is a command that outputs a local message on the screen (upper left corner; only you can see it), useful for feedback. You can use colors in echoes the same way as in chat.
For more feedback options, you can use sound: for example, by default the screenshot key (F11) has following bound to it:
bind F11 "play sound/misc/kcaction.wav;screenshotjpeg;ut_echo ^1Screenshot^7 taken."
Sound files are referred to by using their paths starting from the PK3s (these can all be considered one amorphous blob for our purposes): sound/misc/kcaction.wav
= UrbanTerror/q3ut4/zpak000_assets.pk3/sound/misc/kcaction.wav
. You can play any sound you have in any of the PK3s, whether standard files, custom maps, or something you’ve added yourself.
The vanilla client (named ioUrbanTerror in 4.1(.1), Quake3-UrT in 4.2) is a version of 2007 ioquake3, with some minor code changes (for example, the base folder is set to q3ut4 instead of baseq3, ensuring you don’t have to pass the fs_game
parameter when launching the game). Although it’s the most stable client for most people, it lacks some of the features introduced into ioquake3 after 4.0 release; it also has no advanced rendering capabilities whatsoever.
Below is a partial list of clients that can be used to run Urban Terror. Important for Windows users: most of these clients do not save their configs, demos and screenshots in the UrbanTerror folder; to force the old behavior, add +set fs_homepath <path>
(like +set fs_homepath C:\Games\UrbanTerror
).
For 4.1(.1):
For 4.2:
messagemode4
does exist, it does nothing.do_stuff is set do_stuff "vstr do_stuff_on", default: set do_stuff "vstr do_stuff_on"
in the console — useful in some situations, but not what we need here.