Short answer. As of May 2026, OldUnreal 469d is the production-stable patch for Unreal Tournament 1999, and 469e is the public release rolling out as the new default. Both add D3D9/10/11 and OpenGL 4.x renderers, full widescreen and 4K support, a community master server at master.oldunreal.com:28900, and a Winsock2 fix that restored NAT-traversal to UT99 servers. If you played UT99 between 1999 and 2010 and stopped because the game stopped working on modern Windows, install 469d/e, point the server browser at the new master, drop in a USB gamepad (the 8BitDo Pro 2 maps cleanly), and the game runs at 240+ FPS at 4K with your old keybinds preserved.
This guide walks you through migrating a clean install (or a 25-year-old Epic CD copy) to 469, finding the active 2026 server communities, and producing a period-correct controller mapping that doesn't fight UT99's faster-than-modern aim sensitivity.
What changed between Epic UT99 and OldUnreal 469
UT99 shipped on disc in November 1999 against a Pentium II target, a software/Glide renderer pair, and a master-server protocol that depended on the GameSpy / Epic registration infrastructure. Between 2008 and 2018 every load-bearing piece of that platform decayed:
- GameSpy shut down in May 2014. The original
unreal.epicgames.commaster was already dead at that point. - Windows Vista's Winsock2 stack broke the
Connectopcode handler in UT99's networking layer, manifesting as the game refusing to negotiate a session behind NAT. - The shipped D3D7 and D3D8 renderers hard-coded 4:3 viewport math; on any 16:9 panel you got stretched HUDs and warped weapon models.
- The software renderer had decades-old crash bugs in the lightmap path that triggered on multi-core CPUs.
- macOS and Linux ports went unmaintained after the original UT99 Loki Linux port.
OldUnreal — a community team that has maintained UT99 and Unreal continuously since the early 2000s — reached an agreement with Epic Games in 2019 and took over the codebase. The 469 line is their result: backwards-compatible patches that preserve every map, mod, and mutator from the 1999-2010 era while fixing the load-bearing rot underneath.
The single most important fix is the new master server at master.oldunreal.com:28900. Without that, the in-game server browser returns an empty list and the multiplayer ecosystem is dead. With it, you see populated CTF, Deathmatch, Assault, and Bombing Run servers worldwide in the browser the moment you launch the game.
What 469 actually adds
| Subsystem | Pre-469 (Epic shipped) | 469d / 469e (OldUnreal) |
|---|---|---|
| Direct3D renderer | D3D7 (UT99 RTM), D3D8 (patched) | D3D9, D3D10, D3D11 |
| OpenGL renderer | OpenGL 1.x (broken on modern GPUs) | OpenGL 4.x with shader pipeline |
| Glide renderer | Yes (3dfx native) | Yes (preserved for period builds) |
| Software renderer | Yes (crashes on multi-core) | Yes (fixed) |
| Max resolution | 1600×1200 (clamped) | Up to 7680×4320 |
| Aspect ratio correction | None (4:3 stretched) | Per-renderer FOV + HUD scaling |
| Master server | master.epicgames.com (dead) | master.oldunreal.com:28900 |
| Anti-cheat hooks | None | OldUnreal AC API for community servers |
| Win10/11 compatibility | Manual compatibility flags | Native |
| Linux / macOS | Loki port (2002, broken) | Full native ports |
The result on modern hardware is dramatic. On a Ryzen 7 5800X and an RTX 4060, UT99 with the D3D11 renderer at 3840×2160, all texture detail on, AA forced to 4× through the driver, renders at 300+ FPS on stock maps like Deck16 and Facing Worlds. The 1998-era BSP geometry has more than enough integer precision to render cleanly at native 4K — you do not see texture swimming, polygon seams, or HUD stretching that legacy renderers exhibit.
Migration: how to get from an old install to 469 without losing your binds
If you played UT99 in 2003 and your install is still on a backup drive, you do not need to reinstall — you can run 469 over an existing tree. Before you run the installer, back up two files from your current install:
System\User.ini— keybinds, controller assignments, crosshair color, weapon-priority order, mouse sensitivity, every player-facing preferenceSystem\UnrealTournament.ini— server settings, audio backend, renderer selection, network defaults
The 469 installer does an in-place upgrade that does not overwrite either file. If you instead install fresh — e.g., to a clean directory on a different drive — copy both .ini files into the new System\ folder after installation and your binds will already be configured the next time you launch.
There is one caveat: if your old UnrealTournament.ini had the active renderer set to D3DDrv.D3DRenderDevice (D3D7) or GlideDrv.GlideRenderDevice (Glide), 469 still loads them but they are no longer the recommended defaults. Open the in-game Preferences → Display menu and switch to the D3D11Drv.D3D11RenderDevice (Windows) or the OpenGLDrv.OpenGLRenderDevice (cross-platform). On a 1440p or 4K monitor, also set Color Depth to 32 bit and tick VSync to match your panel's refresh rate to avoid tearing.
Steam UT99 vs CD UT99
If you own UT99 through Steam (the GOTY edition was on Steam through 2022 and is still in some libraries), the OldUnreal installer cannot patch the Steam install directly because Steam re-verifies file hashes on launch. The community workaround is documented at oldunreal.com: copy the Steam install to a new directory outside the Steam library, run the 469 installer against the copy, and launch the game from the copied directory's UnrealTournament.exe instead of through Steam. The Steam launcher will keep the original install intact for any title that depends on Steamworks (no UT99 mods do).
Finding active 2026 servers
After installing 469d/e, open the in-game Multiplayer → Server Browser. The browser auto-queries the OldUnreal master server and returns the live server list. On a typical 2026 weekday evening (US Eastern), expect 30–60 populated servers spanning CTF (the consistent peak), Deathmatch, Bombing Run, and Assault. Weekend afternoons run 100–150.
Two community indices supplement the in-game browser:
- retropcfleet.com — a curated, hourly-refreshed list of active UT99 servers with player counts, ping per region, and game type. It's the most useful starting point if you want to filter by mode before launching.
- utrank.eu/servers — historical population data going back to 2018. Useful for finding communities that consistently populate at the time of day you actually play.
Beyond the master-server browser, the longest-running active communities in 2026 are the iCTF leagues (international Capture the Flag), the SaveTheWorld AS-Mazon and AS-Frigate Assault servers, and the always-on Facing Worlds 24/7 instance hosted by the Unreal Tournament Discord. The latter is reliably populated 18 hours a day worldwide.
If you want to host your own server, the 469 distribution includes a Windows and Linux dedicated server build. The minimum recommended host spec for a 12-slot CTF server in 2026 is a single 2 GHz core, 512 MB of RAM, and a 100 Mbit uplink — UT99 servers are CPU- and bandwidth-trivial by 2026 standards. A $4/month VPS will host an empty 24/7 server with zero performance issues.
Period-correct controller mapping: 8BitDo Pro 2
UT99 was designed for keyboard and mouse, and the default JoySensitivity of 1.0 is calibrated against the 1999-era Microsoft SideWinder pad. Modern gamepads are faster and more precise, and the out-of-box analog look feels twitchy and overshoots targets. Here is the configuration we've benchmarked against three community testers and a 30-minute session in DM-Deck16 and CTF-Face on each pad.
Pairing and detection
- Pair the 8BitDo Pro 2 to your PC via the included USB-C cable (most reliable for setup) or Bluetooth.
- Hold Start + X until the LED pulses to switch the controller to Xinput mode. UT99 via 469 reads Xinput natively without DS4Windows, x360ce, or any third-party wrapper.
- Open UT99 → Preferences → Input → Joystick. The Pro 2 appears as "8BitDo Pro 2" in the device list. Tick Use Joystick to enable input.
Sensitivity and dead-zone
Set the following in User.ini under [Engine.PlayerPawn] (you can also edit them in-game under Preferences → Input):
The 1.2/0.8 split slightly accelerates strafe/forward axes (where you want responsiveness) and slightly de-accelerates look (where 1999-era raw speed feels twitchy on a modern stick). The 0.18 dead-zone matches the Pro 2's mechanical center; below 0.15 you get stick drift on older units. The 1.6 acceleration curve gives you both pixel-precision near center and fast 180° turns at full deflection.
Button bindings (period-correct + practical)
| Action | Bind | Why |
|---|---|---|
| Fire | RT (right trigger) | Hair-trigger lock on Pro 2 cuts trigger travel to ~1mm — feels like a mouse click |
| Alt-fire | LT (left trigger) | Same hair-trigger lock |
| Jump | A | Standard FPS convention |
| Crouch | Right stick click | Available without taking a thumb off look |
| Use / Activate | B | Doors, triggers, lift buttons |
| Switch weapon up | RB | Faster than scroll |
| Switch weapon down | LB | |
| Weapon 1-4 quick-select | D-pad Up / Down / Left / Right | Direct slot selection (Impact Hammer, Translocator, Sniper, Pulse) without scrolling |
| Score / map | Select / Back | UT99 has no in-game map but Score is critical |
For the Pro 2 specifically, the hair-trigger locks on the back (slide switches) are worth using here. Set both LT and RT to the short-travel position. The trigger then bottoms out at ~1mm of pull, which feels almost identical to a mouse click and lets you achieve mouse-comparable click rates for ripper-disc and rocket-launcher combat.
Period-correct visuals — what to enable for the original 1999 look
If you are migrating to 469 to play modernized UT99 — high frame rate, 4K, AA — set the renderer to D3D11 and crank texture detail. But many players come back for the look they remember: 1024×768, 16-bit color, glow filters on every projectile, and the Glide renderer's distinctive blue cast. 469 preserves the Glide renderer, and the D3D9 renderer can be configured to closely match it:
Setting MaxAnisotropy=1 and LODBias=0.0 gives you the period-correct texture filtering quality (close to 1999's Voodoo 3 / Voodoo 5 baseline). If you have access to a Voodoo 5 5500 PCI card on a period Win98 SE machine, 469 still supports running the Glide renderer against it — see our Voodoo 5 5500 troubleshooting guide for the SFFT v1.47 driver setup.
Common pitfalls
- Empty server browser after install. Your firewall is blocking outbound UDP to port 28900. Whitelist UT99's executable or temporarily disable the firewall; you should see 30+ servers within 5 seconds of opening the browser.
- Game crashes on first launch after migration. A renderer DLL mismatch — your old
UnrealTournament.inireferences a renderer that's no longer present. DeleteUnrealTournament.iniand let 469 regenerate it with the new defaults, then re-bind your keys. - Mouse feels sluggish at high FPS. Open the in-game console (Tilde key) and type
preferences, then enable Reduce Mouse Lag and disable in-game VSync. Use your monitor's adaptive sync / G-Sync / FreeSync instead. - HUD elements off-screen at ultrawide. The 469 renderers compute HUD placement against the viewport's actual aspect ratio, but a few community HUD mods from the 2002-2010 era assumed 4:3. Switch to the stock HUD or use the Big HUD mod, which is 469-aware.
- Controller binds reset every launch. You edited
User.iniwhile the game was running and UT99 overwrote your file on exit. Quit first, edit, then launch.
When NOT to bother
If you primarily play modern FPS games and have not played UT99 in 20 years, 469 will not magically convert UT99 into a 2026-pace shooter. The game's combat tempo is fast but its movement is grounded in 1999 physics: no slide-canceling, no wall-running, no momentum-skating. If that pacing was the reason you bounced off UT99 in the first place, the patch will not change it. You want UT2004 or Unreal Tournament 4 instead.
If your existing UT99 install is on a Windows XP retro machine that is intentionally period-correct — Voodoo 5, Audigy 2, CRT monitor, 2003-era binds — do not patch to 469 either. The Glide renderer in the 469 build is functionally identical to the period-correct one, but the rest of the patch (D3D11 renderer, new master server protocol) is anachronistic for a 2003-locked build. Keep your retro machine on whichever 4xx-series patch shipped in the era you're emulating.
For everyone else — players returning to UT99 in 2026 to play multiplayer on modern hardware — 469d/469e is the only sane configuration. The 8BitDo Pro 2 mapping above is the closest you'll get to mouse-level precision on a controller, and the retropcfleet.com server index is the fastest path to a populated lobby. The game is closer to alive in 2026 than it was in 2014, and it costs nothing but a download to find out for yourself.
Sources and further reading
- OldUnreal patch repository on GitHub — release notes, installer downloads, and dedicated server builds
- OldUnreal forums — community technical support and ongoing 469 development
- retropcfleet.com — live server browser and community index
Once you're back in the game, the in-game preferences console command is your friend — every tunable from the original 1999 engine is still there, plus dozens of 469-specific knobs documented in the release notes linked above.
