Why Steam Makes You Reinstall DirectX

By Alec Meer on August 3rd, 2011 at 2:29 pm.

Photoshop!

“Oh God, not again – can’t I just play the damned thing? WHY? [Stomp, stomp, stomp.”] This is a sound surely as familiar to the residents of the Brunswick area of Brighton as are the constant squawks of seagulls fighting over the contents of their recycling boxes. This is a sound I make, or at least variations upon it, every single time I first run a game I have downloaded via Steam. This time, I always think. This time it won’t ask me to install DirectX again first. Surely the 1023rd time’s the charm. That dream will likely never come to pass. However, at least we now know why – Valve have explained this particularly modern annoyance.

It’s to do, apparently, with the design of DirectX itself. Says John McCaskey, a software engineer on Steam, in response a forum post lamenting the need to apparently install DX every time:

“This is not a matter of making sure your overall DirectX install being up-to-date. Microsoft has a helper library with D3D called D3DX. There are over 40 different versions of the D3DX library for D3D9 alone, and many more for D3D10 and 11 as well. Each game that uses the D3DX helper library is linked to a specific version. As such the game must run the correct D3D installer version that it was specifically compiled with to ensure the binaries exist. Even if a later version of the binary is already installed, that version cannot be used, and even if your DirectX install is up-to-date because you’ve run a more recent version of the installer that is not guaranteed to have installed all previous versions. Even worse, if a version is installed for x86 it doesn’t guarantee the same version is installed for x64, so 64 bit and 32 bit games may need to run the same exact installer version but targeting different platforms when run.”

This is ultimately to our benefit: “The code to check correctly and repair broken installs all exists in the installer and running it is a guarantee that the correct binaries will exist when you run the game and prevents lots of bad cases where a game would fail to launch with an obscure error if a windows install was either missing the correct version or somehow corrupted in the past.”

Dependencies may also change every time a new version of DirectX is released. On top of this, Microsoft prevents anyone else from distributing standalone DX files themselves, so “the only way to distribute them is to run the installer, that’s also the only supported method from Microsoft to check that the correct version installed.”

Some games, such as Valve’s own Source titles, require only the core DirectX to be installed, and thus don’t require the install process the first time you run them. There are apparently theoretical ways to have Steam check if the precise DX files are installed by any other game and share them with whatever new one is demanding them, but this creates a lot of hassle for developers and might result in tons of duplicate DirectX installs.

Short answer: don’t hold your breath, although they are aware of the annoyance. There’s more on this here. Via Reddit.

, , .

126 Comments »

Sponsored links by Taboola
  1. starclaws says:

    Better that they install them than go with the old ‘missing dx.dll’ stuff.

    • tenseiga says:

      THIS! Microsoft has kind of broken away from all backwards compatability around the time directX 10 started (not just in directX in philosophy see vista, docx and everything else).

    • Casimir Effect says:

      I’m actually surprised I haven’t been seeing that error/crash more often, seeing as before I launch a Steam game for the first time I edit the installscript.vdf file to stop it trying to install things I thought I knew were there already – such as a DirectX install.

      Now I know it’s a necessary and harmless thing then I might stop doing that.

    • Walsh says:

      Microsoft has kind of broken away from all backwards compatability around the time directX 10 started (not just in directX in philosophy see vista, docx and everything else).

      As someone who has to deal with Windows 7 and AppCompat professionally, 9 times out of 10 its dumb developers who wrote bad code that was exposed while moving from XP to Vista/7.

      Microsoft provides oodles of tools to fix app compat, more than most vendors. For example, there’s a docx reader application for previous versions of Office and OS compatibility modes for executables in Vista and Windows 7.

    • badoli says:

      “Microsoft provides oodles of tools to fix app compat”

      That sounds to me more like Microsoft is delivering workarounds for the mess they created in the first place. Not every small developer can afford to know each and every dx-info there is on this planet. Seriously, why can’t MS build a proper standard that isn’t fragmented like this…?!

    • Daedalus207 says:

      Walsh – I agree with your sentiment, but the Windows SxS (Side-by-side) install stuff can be pretty tricky. Essentially this technology allows you to have any number of versions of the same .dll installed at the same time, and the applications you run will select the version that it needs. Which, as the gentleman from Steam pointed out, means that you can have the latest version of something installed and still not have the correct version that your application needs.

      By the way, the version that “the application needs” is generally (not always but usually) the same version as was installed on the computer that originally compiled the source code.

      The software company I work for use OpenGL rather than DirectX for rendering (CAD/CAM software rather than games), but the Visual C++ 2008 runtimes have been particularly problematic for us in the past. It can lead to some pretty confusing “but it works fine on *my* machine” situations.

      As you said though, we had to make huge changes to fix our product when trying for our “Windows Vista” logo a few years ago, but I see a lot of companies in our (relatively niche) industry aren’t bothering, and are doing things like installing to C:-Product Name- rather than in Program Files, because making your software work with UAC is hard.

      As bad as it might seem, it’s still better than the old “DLL Hell” we had to put up with in the olden days of Windows 9x.

    • StuffedCabbage says:

      I’ve always pressed cancel during the instal of the DirectX bit. I’ve got about 300 games on Steam and have never had a problem with it.

    • Saarlaender39 says:

      @starclaws: exactly my meaning

    • linchuancool says:

      There is a soft would help to solve the all problem of Reinstall DirectX within a few clicks: Reinstall DirectX EZ
      Reinstall DirectX EZ

  2. Nalano says:

    So DirectX is an evil Microsoft plot to make Steam more annoying and therefore generate sales of the 360?

    It all makes sense now…

    • DK says:

      Actually it’s a ploy to kill of Windows XP. A failed ploy mind you.

      What happened, is that, with the coming of Vista they decided to “encourage” developers to stop using Dx9 and switch to the Vista exclusive Dx10. They did that by locking a lot of features to Dx10, and breaking Dx9 from one standard into dozens of sub-versions, each of which needs files that are incompatible with previous and latter versions.

    • ScubaMonster says:

      XP is ancient. Move on already.

    • LionsPhil says:

      Only in the mind of the feverant Microsoft-basher is “maintaining DirectX 9″ the same as “trying to kill it by breaking it into incompatable subversions”.

      Would you rather they said “nope, no more updates for XP at all, buy Vista or fuck off?”

    • Premium User Badge

      Harlander says:

      Haven’t they said that now?

    • LionsPhil says:

      If you’re on SP3, it’s “supported” in the “we will still release security updates” sense until April 2014. Yes in so far as feature updates; looks like they stopped touching DirectX 9 in June last year.

      XP was released a little shy of a decade ago. Try getting new feature (or even security) updates for MacOS X 10.1 now. Or for Ubuntu Warty Warthog (which is actually much younger, at under six years).

      Was making DirectX 10 Vista-only and trying to get developers to only support DX10 a dick move when Vista was new? Yes. Not adding a feature to XP is not trying to kill it, but then trying to force that feature to be more essential (play the game at all) than it technically is (play the game with slightly prettier graphics) is certainly trying to force it to become artificially obselete.
      Will I still say DX10/11-only games are cutting their own tendons? Yes, because Steam’s survey is still showing about a quarter of people won’t be able to run them—it’s a very big hump in scaling down for older hardware.
      Are there technical reasons why DirectX 10 can’t be backported to XP without a lot of work that doesn’t make a great amount of business sense? Maybe, there was a driver model shift. It’s hard to judge how much is planned obselence and how much is genuinely technical without digging deep.
      Does this make creating new DX9 versions “trying to break it into incompatable subversions” to kill XP? No.

    • Premium User Badge

      FriendlyFire says:

      Many people have said already that DX10 and now 11 are very in-depth rewrites. They’ve retooled, redesigned and rebuilt much of DX to the extent that it’s much easier to use and modern, but no more compatible with DX9 and below.

      From an end-user’s standpoint, this might be a dick move, but just supporting DX10/11 removes a lot of hassle. If you’ve ever compared between the old MFC/Win32 programming and .NET programming (even if just VC++), you’ll understand how things have evolved. In fact, I wish Microsoft would cut loose the last few compatibility pieces so that the underlying engine is leaner, faster, cleaner and most importanty, easier to use.

      It’s always funny how people clamor for backwards compatibility all the way to Win95, yet complain when the next OS is slower than the last one. Each new layer of compatibility adds weight and brings the OS down; I won’t say it’s the sole reason, but it definitely IS a reason, and a quite large one at that.

    • LionsPhil says:

      Not really—you can write the New Thing then provide a layer on top of that for the Old Thing. The only thing suffering a performance penalty is then the Old Thing, and that’s fine because it’s for Old Software with Old Hardware demands. I believe this is the way round some of the audio changes for Vista went (a quick poke at Wikipedia seems to confirm that everything—like old MME—sits on top of WASAPI now), and had that “DirectSound isn’t hardware-accelerated any more” side-effect that made Angry Internet Men quite peevish and nobody else noticed.

      And as for your “large reason”—always back up claims for causes of performance issues with profiling. ;)

      But your post seems pretty confused. Microsoft haven’t made Vista/7 DX10/11 only. DirectX 7/8/9 games run fine under it. The dick move was encouraging game developers to write games which couldn’t downgrade to DX9.

    • IDtenT says:

      What I heard when Vista was released, I’m not sure if it is true, is that the older DirectX versions were run in a VM on top of DirectX10.

    • Wulf says:

      @LionsPhil

      …what? Warty Warthog is still being supported, there are repositories for it, even.

      Some of the things you say confuse me terribly.

    • LionsPhil says:

      new feature (or even security) updates

      Ignoring words to form an argument just makes you a terrible person. Old Ubuntu distributions still host archived repositories, but those repositories are frozen. Warthog will never see new versions of software (like, say, Firefox) or patches for newly-discovered vulnerabilities.

      You can install Windows 98SE from CD and still get all the Windows Updates down, too. I’ve done it within a year ago. That doesn’t mean it’s still supported.

  3. Alextended says:

    Hmm, I’m pretty sure I cancelled the installation of DX for various games I got off Steam without any issues. Sometimes it would try to install it again the next time I run the game but that could also be fixed by just deleting the DX setup files from the game’s folder. So they can definitely skip the annoyance at least for a portion of their library. That would be nice. Maybe MS could just make a DX11 update that includes everything eveywhere so only that is needed from now on. Or future updates. Making one recent install sufficient for all future games. I wonder how much space I’m losing just due to the repeated DX setup files. Can’t Steam at least have a central DX folder instead of have those files with every game? The same for all the Visual C++ redistributables…

    • Phoshi says:

      Like the man said, the installer is the only reasonable way to CHECK if the correct DX is installed, not just to install it. And, quite honestly, if you’re seriously worried about a couple of small installers, why are you installing many multi-GB video games?

    • LionsPhil says:

      1) I’m pretty sure the “Cancel” button in Steam’s preparing-to-run dialogue does nothing but hide the dialogue. I’ve cancelled on step 1 of 3 for things before and yet still seen the installer for step 3 run. (For example, Magicka’s broken DX setup that throws an error dialogue.)
      2) They are almost certainly system-wide installs, and thus are shared.

    • Alextended says:

      Wondering does not mean worrying Poshi. I dunno what gave you that idea. And I dunno when you last checked my hard drives but there aren’t many multi-GB games installed on any of them. Not that this is relevant in any way.

      Lions, check your Steam games’ specific folders, the setup files for DX and VC++ will still be in many of them. Sometimes in folders named “install” others in “redist”, “dependencies”, “installers”, “directx” or whatever similar. Or are those the actual needed installed files or something? It doesn’t seem like it…

      And I didn’t mean I cancelled Steam’s own dialogue, it used to (if it really doesn’t anymore) get an actual standard MS installer to pop up for DX and VC.

    • Shivoa says:

      You’re not losing any space, the installer (which runs exactly once for each new game you install, not a major time sink to many after the 5GB download that triggered it – maybe Steam could think about prioritising the DX setup file in the download and running it before the rest of the game had completely downloaded, thus meaning the step took even less time away from the user playing games) checks for the files it needs to be there, libraries that are called by the game and that, if missing, could cause significant errors or even devious once when calling the wrong lib version due to subtle changes in the lib behaviour (those small errors that rob a game of a good technical base and slowly drive users crazy trying to figure out what is going on that means their game almost works right). If it finds the files already there it does nothing, otherwise it adds the required files.

      So if you installed 20 games that all required the same D3DX libs (say March 2010 x64) it would run the same installer 20 times as you installed the games but the 19 subsequent times it would just confirm the files were present and not install anything new. It isn’t a slow expansion of your Windows install growing it into an unmanageable mass of complex links. The installer simply checks for files and adds the ones that are missing. Running the installer several times will not cause any problems.

    • LionsPhil says:

      Ah, sorry, missed that you were talking about the actual DX installers rather than the DX installations.

      I don’t seem to actually have any on this machine, due to lack of third-party games, but I’ll take a ballpark guess that they’re small enough to not care about, especially if the web setup version that dynamically downloads anything that’s actually needed.

      Perhaps Steam could track that “this file isn’t part of the game; it’s part of the dependencies of the vdf script that prepares the game and can be downloaded/deleted as (un)-needed by it”. I’m not sure if the payoff would be worth the complexity and time taken from working on other features, though.

    • TillEulenspiegel says:

      but I’ve found most tutorials either outdated or bad.

      That too. Microsoft sample code* is almost uniformly awful. Who writes C like that?

      * Can’t comment on .NET and such. I’m stuck with Win32 and the DDK.

    • Urthman says:

      maybe Steam could think about prioritising the DX setup file in the download and running it before the rest of the game had completely downloaded

      THIS.

      (While I’m dreaming, maybe Steam could download the main .exe and the first level of the game so you could start playing while the rest of the game downloads?)

    • Wulf says:

      If you have your Windows 7 security cranked up to maximum then you can simply tell Windows that you don’t want to run the installer that time, without touching the install.vdf or attempting to cancel the dialogue.

      If then you discover that the game doesn’t work, you can simply restart it and opt to install that time.

    • jamesgecko says:

      @Urthman Downloading only the assets related to the first level of a game (and making the game not crash when the first level was completed before the rest of the game downloaded) would be game-specific and an even bigger headache than managing all those DirectX versions.

  4. IDtenT says:

    Eh? So basically MS can’t release all-encompassing standardised versions of their API? I smell bullshit.

    • pakoito says:

      Then you haven’t used much of MS programming stuff. Everything by them is *usually* a poorly documented messy clusterfuck.

    • wccrawford says:

      MS never said they can’t. They said they won’t.

    • LionsPhil says:

      In this discussion: infurating Angry Intenet Men think they know what they’re doing better than people who do it for a living, combined with tiresome Microsoft bashing from people who apparently haven’t looked at the competition.

      Give me MSDN any day over the Linux or Mac world.

    • skinlo says:

      Well you better stop lying in the cow dung and believe it.

    • Kdansky says:

      >Give me MSDN any day over the Linux or Mac world.

      This.

      It’s amusing how easily you can tell who in these threads does some programming and who does not and just thinks they know better.

    • TillEulenspiegel says:

      MSDN: good documentation of a hideous API. Yay?

    • pakoito says:

      Yes, MSDN is quite decent for most api documentation on new stuff, but I’ve found most tutorials either outdated or bad.

      Have you ever tried their Windows Mobile 6 section? Most of the code snippets and tutorials are from WM2003 or older, and the examples only compile in VS2005 for which there’s no plugin anymore.

    • IDtenT says:

      I’m not MS bashing, although some comments in the thread might be. I’ve always enjoyed MS more than Linux and I could never get over the one button Mac. Not to mention the high standard of software MS provides.

      Anyhow, I was refuting Valve’s claims, but I’m willing to retract them. I just don’t get it though. I mean, say you program something in java2 (it’s an analogy, so don’t keel over) in 2002, while using classes provided by the then available SDK, and you want to run said program today, with the latest runtime installed, it /will/ just work. Why doesn’t this work for DirectX? The only conclusion I can draw is either that game developers are mugs at coding or MS painted themselves into a corner by changing previous code in a future revision (of the same version) rather than just adding (or create a new version), which makes no sense.

      Even then, why is MS unwilling to package the whole of DirectX with windows?

    • Walsh says:

      Even then, why is MS unwilling to package the whole of DirectX with windows?

      Most likely because of antitrust whining. I imagine the OpenGL yahoos might throw a fit. Why not include a goddamn media player or internet browser with your operating system too OH WAIT WWAAAAAAAAAAAAAAH.

    • Nesetalis says:

      Next time I have to use the win32 API i’m going to kill myself.. :p fuck microsoft, i’ll stick to Qt, SDL, or worst case, wxwidgets.

    • LionsPhil says:

      Meanwhile, my fresh OS X install has Safari and iTunes, and my Ubuntu one Firefox and Rhythmbox.

      Thanks so much, Europe. That “Browser Choice Selection Screen” was entirely worth everybody’s time.

      @Nesetalis:
      I can agree that the Win32 API is pretty horrendously ratty, although do yourself a favour and run a mile from wxWidgets. I had never encountered a widgeting toolkit that made Swing look well-debugged and kludge-free cross-platform before that.

    • pepper says:

      Indeed, wxWidgets is pretty horrible. I think that puts it kindly.

    • skurmedel says:

      QT, SDL and wxWidgets are all way more high-level than the Win32 API. It is low-level, and for a reason.

      I guess you could complain about it to Gabe Newell, he’s probably responsible for some of it.

    • jalf says:

      Perhaps you should read the article before bashing Microsoft.

      They *do* release “all-encompassing standardised versions of their API”. That’s what DirectX9, 10 and 11 are.

      These DX Installers that run when you install a game do not update the core DirectX library.

      They add a small auxillary library which Microsoft updates whenever they like, *because* it’s optional, and because it’s there to make life easier on developers. And when you install a game, they do a quick check of “do you have this auxillary library”, and install it if you don’t. I fail to see how that is a bad thing.

      They *do* bundle DirectX with Windows. Windows 7 comes with DX11, in case you hadn’t realized.
      The problem is, once again, updates. It’s kind of hard to bundle an OS that shipped in 2009, 2006 or 2001 with a library update released in 2010, after all. And not everyone runs Windows Update all the time, or allows it to install anything it likes any time it likes, so the only way to be sure your game will work when you’ve installed it, is to check that everything the game needs is actually installed, and install it if it isn’t.

    • Faxmachinen says:

      > It’s amusing how easily you can tell who in these threads does some programming and who does not and just thinks they know better.
       
      Since we’re all making smug generalizations here: I bet you’re a VB.NET programmer.
      I for one am much more satisified with Perl and Racket’s documentation. Unlike the MSDN ones they actually seem to have been written by a human. And even though you have to use an external search engine to search Oracle’s Java documentation, the pages still load faster than
      +-----------------------------------------+
      |                                         |
      |    PLEASE HELP US IMPROVE MSDN          |
      |                                         |
      |    WHILE VISITING HERE TODAY,           |
      |    HOW RELEVANT WOULD IT BE TO SAY      |
      |    THAT YOU FOUND AN ANSWER             |
      |    TO YOUR OWN QUESTION?                |
      |                                         |
      |      0 1 2 3 4 5 6 7 8 9 10             |
      |                                         |
      +-----------------------------------------+

    • Consumatopia says:

      The Angry Internet Men who are pointing the finger at Microsoft seems to be Valve themselves. Look at that post again: “So that’s why we [Valve] do it for lots of game installs. We can’t stop, it’s required due to a bad versioning/packaging scheme as well as bad redistribution licensing terms on the D3DX libraries.”

      Microsoft screwed up here. If there are 40 different mutually incompatible versions of the helper library, then each game should be able to just include its own version of it.

    • gwathdring says:

      @Consumatopia
      Not being a coder or a programmer, that’s sort of how it sounds to me. Even if developers wanted the extra libraries and it has nothing to do with Microsoft doing bad coding or packaging … they could still license the damn thing to allow third-party installers to distribute those packages.

      Anyone with more the installers or about copyright law experience know a good reason not to do that?

  5. Lewie Procter says:

    I don’t have a problem that it has to update DX with each installation, but I wish it did so silently, so that I could leave a game downloading, and it would have automatically updated DX by the time I wanted to play it.

    • Icarus says:

      This, yes.

    • LionsPhil says:

      The solution to the “problem” is to remove the dialogue and stop people being stupid about it.

      “The code to check correctly and repair broken installs all exists in the installer” is the key here. Duplicating that functionality in Steam to “avoid” running the installer would be much, much worse. This is also almost certainly why Microsoft want people to use the installer and not try to roll their own version of it!

      But, yes, it could assume that once you’ve said “install game X” you’re fine for it to go ahead and install the dependencies for that game too as part of the whole download/prepare process, rather than waiting until you want to play it.

    • Joc says:

      What an adequate solution. Hats off.

    • jalf says:

      Yup, the real problem is Microsoft’s fundamental inability to develop sane installers, not that they have the audacity to update DirectX in order to improve it.

      In an ideal world, Microsoft would allow this installer to just do its thing, without popping up and asking the user to click OK.

      But this isn’t an ideal world, and Microsoft software is developed to emulate a 6-year-old starving for attention. Why just *do* something, when you can ask for permission 3 times, and then continuously deliver progress reports, before proudly telling you 3 times that it’s done what you told it to do.

    • LionsPhil says:

      Uh, Jalf. /silent option. Been around for a long, long time. Most games I’ve installed from Steam actually do use it now, so you never see more than Steam’s own “installing” dialogue. The ineptitude is people not using it.

      Here, have a towel for your egg.

    • jamesgecko says:

      @LionsPhil
      The DirectX installer triggers a UAC dialog. It appears to be installing library files to a system directory, so there’s not really a sane way around that. Short of disabling UAC, which may or may not be sane.

  6. Zarunil says:

    I haven’t installed a new version of DirectX in God-knows-how-long, and all my games run just fine.

    Edit: Come to think of it, I can’t even remember being asked to install DirectX when downloading any games from Steam. Am I crazy?

    • Xocrates says:

      Steam hasn’t asked me to install Direct X in a long time either, but on first launch it does check if Direct X is up to date.

  7. pakoito says:

    Bad API design by Microsoft? That’s new.

  8. Kablooie says:

    I would be nice if, at least, a dialog popped up and said “Your Direct X installation is up to date, no changes occurred” or something to that effect. Always makes me nervous (particularly with older games) that it’s overwritting new files with old.

  9. Alexander Norris says:

    This has been known for quite a while, now – I’ve explained it to quite a few people in the RPS comments over the last year or so. I’m not really sure why it took someone reiterating it on the Steam forums to make the news.

  10. Kdansky says:

    This is one of those topics where dozens of RPS commenters think they know better than MS.

    You don’t. This is a very good way to do things, because it allows multiple versions of the same API at the same time, without running into DLL-Hell syndrome (much).

    If you want to look for the files, they are called “Jun2010_d3dx9_43_x86.cab” during install, with the 43 being the DX9 version from the Jun 2010 SDK, obviously, and the dll will be called “d3dx9_43.dll” in this case. If you want to check what versions you got installed, do a search for all “d3dx9_*.dll”. Most of us will have a few dozen versions of it, or so. And then the same for DX10 and DX11, of course.

    • meatshit says:

      Agreed. I’ve had problems running old games but DirectX was never one them. It’s clunky, but it’s a fool-proof way to ensure long term compatibility.

    • Ajh says:

      Also, these extra DLLs don’t use up much space at all, nor do they run when they’re not being used or slow your system down in any way as far as I understand it.

    • Kdansky says:

      They are about a MB each, and will only be loaded when a program requires them. Every directX program will require exactly one of them (the version it was built for). The theoretical overhead of having multiple versions installed at the same time is pretty much irrelevant compared to any other possible solution to the problem.

      I mean, how are you going to update DirectX without breaking every single old game if you don’t support more than one version at one time?

    • jamesgecko says:

      @Kdansky

      In this case, it’s possible we do know better. If you read the whole post, the Valve guy says:

      “Furthermore, Microsoft’s licensing terms prevent anyone from distributing the files directly, the only way to distribute them is to run the installer, that’s also the only supported method from Microsoft to check that the correct version installed.”

      But for the licensing issue, Valve would be able to smooth the process out a bit.

    • Milky1985 says:

      “Every directX program will require exactly one of them (the version it was built for). ”

      From what i have seen/heard this is partially true, the game SHOULD have been devloped to target the latest version, so then it doesn’t really matter what version you have (as long as you have above a certain min version), but some games are developeded and target a very specific version of the dll due to various reasons.

      Its far easier to target a specific version as its static so less chance of external bugs

  11. zipdrive says:

    1) Steam no longer asks, but if you check the installation process you’ll see that it says “installing DirectX” for some of it.
    2) The above explanation is missing something, as from reading it it would seem that installing a new game might fuck up the linked libraries for games you already have installed and that require different versions.

  12. PickyBugger says:

    I see you’ve linked Reddit this time which is good. There have been a couple of topics in the past few months that have clearly been taken from r/gaming but haven’t been referenced as such.

    I don’t really see how people get mad at things like this especially when they have no technical knowledge of what is happening.

    • Alec Meer says:

      You must bear in mind a lot of stuff gets emailed or tweeted to us direct, IMed from friends, etc. The PC gaming community’s tendency to send us story tips is wonderful. So just because you’ve seen something on Reddit doesn’t mean we saw it there. If an RPS writer got something from another site, we do always note it.

    • DrGonzo says:

      What would be wrong with you noticing something on Reddit then posting it here? I don’t understand the fuss.

  13. Premium User Badge

    PoulWrist says:

    On a SSD you hardly register it.

  14. zeroskill says:

    What? They make sure my games run correctly because im a stupid retard that cant keep his drivers up to date himself which results in, if a game would not run correctly I would go and blame Steam because they are responsible because I dont understand anything about how programs work let alone Direct X. *Bangs head against monitor* -sincerely your average SPUFer.

  15. Premium User Badge

    Malibu Stacey says:

    Each game that uses the D3DX helper library is linked to a specific version. As such the game must run the correct D3D installer version that it was specifically compiled with to ensure the binaries exist. Even if a later version of the binary is already installed, that version cannot be used

    http://en.wikipedia.org/wiki/Library_(computing)#Dynamic_linking_libraries

    fail

    • MartinNr5 says:

      Linking Wikipedia is not an accepted form of neither discussion nor argument.

      But I sure hope that the developers at Microsoft and at Valve read the article you linked to as they obviously don’t know anything about DLLs.

    • Premium User Badge

      PoulWrist says:

      You may think you’re clever, but what if I tell you that a DLL can be a binary file? Oh dear.

    • Premium User Badge

      Malibu Stacey says:

      But I sure hope that the developers at Microsoft and at Valve read the article you linked to as they obviously don’t know anything about DLLs.

      Because the developers at Microsoft & Valve are the ones making all the software requiring statically linked DirectX binaries right?

      You may think you’re clever, but what if I tell you that a DLL can be a binary file?

      What? Are you trying to be clever or something?

    • CaspianRoach says:

      @Malibu Stacey

      There is such a thing called rundll32.exe

    • jalf says:

      Er, both DirectX and D3DX (the helper library) are dynamically linked libraries.

      I fail to see the relevance though. Applications using D3DX still link against specific versions of the library, because if they didn’t, Microsoft would have to freeze the D3DX API, and then they might as well roll it into DX, and they effectively wouldn’t be able to improve the library outside major DX releases.

    • jamesgecko says:

      I watched a compiler stuff executable code into a DLL not but hours ago. Yet now I learn that this is impossible? Egad! What horrors have I unleashed? This is division by zero! A temporal paradox!

      The office is locked; I am powerless to stop the carnage. It will have escaped our intranet by morning. By afternoon the internet may be gone. I’m sorry.

    • Rob Lang says:

      Bit of mixed nomenclature here. A dynamic linked library is loaded in at runtime by the calling application. That means you can update it as long as the version of the DLL hasn’t changed. When you write an application, it waits until it needs the DLL and then runs off looking for DX9 version 2, build ABCDE. That’s the dynamic linked bit. Windows hands the DLL to it and everyone is happy.

      Let’s say there is a bug in DX9V2 ABCDE, then they might release a new one and not change the version. The code inside has no new functionality, just a fixed bug. That’s why you want a DLL, so you don’t need to recompile the whole calling application.

      However, each SDK release of libraries like DX (DX is not the only one) needs to take onboard new functionality demanded by the Development and the card community. In June they add a load of stuff, in July they add more and so on. Each time, they add new functionality, they update the build or version number. DX9 becomes DX9v2.1ABCDG. You application was built to run with the previous one and you can’t be sure that the code inside will work.

      That’s where there are so many versions. That’s why you need some custom code in the MSI to work out what is compatible with what. It’s the version checker you really need to run, not the act of installation.

      I hope that helps. Wikipedia is correct but be careful taking the semantic ‘common sense’ meaning of the words because they do not always apply.

  16. Premium User Badge

    Diziet Sma says:

    I’ve been saying that for years when people moan at valve/steam for it, difference here is hopefully people will listen to you guys! :P

  17. Metonymy says:

    I remember years and years ago, having played dos (and apple 2) games for years, the notion of a game being rendered directly within windows seemed typical of microsoft’s thinking: inefficient, dummy-friendly, and completely unnecessary.

    But then! I saw “zdoom” running (at some high resolution) directly in a window, and when converting it to full screen, I was able to switch between it and other apps, not only instantly, but also without requiring the monitor to update the screen resolution or the refresh rate. The multi-tasking was truly instant, and I was in love with it.

    I mention it, because I definitely miss that instantaneous and stable switch, and for me, it was the entire point (Im wrong of course) of a windows api rather than writing code directly for the hardware. Newer games, most notably gamebryo titles, become incredibly unstable or crash if you try to switch focus. Most games require some tweaking before they will switch instantly, and I really wish designers would put a little more time into giving the ADD crowd some multitask flexibility.

    • Premium User Badge

      PoulWrist says:

      Some did this :) It’s called “borderless window” mode :) I love it and am sad whenever it’s not an option.

    • Ajh says:

      I play WoW that way. Windowed fullscreen. One of my guildmates asked me what I was and I said enable it and then hit alt tab. He was amazed.

      I too get sad when games don’t have this feature.

    • daf says:

      Also known as desktop or fullscreen windows, available in allot of modern games, most recent source engine games support the option as Borderless window straight in the menu or you can just make them use it (usually only works for orange box version or above) by using -window -noborder as launch parameters. I play WoW, L4D2, TF2, etc like this.

  18. eclipse mattaru says:

    Reinstalling DX when you’ve done it a hundred times already does seem like a pretty stupid thing to do, but from that to call it “annoyance” or in fact writing posts about it? Are we in such a comfy place that we need to scrape the bottom of the barrel like this to come up with stuff to whine about?

    • Ian says:

      Only that it’s not “coming up with stuff to whine about” so much as “posting about an explanation to something many people have questioned”, is it?

  19. WPUN says:

    No steam. No problem!

    • Sian says:

      Sorry, but almost every game I install without Steam also wants to start a DirectX installation. Even though those ask me whether I actually want that, I don’t see much of a difference to what Steam does nowadays.

  20. LionsPhil says:

    On a tangentally related note, the diagram in this article linked from the forum thread is pretty amusing.

    (See how much you can cross out when you install the game via Steam! [Don’t forget to add boxes for “log in to online DRM system”, though.])

    • Premium User Badge

      Malibu Stacey says:

      The XBOX flow is a bit disingenuous. Some of the steps from the Windows flow like “Check for Online Updates” should be in it too.

    • LionsPhil says:

      It’s from 2005, so presumably refers to the days when consoles were still trying to get the hang of this whole “downloadable updates” thing? The 360 had only been out for about a month.

  21. Scatterbrainpaul says:

    I really don’t like the Brunswick (Pub). The last time I was in there they only had two staff on, on a Saturday night! had to wait 30 minutes for a drink. Luckily the Tesco’s express round the corner had a good deal on wine, so we just bought 3 bottles and drunk them pint glasses in the Brunswick Garden (classy).

    oh yeah, and erm direct x. I have no opinion

  22. Premium User Badge

    li says:

    What’s really neat is that with XP x64, you have to agree each time an unsigned driver is being added. Luckily, DirectX is full of unsigned drivers. So every time I re-install DirectX, I’ll have to click ‘yes’ for every single file! That’s also why I love Microsoft :)

    • Gunde says:

      Wait, what?

      Why the hell are you still on xp x64?

    • Premium User Badge

      li says:

      You’re absolutely right my friend.
      The actual story is that when I bought this computer 3 years ago, I tried Vista. The experience was so satisfying that I nearly immediately decided to stick to XP, but x64. And even if I perfectly know now that I have to switch to 7, I’m still amazed of all the support Microsoft are giving to their older products.. I sure understand that it’s a gigantic task to remove this ‘unsigned driver’ stuff.

    • LionsPhil says:

      XP64’s got a pretty cold shoulder all round, really. Even ME and Vista got treated better—at least the beatings and chastisement that they couldn’t be like their brothers, XP and 7, are some form of recognition. Daddy Microsoft doesn’t even glare at poor little 64 as he ferrets around for software table scraps. Certainly no Microsoft Security Essentials for he.

      I finally gave up on it when I realised that nVidia just weren’t testing for it any more and I couldn’t update my graphics drivers to actually run newer games. (They offer drivers, sure, but they don’t bloody work.)

    • Tei says:

      Soo much for signing. Microsoft don’t seems to really care to even sign his own files.

  23. Forceflow says:

    It’s the most straightforward way to check if DLL’s are in place. The WinSxS system prevents DLL hell – I’d rather have developers use official DirectX installers than manually poking around in my System32 folders for the right DLL’s.

    • Gundrea says:

      Aha! I have completed the code to ensure a game always installs with the right dlls!

      If System32 exists Then:
      rm System32
      mk System32
      install.installourdrivers()
      endif

    • LionsPhil says:

      Somewhere, Raymond Chen is crying because he’s seen that in production code.

  24. Dana says:

    Push ‘cancel’. Its there for a reason.

    • Premium User Badge

      Malibu Stacey says:

      and hope your game still works & then when it doesn’t, you have to run the whole process from scratch to fix it.
      Good luck with that time saving advice.
      You ever think the redistributable is being run for a reason too? Hell the article says as much if you bother reading.

    • Dana says:

      Why wouldn’t it work if I have the latest Dx, net.framework and all the rest ? Like I said on reddit, this option is there for people who dont have any of these at all. Say, after fresh system install, or at work, so they dont have to search and install it manually.

    • Gundrea says:

      It might not work because the version it installs with is the version it was developed for.

      It’s very easy to break an application by running it in a newer framework than it was designed in. Think of all the problems each new iteration of windows has with backwards compatibility.

    • Dana says:

      It might, but it will anyway.

    • jalf says:

      Oh god, no. If you have the latest DX, that doesn’t solve the problem because the game is very likely *not* using the latest version of D3DX. THAT IS WHY IT RUNS THE INSTALLER!

      It’s not to install DirectX, which has come bundled with the OS since (I believe) XP, and which is backwards compatible so that if you have the latest, all is well.

      The installer is run in order to give you *the correct* version of D3DX, which is *not* backwards compatible, and where “having the latest” is **not** good enough.

      Seriously, hit “ok”, wait 2 seconds and hit “ok” again. In the worst case, you’ve lost 2 seconds of your life. In the best case, your game will work.

      If you already had the right D3DX versions, the installer *does nothing*. It doesn’t put gigabytes of data on your harddrive, it just checks that you’ve got the dlls the game needs, and exits if you do.

  25. Derpentine says:

    Errr this guy is on crack, you can always just use the latest redist, so long as its for the correct arch it will include all of the minor point release d3dx.dll’s, installing older versions doesnt hurt, but it’s completely pointless in the long run, considering that the latest one is going to have included the same files anyway.

  26. Tei says:

    Having a lot of different versions of the DLL completelly removes the logic behind having DLL”s to begin first.

    It would be a better idea to statically link all these DLL’s, and get with it.

    But probably what Microsoft/Valve do is better, anyway. I don’t see any problem to see the DX installer popup a few seconds. Is only 2 or 3 seconds, on a installation process that can be some 1 hour long (counting download).

  27. bill says:

    I’m going to jinx myself here, but i don’t remember steam EVER asking me to update directx. I don’t play half as much as the rest of you, but i’ve played a few dozen games on steam and don’t remember it ever happening – or it went by so quick i didn’t notice.
    Maybe it’s cos i don’t tend to play the latest whizziest games – other than valve ones.

    Only trouble i ever had was with Trine which wanted to install the Nvidia PhysX driver – which i naturally cancelled as i had an ATi card. And then i found out i needed it but the previous aborted install made it a pain to ever get it installed again.

    But DX, not yet.
    (i’m SO going to jinx myself!)

  28. Jason Moyer says:

    I don’t mind dxsetup running, since in most cases it doesn’t actually install anything, and it takes about 3 seconds for the installer itself to launch.

    What *does* annoy the hell out of me is every game running the .net, visual basic, and xna installers, since it usually takes a few minutes of staring at a progress bar to even cancel out of them.

    • malkav11 says:

      This is definitely the big thing that bothers me, although I’m guessing there must be something similar going on with those (they are after all all Microsoft products.). I really don’t understand why Microsoft would develop DirectX in this way, though, and I’ve long wished developers wouldn’t tie themselves to a bunch of Microsoft’s proprietary code for core portions of their project in a way that’s inevitably made porting to other operating systems ridiculously complicated, time-consuming and expensive. I wouldn’t expect Macintosh or Linux to have shaken off Windows’ dominance of the computing market, but at least they might be viable gaming platforms today if it weren’t for DirectX et al.

  29. DrGonzo says:

    I don’t actually get this problem. It always says ‘installing directx’ but actually it just checks to see if it’s installed then disapears when it realises its already there.

    • Tuskin38 says:

      @DrGonzo Exactly, if Steam detects that you have the right version installed, it won’t install (notice the installer doesn’t pop up). it will say “Installing DirectX” but it doesn’t actually install.

      I bought EU3+Expansions and installed them and yesterday is the first time I’ve had the actual DX installer pop up for a steam game in a year or so.

    • jalf says:

      No, the DirectX installer does that, not Steam.
      Steam has nothing to do with that, they just launch the installer.

  30. terry says:

    Slow news day?

  31. daf says:

    After reading jmccaskey justification I found his reasoning weird, first and foremost there seems to be a simple way to install all the needed DirectX files including all existing versions of the D3DX library which is to simply run the DirectX web redist, also saying that saving ~90mb (low average, batman for example has 400mb of redists) on a single 5gb game might seem a small saving is true, but you only need to multiply it by the number of games sold on steam to see how it could quickly go up to terabytes saved in bandwide on steam’s part not to mention it would mean downloads finish faster meaning more bandwide available for the next guy, something surelly appreciated during sales were steam servers slow to a crawl.

    I always thought the solution obvious, steam already tracks what’s installed on your computer (just run steam’s system information to see what it tracks), all they would need to do is create a few fake games called DirectX redist, dotNet redist, physx redist, etc and simply attach it to all games that use them, so the same way orange box base is installed when you install team fortress 2, so would those fake games, all steam would need to do when installing a new game would be to run those fake games to reinstall dependencies if they’d been updated since last run or they’re not installed making installation process allot faster and saving everyone’s bandwide.

    So it seems to me that it’s just the typical handling of steam by valve, slowly making only the most needed changes, which means issues like being locked out of steam friends wile doing a “verify game cache” (which funny enough will re-download missing redists case you chose to delete them) or even not being able to select path to install games will possibly linger for eternity :(

  32. Hunam says:

    A lot of people don’t really seem to understand that DX9/10/11 are probably being updated still on a weekly basis. They don’t just hammer out a version of DX9 and call it a day, they constantly evolve it again and again meaning that each game probably does work with a single unique version of the DX binaries each time depending on what they do.

    I also have no idea why a one time install that takes a few mere minutes if that bothers people so much.

    • Odessa says:

      I know right? I don’t find it as an annoyance in the slightest. People just don’t know what to complain about anymore…

  33. rocketman71 says:

    Excuses. It should ask me. Yeah, recommend it all I want, but having Steam launch all those installers every time I buy a new game and in every computer I install it without asking so much as an opinion is just inexcusable.

  34. SquareWheel says:

    But this is obvious and well documented already. =|

  35. i liek turtals says:

    I haven’t read all the comments but I just cancell the installations of the things that are already installed on my computer. After every format I install the latest version of all VC++ redist`s (200x) with their updates. Same goes for DirectX. When the game trys to install these stupid things I just cancel them. Most of the time it runs okay. If I encounter a problem I just go to the game folder and install the “needed” packs from there.

    Although it’d be a good idea for steam to keep ONE directx installation instead of several for every game. I know it’s a lot of work to do but it would shrink the size of the steam folder.