Most of the questions we hear on a regular basis, answered in one place.

For the player rating/ranking system we use a customized Elo formula.
The expected team win percentages are calculated as follows (see: Elo rating system ):

\$\$RedTeamWinChance = {1 / {1 + 10 ^ {{BlueTeamRating - RedTeamRating} / 100}}}\$\$
\$\$BlueTeamWinChance = 1 - RedTeamWinChance\$\$

Note that we use a value of 100 instead of 400 here, because our spread in rating is small and a team rating difference of 50 is already fairly significant.

After a match concluded, instead of using a constant factor \$\$K\$\$ that is usually used in the Elo rating system, points will be awarded depending on which team has won and how many objectives have been reached:

• Winning the game: +6
• Every additional objective the team completed compared to the opposing team: +2

Objectives with a time higher than the opposing team's map finish time will not be counted!
This can only happen in a scenario where the team which defends first (blue) wins the game.

The rating points awarded to players are calculated as follows:

\$\$Points = 6 + 2 × ({WinnerObjectiveCount - LoserObjectiveCount})\$\$

The resulting points will then be multiplied by the losing team's win chance.
This prevents infinite rating increase or decrease.
As such, teams that are rated significantly higher than the opposing team won't earn many points from winning against lower rated teams, but will lose more points than usual when they lose against the lower rated team.

The final formulas equate to:

\$\$NewWinnerTeamRating = WinnerTeamRating + Points × LosingTeamWinChance\$\$

\$\$NewLoserTeamRating = LoserTeamRating - Points × LosingTeamWinChance\$\$

New players will not be ranked immediately. They stay unranked for their first 10 games.
This is important because a player's rating is not meaningful if they don't have enough games played as the sample size is too small.
For their first 10 games, a point multiplier of 3 is applied for wins and a point multiplier of 6 is applied for losses.
Usually, these multipliers would have the same value for both wins and losses. However, in our small community a new player is very likely to be significantly worse than average.
Because of this, it was decided to have a higher multiplier for losses to curb unbalanced teams.

After a new player played the first 10 games, these multipliers will no longer be applied to his rating changes and the player will be ranked and listed in the ranked category.

This problem is related to UT2004's cache expiry system. By default, the cache expiration timeframe is set to 30 days. To fix this issue, change the following line in your UT2004 or UT2004-win64.ini to 0:

`[Core.System]PurgeCacheDays=0`

There's no downside to extending your cache time, other than the filesize of the files put on your hard drive. This will make you join the server much faster, especially for slower connections this is a must-have setting.

Some maps, especially those found in assault, do have a lot of things to render at all times tanking your game's performance. Maps like AS-Insurrection can be a huge issue for some players. Nonetheless: there are ways to optimize your game's performance significantly.

You could use one of these options:

Option 1: UT2004 DX8 to DX9 converter

Install:
Copy the "d3d8.dll" and the "enbconvertor.ini" to your UT2004/System directory.

Make sure the render device set in your UT2004.ini is set up properly:

`[Engine.Engine]RenderDevice=D3DDrv.D3DRenderDevice`
Option 2: UT2004 64-bit edition

This patch makes your UT2004 run in 64-bit mode, and also includes the DX8 to DX9 conversion. However, the 64-bit edition has minor, non-gamebreaking flaws like differently looking item pickups or non-toggleable fullscreen mode. The patch can be found in the downloads section .

Install:
Copy the "ut2004-win64.exe" and the "DefOpenAL64.dll" to your UT2004/System directory.

Make sure you start your UT2004 from the newly created ut2004-win64.exe from this point on.

A new .ini file - "ut2004-win64.ini" - will be created for this version, so changes done to your ut2004.ini wont have any effect on this version of the game and need to be set up again in the "ut2004-win64.ini"

By default, UT2004's FPS limits are quite low. The following lines in your ut2004.ini / ut2004-win64.ini need to be changed to increase the limits:

``` [Engine.LevelInfo]MaxClientFrameRate=200 [IpDrv.TcpNetDriver]MaxInternetClientRate=15000 ```

Going much higher than 200 FPS is not recommended because it introduces several annoying bugs.

The MaxInternetClientRate change is required because UT2004 won't remove the FPS limiter beneath a certain net-speed threshold when playing online. Sometimes the value from the .ini configuration file will not be applied ingame. In this case type "netspeed 15000" into the console once you're on the server and your FPS will unlock to your desired value.

By default, UT2004's resolution and refresh rate choices are very limited and outdated by today's standards. The upcoming example is the recommended setup for a 2560x1440 144Hz monitor and needs to be adjusted according to your monitors specifications. The following lines in your ut2004.ini / ut2004-win64.ini need to be changed or added to support modern resolutions and refresh rates:

``` [WinDrv.WindowsClient]FullscreenViewportX=2560FullscreenViewportY=1440 [D3DDrv.D3DRenderDevice]DesiredRefreshRate=144 [D3D9Drv.D3D9RenderDevice]DesiredRefreshRate=144 [OpenGLDrv.OpenGLRenderDevice]DesiredRefreshRate=144 ```

In the server browser, click the "Favorites" tab, right click into your list of favorites and click "Add To Favorites".

Now hit CTRL+V to paste the IP into the field. Confirm with "OK" and the server should be visible in your favorites list.

Option 2: Join via console

From basically anywhere, open your console by hitting the tilde key, "~" or "ö" depending on keyboard layout.

Type "open", hit spacebar once and paste the IP address using CTRL+V. Confirm the command by pressing return/enter.

Example video for both methods:

When a game is in pre-game phase and the players aren't ready yet the join button will be disabled. In order to join the game as a player the game needs to be re-joined as a player.

Example video:

Option 1: UT2004 Settings

From the main menu, navigate to the "Settings" option and click the "Weapons" tab at the top. From there, enable "Custom Weapon Crosshairs" and set up your crosshairs to your liking.

Option 2: UTComp

Open UTComp by pressing the F5 key or by typing "mymenu" into your console. Click the "Crosshairs" tab, check "Use Crosshair Factory", add a crosshair and adjust it to your liking!

If you want more crosshairs than the ones available by default, check out the "K-Aus Crosshair Pack" in the downloads section . Once downloaded, extract the contents from the zip into their respective folders.

ASeXtra is a quality of life package for (competitive) Assault servers. It comes with 1-click-features such as setting up the correct respawn and round times for Assault games, pausing the game, bulk-switching teams and more.

Feel free to use ASeXtra on your own server. It can be found in the downloads section

When a game is in a paused state, the person joining the game won't be able to fully join the game. In this case please give the administrator a little time to unpause the game. Once the game is unpaused you will load into the game automatically.

Once the game is unpaused, make sure you're in the correct team and continue playing normally.

With netcode enabled there are a plethora of issues, like enemy projectiles spawning in front of your face because their ping time is insanely high. Netcode doesn't truly reduce the ping, but enables client-side simulation of 0 ping. Since we cannot bend the rules of time yet, Enhanced Netcode mainly causes issues and unfair situations for the players.

The main reason we dont play with Netcode is that it will simply stop working once the attack/defense sides are switched in Assault. This issue is Assault specific and has not been fixed yet.

UT2004 supports complete modification of all kinds of messages. The kill messages can be found in the "/System/XWeapons.int" file.