# Unreal Tournament 2004 Release Notes ## General Information ### Official Unreal Tournament Web Sites * [Unreal Tournament Home Page](https://www.unrealtournament.com) * [Epic Games Home Page](https://epicgames.com) * [Unreal Engine Technology Page](https://www.unrealengine.com) ### Independent Unreal Tournament Web Sites and Discord servers * [OldUnreal site](https://www.oldunreal.com) / [OldUnreal Discord](https://discord.gg/thURucxzs6) * [MiA Forums](https://www.miasma.rocks) / [MiA Discord](https://discord.gg/CxdXaEauya) * [CEONS Forums](https://ceonss.net/) / [CEONS Discord](https://discord.gg/X4V8THM) ## Unreal Tournament 2004 Version 3374 Release Notes Version 3374 is completely network compatible with the previous public release of UT2004 (3369). > [!IMPORTANT] > If you are installing our patch manually, you should update your game client to version 3369 and install the Epic ECE Bonus Pack first. > If you use our installers, the necessary files will be installed automatically. ### Patch Highlights * We now natively support Linux and macOS systems with x86_64/amd64, arm64/aarch64, and powerpc64le CPUs * You can now play the game or run a server on a Raspberry Pi 4 or 5, albeit at rather slower frame-rate than on a PC! * The Linux and macOS distributions of the patch now include a fully functional UCC with an UnrealScript compiler (UCC make) * We dropped support for 32-bit CPUs, for old versions of Windows (i.e., Vista or earlier), and for DirectX 8 * The Windows version of the game now requires DirectX 9 * The Linux and macOS versions now use SDL3 instead of SDL1 * We dealt a first (minor) blow to the editor goblin! Unreal Editor will no longer freeze for several seconds when clicking a viewport * Our patch includes a brand new OpenGL 3.3 / ES 3.0 renderer, AntiDrv. This renderer outperforms the original OpenGLDrv on most platforms, adds new features (e.g., shader-based gamma/color correction), implements/fixes several features that were missing/broken in the original OpenGLDrv (e.g., gradient projectors and weightmap terrain rendering), makes features that were previously nvidia/amd-exclusive available on all platforms (e.g., CO_AlphaBlend_With_Mask combiners), and it can serve as a reference implementation for other new renderers * Our patch also includes a brand new DirectX 11 renderer, D3D11Drv. This renderer outperforms all other renderers on Windows 11, both in terms of frame rates and input latency, but it does not work in Unreal Editor yet ### Enhancements #### Unreal Editor and UCC * The Unreal Editor window no longer minimizes when testing a map * The properties window now supports mouse wheel scrolling * You can now expand and collapse items in the properties window using keyboard arrows * The music browser now supports ogg files * You can now import ASE and OBJ models as static meshes * We overhauled the texture compression code and switched to a new texture compression support library (AMD Compressonator). The new code works on all platforms so you can now import compressed textures using UCC make * You can now launch UCC from different folders on Linux and macOS * The mesh browser now has a package combo box and a button to open the mesh properties window * Unreal Editor now embeds the full name of exported textures in the names of the exported files * The sound and material browsers now have a menu option allowing you to export all in-use sounds/materials * The map export dialog now uses the correct map name as the default name of the exported file * You can now use the CTRL+Space hotkey to align the camera to the selected actor * Viewports now refresh when you jump to an actor using the search actor dialog * The editor can now import and export convex volumes * We added support for importing UnrealEngine 1 T3D files * You can now search classes in the actor browser * Double-clicking a package name in the actor browser now opens all of that package's classes in the code editor * The editor now remains responsive during slow operations that show a progress bar * The editor progress bar dialogs now update only when the progress has increased * We added an audio beep notification that signals the completion of a long editor operation (configurable using the Options.NotifyActionEndAfterSeconds option in UnrealEd.ini) * We optimized the reachspecs generation code and made this code log build times * We reduced the log spam caused by path nodes being too close to eachother * We added colored output to UCC (might not work on some platforms) * We made the output of UCC make more compact * Unreal Editor and UCC now log additional information when they warn about invalid materials in skeletal meshes * We implemented several optimizations that should speed up undo/redo operations * We've removed some particularly spammy log messages from Unreal Editor * We fixed an editor bug that duplicated projected texture layers during build operations * We've increased the maximum framerate for editor viewports to 200 FPS. This should make camera movement in the editor much smoother * The editor browsers now refresh after opening a map * We reduced UnrealEd's idle CPU consumption * The UnrealEd actor browser now has a function to export selected packages only * The editor and UCC will now print more detailed error messages when they fail to save a package * We added a new folder picker when exporting textures and sounds * We improved the context warnings on the defaultproperties importer * We now provide for DecoLayers.DensityMap and TerrainMap to be as used as a material for terrain #### Networking and Netcode * Download messages now include information about the number of packages to download and the percentage of total download completed * The game client now downloads and collates game server information from multiple master servers * Game servers can now connect to multiple community master servers * You can now configure the UCC server query port number for admins. See [here](https://github.com/ukpiglet/UDPRelay) for an example of how this can be used on a Windows based UCC server * Demos recorded in offline games will now work with mods that add packages to the package map using Actor.AddToPackageMap * You can now add favorite servers using their fully qualified domain name * We now automatically detect the GoG CD key and replace it with a unique key * We've removed the MaxClientRate cap that would be enforced when the server had more than 16 players ([#264](../../issues/264)) * We've removed the Windows XP firewall authorization code that generated firewall warning popups #### Voice Chat * The 9.6Kbit/s voice codec now works in internet games ([#46](../../issues/46)) * Auto-joining voice channels should now work reliably * The client should now correctly inform the server about its voice chat status * The game will now only turn on your microphone when you're in a multiplayer game with voice chat enabled #### Audio and 3D Rendering * Full screen support is now available in the 64-bit Windows client * You can now cap your frame rate for menus and for offline games using the MaxMenuFrameRate and MaxOfflineFrameRate settings (see Default.ini) * The player model now renders in mirror reflections * Vertex models now render in OverlayMaterial * You can now crossfade between two music tracks using MusicEvents * Music OGG files support loop points (or even looping disabled) * Text-to-speech is now available in the 64-bit Windows client * OpenGLDrv now supports gamma correction even when the game runs in windowed mode * We no longer delete the renderer when switching between fullscreen and windowed mode. This should make these mode switches much faster * When you alt+tab out of the game and back in on a Windows system running one of the OpenGL renderers in fullscreen mode, the game window should now restore the game window to fullscreen mode * When you alt+tab out of the game, the game window will now get minimized instead of rendering over all other windows * We made some minor adjustments to OpenGL/AntiDrv color correction. The new default color correction values in Default.ini are Brightness=0.5, Contrast=0.5, Gamma=1.0. We also updated OpenGLDrv and AntiDrv so they match D3D9Drv exactly at these values ([#238](../../issues/238)) * The FPS limiter now works reliably at high frame rates ([#293](../../issues/293)) * The video settings menu will no longer warn you about using an unsupported resolution when the game is in windowed mode * We've implemented Hor+ FoV support. This implementation makes foxwsfix unnecessary ([#33](../../issues/33) [#286](../../issues/286) [#185](../../issues/185) [#200](../../issues/200) [#194](../../issues/194)) * We overhauled fullscreen handling on macOS and Linux. fullscreen viewports now render at the desktop resolution at all times, but the game will render at the resolution the player selected internally * We added support for stereo sound effects in ALAudio * D3D9Drv should now gracefully handle textures that are missing mipmap data. This fix will make the flames on ONS-Frostbite render correctly * ALAudio now supports EAX spatial audio on Linux * We added a new "Highest" world detail mode. This mode disables the dynamic detail reduction feature that disabled visual effects such as vehicle headlights when the frame rate (temporarily) dropped below the desired frame rate * The Windows client will now use borderless windows rather than exclusive fullscreen mode. This makes alt+tabbing and resolution switching much faster and more reliable * The Windows client now detects when you try to open the game window at an incorrect position (e.g., if you had the window on a different monitor the last time you played, but that monitor was now powered off) * AntiDrv and D3D11Drv support two fullscreen scaling modes: 1. Stretch (default): stretches the rendered image to fill your entire screen but does not preserve the aspect ratio 2. Aspect ratio: stretches the rendered image as much as possible while preserving the aspect ratio You can enable aspect ratio scaling by adding the ScalingMode=AspectRatio setting to the [D3D11Drv.D3D11RenderDevice] or [AntiDrv.AntiRenderDevice] sections of your game ini. We will probably also make this setting configurable in the menu soon. * ALAudio will now play 2D sounds **without** HRTF and 3D sounds **with** HRTF by default. You can override this behavior by setting AutoHRTF to True or False in the [ALAudio.ALAudioSubsystem] section of the ini #### Physics and Movement * We optimized the memory allocation strategy when moving actors * We optimized the AI pathfinding code * We have improved the precision of trig calculations used for vector mathematics as well as introducing changes to preserve fractional rotation, pitch, and yaw across frames. Together these allow far greater precision movement and aim (e.g. at high zoom zoom) with high frequency input across the full range of weapons, vehicles, and turrets ([#125](../../issues/125)) * We ensured that bots now use vehicles to reach a bVehicleDestination-flagged jumpspot where there was only one suitable vehicle path to an objective (e.g., AS-Junkyard) ([#257](../../issues/257)) #### Input and Windowing * The log and terminal windows can now be minimized and maximized * The Unreal Editor log window position now persists through restarts * You can now set the WinDrv.WindowsClient.DirectEnhancedPointerPrecision option to true to enable enhanced pointer precision when using DirectInput-based mouse input * We backported UT 469's log window, which incurs far lower run-time overhead when logging #### UnrealScript * The game now plays a "drowning" sound rather than "hit underwater" sound when the player is under water and starts losing health ([#18](../../issues/18)) * We added a new console command, `stat fpos`, that configures the placement of the `stat fps` output relative to the top-right corner of the screen. See Default.ini: `FPSPosX` and `FPSPosY` * We added a new console command `is_pi`, which returns 1 when running on a Raspberry Pi * We have added more default screen resolutions to the Display menu * We added a new native function, Actor.KRagdollExists, to check if a named ragdoll exists for the actor * Dying players now play their death animation if they do not have a ragdoll * We improved several of the error messages the game logs when encountering errors in UnrealScript code * You can now set the MaxWarnPerFunc option in the [Core.System] section of the ini file to limit how many errors individual UnrealScript functions can log before the game silences them * You can now add asset files (ogg/ka) to the package map using the Actor.AddToPackageMap function * Several HUD and menu elements are now widescreen-aware and will scale correctly at 21:9, 16:9, and 16:10 resolutions. You can enable the widescreen-aware menu by setting the MainMenuClass to GUI2K4.UT2K4MainMenuWS in the [Engine.GameEngine] section of the game ini. Our installers will set this setting automatically * The in-game console's command history now persists across game launches * You can now configure the inactivity time and the effect spawned by weapon lockers * Engine.Actor.GetHumanReadableName() now returns the plain class name rather than the instance name (which sometimes contains a number) * Several Engine.PlayerController functions can now be called from static contexts * The game now shows you the UnrealScript call stack when it logs an accessed none error * The various frame rate limits can now be configured in the in-game menu * We made the map voter load the map list much more quickly ([#89](../../issues/89)) * We added an "All" game type to the server browser * We added new aspect ratio scaled image style (`ISTY_AspectRatioScaled`) with alignment options for widescreen support * We added widescreen main menu images for aspect ratios between 1.7 and ultra-widescreen * The "join game" menu now remembers your last selected tab ([#126](../../issues/126)) * The SkaarjPack.Invasion.ReduceDamage function now calls the super function to handle damage reduction for victims that do not belong to the same species as the damage instigators * The bonus pack 2 maps are now in the lists of alternative ladder maps ([#136](../../issues/136)) * The onslaught ladder should now appear in the single player menu ([#136](../../issues/136)) * The tutorial maps in the single player campaign now have a thumbnail * The "open" console command now supports https links * We added functionality for colored server names using HTML-like notation: `(#RRGGBB)` where RR, GG and BB are hex values `01` to `FF`. For example, `(#228b22)Forest Green` should give you $\color{#228b22}\textsf{Forest Green} $ * We implemented a new mechanism mutators can use to present custom map voting menus to 3374 clients. This mechanism adds a "CustomMapVotingMenu" string variable to the XInterface.GUIController class. You can set this variable using SetPropertyText. If the SetPropertyText call succeeds, the client will open the map voting menu using this variable. If the call fails, you are dealing with an older client, and your custom menu loader will need to revert on such clients to using "MapVotingMenu" ([#335](../../issues/335)) * We backported the UTrace, UTrack, and UProfile console commands from UT99 * We tweaked the positioning and scaling of the main menu buttons, the Onslaught minimap, and the Onslaught grenade HUD to better accommodate ultra-widescreen monitors * The in-game server details panes will now show the server's current and configured tickrate ([#457](../../issues/457)) * The news tab in the community menu now shows news hosted on the OldUnreal domain * When pasting text into the in-game console using CTRL+V, the pasted text will now be inserted at the cursor position rather than at the end of the current text line * We increased the hardcoded limit of 32 players to 255 ([#442](../../issues/442)) * You can now use the Core.Object.AllPackageFiles(out string FileName, optional string FileExt, optional string Prefix) iterator to iterate through all package files with the given prefix or extension * We added the "FILECACHE REFRESH" and "FILECACHE LIST" console commands #### Webadmin * The webadmin map list page now shows a sequence number for the maps in the map cycle * The webadmin now has a button that refreshes the file cache. This is useful if, e.g., you've uploaded a new map while the server was running #### Localization * We added Hebrew and Russian localization and fonts * We added Polish localization * We updated the German localization #### Miscellaneous * The game will no longer truncate log files when it crashes * We added a KarmaPath setting to the [Core.System] section of the ini file * The game now reads and writes human-readable text color codes from and to the ini file * The Linux binaries now perform a case-insensitive file search when they cannot open required localization files * The game now performs a case-insensitive file lookup when it can't find the music file it's supposed to play. This should fix issues with music not playing on Linux systems * The game will now save screenshots in PNG format * We increased the default cache size * We optimized the code that saves your game configuration to INI files * The game now flushes the log file when it closes or crashes * We backported several bug fixes and optimizations for the log window * The game now supports reading localization files with UTF-16BE encoding ([#460](../../issues/460)) * Bug reports are now always in English ### Bug Fixes #### Unreal Editor and UCC * The procedural sound context menus should now be fully functional * The display checkbox for placeables actors in the actor browser should now work as expected * We fixed a bug that made Unreal Editor create dummy packages when converting static meshes to or from brushes * Unreal Editor now saves viewport sizes correctly even when viewports are minimized * Large .int files are now saved correctly without truncation ([#12](../../issues/12)) * The UnrealScript compiler now parses and compiles scripts in the correct order after it processes `dependson` directives * The editor no longer moves left and down when clicking on a viewport, when used on a multi-monitor setup * Viewport selection no longer takes a century, instead acting instantly * We fixed bugs that made Unreal Editor incorrectly import and export DDS files * We fixed a bug that made the Unreal Editor tooltips disappear on some systems * We fixed a bug that made materials used by static meshes not appear in the texture browser's "in use" tab * The static mesh to brush converter now works as expected when converting a mesh with a negative draw scale * We fixed a bug that made Unreal Editor freeze when closing a modal dialog using the X button * We fixed a bug that crashed the editor when opening a non-existing file * We fixed some UI sizing issues in the terrain editor * Skeletal mesh faces should now get sorted correctly during import * We fixed a bug that made the 'None' group list show all sounds from other groups * We fixed a bug that made surface properties update slowly when unselecting a surface * We fixed a bug that made it impossible to assign advanced textures to surfaces using the texture browser ([#203](../../issues/203)) * We fixed an editor bug that made assets without a group invisible in the various assets browsers ([#237](../../issues/237)) * We fixed a bug that made the progress bars blink during slow editor operations * We fixed a bug that made the editor hang when you compiled changed scripts if no scripts had changes ([#268](../../issues/268)) * We fixed a bug that would increase the package size every time you rebuilt code * We fixed an UnrealEd bug that could make the sound browser export sounds using the wrong file names * We fixed several UnrealEd sound browser bugs that could make it apply actions (play, delete, ...) to the wrong sounds #### Networking and Netcode * The game now reports the correct progress percentage when downloading files from a game server * The game client will no longer call PostNetBeginPlay twice for certain actors * We fixed an issue that made the server browser not update information/pings when the netspeed is above 20000 ([#72](../../issues/72)) * We fixed rubber-banding/movement desync when playing online with high fps ([#81](../../issues/81)) #### Audio and 3D Rendering * We fixed a bug that made ambient sounds restart whenever the player camera switches to a different view target * Music fadeouts should now work as expected * We fixed an issue that made music volume changes reset the currently playing song ([#102](../../issues/102)) * We fixed a bug that made unlit meshes flicker occasionally * D3D9Drv should now render materials with multiple passes correctly. This change fixes several issues where material layers were missing ([#363](../../issues/363) [#337](../../issues/337) [#317](../../issues/317) [#109](../../issues/109) [#137](../../issues/137) [#134](../../issues/134) [#133](../../issues/133) [#108](../../issues/108)) * OpenGLDrv should now render vehicle headlights correctly * We fixed a bug that made ALAudio reduce the sound volume if you had voice chat enabled on the previous map ([#374](../../issues/374)) * We fixed a particle emitter bug that made the BW 2.5 ViPER rifle magazine flicker at high frame rates * We fixed an AntiDrv/OpenGL bug that made some weapons render on top of the HUD * Rotating skyboxes, such as those on AS-Convoy and CTF-DE-LavaGiant2, will now animate correctly at high frame rates ([#445](../../issues/445), [#448](../../issues/448)) * All renderers now correctly illuminate geometry when there is no valid LitSphere * We fixed a D3D9Drv bug that made projected textures too bright on systems with nvidia GPUs ([#434](../../issues/434)) * We fixed several renderer bugs that made certain scripted textures render incorrectly ([#477](../../issues/477)) #### Physics * We fixed a bug that triggered a "moved without proper hashing" warning when a player disconnected while possessing a live pawn * We fixed a bug that made SVehicleWheels collide with Pawns even when the vehicle had bBlockActors set to false ([#37](../../issues/37)) * We fixed a typo that made the Engine.PlayerController.ReplicateMove() function call Pawn.SetBase() unnecessarily * We fixed several bugs that made the Engine.Controller.LineOfSightTo function return the wrong result #### Webadmin * We fixed a bug that made the webadmin fail intermittently on some platforms #### Input and Windowing * We fixed a problem that made the game receive mouse and joystick input even while its window is not in focus * We fixed a bug that made the game window lose mouse focus after alttabbing out and back in on Windows * We fixed a bug that made the mouse cursor stick to the edge of the game window in fullscreen mode #### UnrealScript * We fixed a plethora of accessed nones and UnrealScript-based exploits, crash bugs, and denial-of-service attacks (Thank you Wormbo and Shambler!) * We fixed a bug that could make the SPMA camera explosion loop without stopping ([#24](../../issues/24)) * The PlayerController.AskForPawn function now jumps to the Spectating.Begin state correctly ([#10](../../issues/10)) * The PlayerController.ToggleScreenShotMode function no longer discards user preferences such as the weapon handedness, crosshair visibility, HUD visibility, and the TeamBeaconMaxDist and bHideVehicleNoEntryIndicator settings ([#11](../../issues/11)) * The DeathMatch.InitTeamSymbols function can no longer give multiple teams the same symbol ([#16](../../issues/16)) * We fixed a bug where gibbed players or monsters can be gibbed multiple times by sources of constant damage * We fixed several bugs that made Engine.Canvas incorrectly process newline characters and color codes * We fixed a bug that made the Linux and macOS clients crash when loading font textures with remapped fonts * We fixed a bug that could make the game crash after calling LinkMesh on a new skeletal mesh that uses dynamic hitboxes * We fixed a bug that could make the game crash when you called TerrainInfo.PokeTerrain * Mortar shells should now work correctly on low-grav maps * We fixed a bug that could unexpectedly prevent you from exiting raptor vehicles * We fixed memory leaks in the ONSShockTankMuzzleFlash and SVehicle classes * We fixed a bug in the Linux/macOS client that made the game exit when trying to open a URL if the BROWSER environment variable was not set ([#132](../../issues/132)) * The game should now display item pickup messages when playing with the vehicle pickups mutator ([#154](../../issues/154)) * We fixed a bug that made the player model in the player selection menu appear upside down ([#146](../../issues/146)) * The domination tutorial should now work as expected * We fixed a typo in the particle emitter velocity scaling code that made particle emitters ignore Z-scaling * We fixed a bug that made it possible to receive bloodrites challenges for non-existent team members ([#136](../../issues/136#issuecomment-3745256548)) * We fixed some accessed none errors in Onslaught * The roaming energy effect on Onslaught power nodes now works correctly when players switch teams ([#476](../../issues/476)) * We fixed a bug that could make the game remember the wrong noise in Engine.Actor.MakeNoise * The mutant game mode now registers kills correctly ([#497](../../issues/497)) * We fixed access-nones in Assault when bots are in turrets ([#558](../../issues/558)) #### AI and Pathing * We fixed a typo in the UnrealGame.Bot.TacticalMove.EngageDirection function. Because of the typo, bNotifyApex and bTacticalDoubleJump were not set to true if Pawn.Weapon.SplashJump() returned true * We fixed an AI bug that made bots unnecessarily prioritize searching for ammo pickups * We fixed an AI bug that made the game find new enemies for dead bots * We fixed an AI bug that could make bots ignore potential enemies if another bot had already selected them as enemies * We fixed a squad balancing bug caused by an incorrect distance calculation in Onslaught.ONSSquadAI.BotEnteredVehicle * We fixed a bug that made the UnrealGame.DomTeamAI.GetLeastDefendedObjective() return the most defended objective instead * We fixed typos that made the SkaarjPack.MonsterController.ClearShot() and UnrealGame.Bot.ClearShot() functions return false unconditionally * We fixed a pathing bug that made bots dodge fearspots incorrectly. We also increased the maximum number of fearspots from 2 to 10 * We fixed a math bug that made the game determine if a bot could hear an enemy behind a wall incorrectly * We fixed a math bug in the UT2k4Assault.AssaultSquadAI.ShouldSuppressEnemy() function * We fixed a pathing bug that made the game fail to find additional vehicle paths when Engine.GameInfo.bLiberalVehiclePaths was enabled * We fixed a pathing bug that made bots always go for the last detour they found rather than the best detour they found when they could not move directly to their desired destination * We fixed a pathing bug that could cause bots to incorrectly believe their destination was unreachable * We fixed a pathing bug that made bots sometimes think they could not reach their destination by jumping when they actually could * We fixed a pathing bug that made bots constantly trigger computationally expensive ledge checks * We fixed bugs in SkaarjPack.MonsterController.NotifyBump() and UnrealGame.Bot.NotifyBump(). These bugs made camping bots move out of the way when a different player bumped into them, even if that bot was not actually blocking the way * We fixed a bug that made the UnrealGame.SquadAI.CloseToLeader() function return an incorrect result on maps with water volumes in the middle * We fixed a bug that could make bots try to grab a super pickup when another bot was already much closer to it * We fixed typos in the UT2k4Assault.ASGameInfo.TweakSkill() and UnrealGame.DeathMatch.TweakSkill() functions. Because of these typos, the game would incorrectly set the skill level of the bots on the human player's team. Since this bug fix has the potential to change the game balance in single-player mode, the bug fix is optional and disabled by default. To enable the fix, you can set bTeamBotsAsEpicIntended to True in the [UT2k4Assault.ASGameInfo] and [UnrealGame.DeathMatch] sections of the game ini #### Miscellaneous * We now support command lines longer than 1024 characters * We backported UT 469's FMemCache implementation. This will give us some decent performance improvements on some maps * We fixed several bugs that broke game relaunching on Linux and macOS * We fixed several bugs in the Cache Manager, including one where it would list all packages containing a "ut2" substring in their name as maps * We fixed a bug in string handling which truncated the last character in some cases * The correct line endings for the operating system are now used when writing to filelogs ### Stability/Security Fixes #### Unreal Editor * We fixed a bug that crashed Unreal Editor when converting meshes to brushes * We fixed a bug that crashed Unreal Editor when you opened a map while the 3D viewport was in realtime mode * We fixed a bug that could crash Unreal Editor when selecting something in a 3D viewport that uses D3D9Drv * We fixed a bug that made UnrealEd crash when importing certain skeletal meshes ([#115](../../issues/115)) * The terrain editor no longer crashes when the TerrainMap is null ([#120](../../issues/120)) * The terrain editor no longer crashes when the terrain has a scale of 0 ([#139](../../issues/139)) * We fixed a bug that made the editor crash when deleting a shader texture and selecting another shader afterwards * Unreal editor no longer crashes when undocking the static mesh browser * We fixed a bug that crashed the editor when you moved the fade in/out sliders in the particle editor * We fixed a bug that could crash the editor when selecting a list box ([#435](../../issues/435)) * We fixed a bug that would crash Unreal Editor when scrolling in an empty scene manager window * We fixed a bug that would crash the editor when trying to render projectors after importing t3d data * We fixed a bug that made the editor stop responding after closing modal dialogs * We fixed several bugs that could crash UnrealEd when trying to play, export, delete, or rename a sound when no sound was selected in the sound browser ([#481](../../issues/481)) * We fixed a bug that made UnrealEd crash after right-clicking an item box ([#484](../../issues/484)) #### Networking and Netcode * We fixed a networking bug that allowed players to perform illegal combo moves and to crash servers * Clients no longer hang in connecting screen when server has too many server packages * We fixed several vulnerabilities in the ut2004:// URI handler (Thanks Hacker Fantastic for the advisory!) * We fixed a crash that would happen when joining online games while recording a demo * We fixed a bug that made maps like DM-HUT-Gephyrophilia crash clients connecting to dedicated servers ([#382](../../issues/382)) * We fixed a bug that would crash the game when it failed to open a voice channel (e.g., while switching maps) ([#465](../../issues/465)) * We fixed a security bug that allowed players to call replicated functions without the necessary permissions to do so * We fixed a bug that crashed the server when loading too many mutators ([#79](../../issues/79)) #### Audio and 3D Rendering * We fixed a bug that could crash the game when rendering skeletal meshes with invalid hierarchies * We fixed a bug that could crash the game when rendering particles emitted by invalid skeletal mesh actors * D3D9Drv no longer crashes when trying to set an unsupported display mode * We fixed a bug that made AntiTCC crash after changing your audio settings * We fixed a crash that would occur when the game attempted to register an anti portal in a zone without zone info * We fixed a bug that could crash the game while trying to render a weapon without an owner. These crashes typically happen when you import an Unreal or Unreal Tournament (99) map into the UT2004 editor #### Physics * We fixed a bug that could make the game crash when an emitted particle collides with an actor * We fixed a bug that could make the game crash while logging karma physics errors #### UnrealScript * The game should no longer crash if you click a tab in an in-game menu whose content is still being rendered * We fixed a bug that could make the game crash when calling Engine.Controller.PickTarget while the pawn, level, or game is invalid * We fixed a bug that made long map lists crash servers upon startup ([#384](../../issues/384)) * We fixed a bug that crashed the game when invoking the garbage collector from actor state code. This made maps such as AS-Convoy crash if you launched them with the quickstart parameter set to true ([#420](../../issues/420)) * We fixed a bug that crashed the game on maps with invalid MyLevel code (e.g., VCTF-ThermalPlayGround-2) #### Miscellaneous * We fixed a bug that made the game crash when reading an Unreal package with an unexpected GUID * We fixed a garbage collection bug that made the game crash upon shutdown * We fixed a bug that made the game randomly crash when it tried to write to the log file during shutdown * The game will now fail to load (rather than crash) packages with invalid package headers