It appears every driver after Catalyst 11.2 has a bug in Unreal Development Kit. I would have noticed this sooner if I used UDK more often this year. I don’t know how many cards this affects, it might just be for older cards. I’m on a 4870×2.
Anyway the solution is simple, put 11.2′s dx9 dlls into the binaries folder of UDK. Installing the whole 11.2 driver set for the whole system is not a useful workaround, since most people would need fixes or performance gains seen in newer drivers.
So grab the dlls, then place them into the appropriate folder:
For the 32bit editor and game: put atiumdag.dll into \Binaries\Win32 For the 64bit editor: put atiumd64.dll into \Binaries\Win64
If you’re using RadeonPro to force crossfire profiles, it will overwrite the dll that you placed, so you’ll have to use the driver version compatibility feature to use 11.2′s dll. I would instead just make a copy of and rename the 32bit UDK.exe into AliceMadnessReturns.exe to get crossfire scaling when launching the game.
I finally got a standalone UDK game working. I’ll make some kind of a tutorial, at least about the flash resolution buttons.
The main point was to get all of the custom stuff functional and out of the way. Now I can focus on content. Here are the ‘features’:
-standalone packaged installer
-custom splash screen
-custom intro movie
-custom menu background level with matinee camera loop
-custom menu in flash with resolution changer
-custom gametype in 3rd person
-custom map
-custom AO/post process chain
-custom sounds
Quick tip for Unreal Engine: Fix the awful defaults. Mainly, set the smooth framerate option to match your refresh, enable vsync, and disable mouse smoothing.
Any movement or animation on any monitor screen is visually smoothest when it’s synchronized to the screen’s output, or refresh, rate. Vsync does just that. The Aero theme of Vista/7 looks nice and smooth when things are moving because it always has vsync enabled. Similarly, games should also have it enabled whenever possible. This even applies if you’re getting lower fps that’s not completely aligned to your refresh. For example in Crysis, I’ve seen it go around 35-45 fps, but looking really jerky until vsync is enabled.
Watch out for increased input lag, however. This is when you push a button or move your mouse, the action that should appear on screen gets delayed. Different engines handle this side effect better than others. Source engine appears to get almost unplayable with vsync enabled, unless you cap the game with fps_max (removed in Left 4 Dead and Left 4 Dead 2, so it’s a little more annoying). Unreal seems to be quite nice with vsync, especially since the engine can be set to render only up to your refresh to avoid the input lag seen in Left 4 Dead. Unreal also appears to have triple buffering built in, helping if your system cannot render as fast as your refresh: It won’t just jump straight down to half fps, but render as fast as it can with light ticking stutters.
Anyway, on with the Unreal tweaks. You’ll need the *Engine.ini and *Input.ini files for the game you’re adjusting. You’ll have to figure out where they’re located, but it’s usually either in MyDocuments or AppData. Here are a few:
Borderlands
MyDocs\My Games\Borderlands\WillowGame\Config
Mass Effect
MyDocs\BioWare\Mass Effect\Config
Mirror’s Edge
MyDocs\EA Games\Mirror’s Edge\TdGame\Config
Section 8
MyDocs\My Games\Section8\S8Game\Config
UT3
MyDocs\My Games\Unreal Tournament 3\UTGame\Config
Under the Engine.ini, find the smooth framerate parameters. When set to false, I noticed lots of stuttering in Mirror’s Edge, so I always keep it on just as it is by default. I just put the min at 0. More importantly, fix the max since it’s always at 62 at default (why!), make it 60 or whatever your refresh rate is:
Also find the vsync toggle if there is none in your in-game options, might as well do it now since you’re in the Engine.ini:
UseVsync=True
Now go to the Input.ini. It seems that in Unreal Engine, when you’re fps starts dropping with mouse smoothing enabled (which is usually default), the mouse movement starts accelerating! This completely throws your aiming way off. Turn smoothing off and your movements should be the same on screen whether you’re 60, 40, 20, or any fps:
bEnableMouseSmoothing=false
Now your Unreal Engine based game is as smooth as it can be! Unless of course your system isn’t powerful enough to sustain 60/refresh framerates, but it’s still less jerky than if the image was tearing or your mouse control was changing speeds. Have fun!
Of course, this is all separate from any actual in-game options that raise or lower details. Even if you can’t stay at a constant 60 (or whatever your refresh is), these tweaks still apply to make it smoothest even at lower fps.