When speaking to Kotaku last week about the issues afflicting Rage on the PC, id’s Tim Willits and John Carmack laid much of the blame at the feet of graphics drivers from AMD and Nvidia. Carmack went so far as go call the driver issues "a real cluster !@#$," which is a term perhaps better reserved for Rage‘s PC release as a whole.
Drivers clearly bear some of the blame. Some of their initial flakiness can probably be attributed to the fact that Rage uses an OpenGL renderer, while just about every other new game released in the last few years has relied on the DirectX API. I’m sure you can guess which API has received more attention from driver engineers at AMD and Nvidia.
Rage has been in development for quite some time, so it’s not like its use of OpenGL was a big surprise. Carmack says id even made "significant internal changes" to improve performance with Radeon drivers and hardware. Then AMD went and released a "Rage performance driver" with the wrong OpenGL component. Smooth.
Some of Rage‘s PC problems have little to do with drivers, and many of the most prominent complaints are addressed in an update to the game that hit Steam this weekend. The official release notes are pretty lengthy, and they begin with an odd explanation of why some of the changes weren’t included in the official release.
RAGE defaults to lower video settings to allow the game to work on a wide variety of hardware and software configurations. Unfortunately, it is not possible to anticipate all possible graphics driver issues in combination with unique end user hardware and software configurations. For this reason RAGE does not automatically increase video/graphics settings as this could result in negative side effects on specific hardware and software configurations. The original release of RAGE does not expose many video/graphics options for people to tweak because some of these settings, although desirable from a quality perspective, simply will not work on specific configurations either due to hardware limitations and/or driver bugs.
id is no stranger to developing PC games, so I’m surprised it thought removing graphics options was more desirable than risking some of them not working on specific hardware configurations. It’s not like previous id games haven’t exhibited "negative side effects" when graphics settings were pushed beyond the capabilities of the underlying hardware. None of those games included a fancy auto-balancer that dynamically adjusted detail levels to hit a 60 FPS target, though.
After warning that not everyone will be able to use the new graphical settings incorporated into the Rage update, id goes on to detail the major changes:
– Implemented workaround for AMD driver crash right after intro cinematic on Win 7 32-bit systems.
– Disabled UBOs because they are causing animation issues with AMD drivers.
– Don’t allow swap-tear to be enabled on AMD while the extension is not exposed because it may crash.
– Support for new video settings: "texture cache", "vsync" and "anisotropic filter"
– Automatically adjust vt_maxPPF based on the number of available cores.
– Improved performance for SLI cards when GPU transcode is enabled.
– Fix for GPU Transcoding option being disabled after exiting gameplay.
– Added safe mode to restore video settings to default values.
– Allow g_fov to be changed from the RAGE launch options in Steam.
– Server now forwards text chat from clients to all other clients while in-game.
Those new video settings appear in the game’s options menu, and they’re not as granular as one might hope. The texture cache defines how much texture data to keep in video memory, and it can only be toggled between "large" and "small" settings. If you don’t have enough memory, id warns that using the large setting might cause the game to crash. Unfortunately, it doesn’t indicate how much video RAM is enough to run the game with a large texture cache. The addition of a command-line switch to launch the game in safe mode should ensure that you can back off any graphics settings that cause Rage to crash.
I just fired up Rage on a GeForce GTX 470 with 1280MB of video memory, and it seems happy with a large texture cache. The game looks much better, as well—at least as good as it did after applying Nvidia’s suggested config-file tweaks. (I got rid of my config files before applying the update.)
id has added a similarly basic anisotropic filtering setting that one can toggle between "high" and "low" values. There’s no word on what those high and low values represent, but the engine’s aniso support appears to top out at 4X. Given the number of antialiasing options in the game, I’m a little surprised the aniso options are so sparse.
At least you get a third option with the new vsync setting, which can be turned on, off, or set to a smart mode that uses a new "swap-tear" extension that id hopes will be supported by future graphics drivers. In smart-vsync mode, the game may exhibit tearing if the frame rate drops below 60 FPS. id views occasional tearing as less of a penalty than having to wait a full screen refresh cycle for the display of another frame.
The new vsync control doesn’t appear to work with Nvidia’s current beta drivers, which require additional tweaking to eliminate tearing. Scott got vsync working this weekend by forcing it on in the Nvidia control panel and in the individual profiles associated with rage.exe and rage64.exe.