Going to detract a bit and have a very technical post than usual. I apologize in advance. Since the background is rather wordy, I’m going to start with the assertions, then the context under the cut.
The point of this post:
Windows 7 must include a fully patched DirectX installation.
Users of Windows 7 will still need to run programs in DX10 and DX9. There’s no reason why the OS should be updated to the latest of DirectX; Especially when the updates are over four years old.
Windows Update needs to include DirectX as apart of updatable software.
Of all the ‘optional’ and ‘critical’ software that Windows Update includes, updating a core API as DirectX is to Windows should be one of them. Updating DirectX is crucial for any graphics intensive program, especially Games for Windows. Why not include it, even as an ‘optional’ update?
DirectX needs real version identification
Did you know there are at least 17 versions of DirectX 9.0c and 8 versions of DirectX 10? All of which report with only on version number?
Did you also know that Vista still needs updates to DirectX9, but wasn’t included when Vista was released?
This makes it very hard to do technical support when no one can decree a realistic version number.
The Context:
For anyone who’s played games on Windows, you may be familiar with Microsoft® DirectX. DirectX is an API and acts as a bridge between software with advanced sound and visual needs and the array of devices and drivers on your computer. There are others¹ for other and operating systems and platforms, but these problems are for DirectX specifically.
Without these APIs, each software would need to program for every possible graphics and audio card in existence individually. With an API, software needs only to work with the API and drivers of devices needs only to work on the API. From there, new software or new hardware can be released and still work without massive overhaul.
For Strong Bad’s Cool Game for Attractive People, the engineering team developed what I nicknamed a “Flash” shader in order to achieve the similar look of the Flash animation into 3D graphics. The graphics would work on Windows so long as the user’s Windows computer had at least DirectX 9.0c – Aug 2007 installed.
I have to include the date with this version number as Microsoft stopped incrementing version numbers, even though releases were made after 9.0c on a bi-monthly and now quarterly bases. Yet any callable version number are all listed under “9.0c” or “4.09.00.0904″, which is the primary version for Windows XP SP2, released in August 2004. Even when you update DirectX, the same version number is reported.
The problem: We needed users to have August 2007′s release or later. Upon research, I found a form of version numbering with DirectX. If you look in “C:\Windows\System32\”, you’ll see a series of files named “d2dx9_**.dll”, the ** being a range of numbers starting at 24. The ’27′ being the August 2007 DX9.
Windows XP (RTM / SP0) included DirectX 8.1. Windows XP SP2 included DirectX 9.0c. Only after SP2 did the “_**” updates start. To add more insult to injury, Windows Update doesn’t check or update DirectX. Ever. While they’ll include optional software and Office updates, DirectX gets the shaft.
My saving grace is the DirectX updaters will update all versions on all platforms of Windows in one installer. There are two flavors, one large installer for off-line updating, and one small and web-based. The web installer downloading the components needed at the time of install. I included this with the Strong Bad episodes. It’s worked out, but it adds a step in the install process by asking to do an install one doesn’t expect.
By now you may be thinking: “But Vista is on DirectX 10 and Windows 7 on DirectX 11. Certainly there isn’t an issue because it’s later version!” Oh how I wish this was true. Normally when one thinks of software version numbers, the higher number replaces the lower numbers. In the land of DirectX, the version numbers are modes that run independently of each other. While you have Vista, you still run DirectX 9 unless the software specifically requests DirectX 10. Since DirectX 10 doesn’t run in Windows XP, very few games run in 10. If they do, there’s a DX9 version along side it. Even with DX10, there’s quarterly updates. Still, this isn’t updated via Windows Update. Meanwhile, users still need to update DX9 and DX10.
Try explaining all of the above to users with Vista. “But I have DirectX10 which is more up to date than 9!” Yes you have DX10, but you don’t have the latest DX9 which you still use. The DirectX installers I mentioned above work on all platforms, which is something. However, it’s still left trying to instruct users to run the installer, which goes upstream from conventional thinking.
So in light of all of this, I tried the Windows 7 beta (using VirtualBox on my MBP). You would expect the latest released updates of DX9 and DX10 right? Wrong. What ships is the DX9.0c before the updates, and DX10 from the original Vista RTM release. Since DX11 is still in beta so there are no quarterly updates to speak of. I honestly can’t fathom why they wouldn’t roll the updates in at this point. It’s inexcusable.
¹ Other APIs like OpenGL, OpenAL, etc exist and do a great job, but require a full client-side install on Windows.