What is going on with DirectX ???

Started by
9 comments, last by Krohm 17 years, 5 months ago
I'm totally frustrated! Could someone enlighten an ignorant guy what's going on with DirectX? These guys from M$ are constantly removing features from it without offering a proper replacement! First, they deprecated DirectDraw, forcing all of us to do 2D graphics through Direct3D. Next, they removed DirectMusic and DirectPlay. What for? Okay, part of the old DirectMusic functionality (but not everything) is integrated now into DirectSound, but what about DirectPlay? M$ says to use "enhanced core Microsoft Windows networking technologies". What enchanced technologies - winsock? Now it's time for DirectSound and DirectInput. They are not officialy deprecated, but their interfaces aren't updated since DirectX 8. The new XACT and XInput APIs are XBox oriented and definitely cannot replace DirectSound and DirectInput (XInput is for XBox only, XACT is for PC/XBox, but it cannot offer the same functionality as DirectSound).
Advertisement
Quote:
These guys from M$ are constantly removing features from it without offering a proper replacement!

I'll give you the benefit of the doubt with respect to you use of "M$" and assume you aren't trying to be a troll. I don't see any evidence for what you claim - in fact, you seem to provide evidence against it in your very own post.

DirectDraw deserved deprecation. The focus of modern hardware acceleration is on 3D graphics, acceleration of 2D graphics has largely fallen by the wayside, meaning there was very little reason to continue supporting DirectDraw, since using D3D results in overall better performance and a more robust API.

DirectPlay was pretty bad, and wasn't really suitable for the same relative domain as the other DirectX components (which is high-end, high-performance "X" -- where X is graphics, sound, et cetera). To my knowledge, DirectPlay was used by very few studios (professional and non-) producing high quality games because it was a weak interface, largely due to the fact that it is difficult to create an effective, robust and powerful networking API. Networking layers tend to be rather domain-specific.

That DirectMusic and DirectSound were rolled together makes pretty good sense to me, there's probably a lot under the hood that can be simplified by integrating "audio" libraries.

DirectInput and DirectSound haven't really needed updates in a while, as the front-line of audio and input hardware hasn't advanced nearly as much as that of graphics. I think you're reading too much into this.

Quote:
I'm totally frustrated!

Why? You can still use old APIs. What exactly is your complaint? That things change?
Quote:Original post by vankata
I'm totally frustrated! Could someone enlighten an ignorant guy what's going on with DirectX? These guys from M$ are constantly removing features from it without offering a proper replacement! First, they deprecated DirectDraw, forcing all of us to do 2D graphics through Direct3D. Next, they removed DirectMusic and DirectPlay. What for? Okay, part of the old DirectMusic functionality (but not everything) is integrated now into DirectSound, but what about DirectPlay? M$ says to use "enhanced core Microsoft Windows networking technologies". What enchanced technologies - winsock? Now it's time for DirectSound and DirectInput. They are not officialy deprecated, but their interfaces aren't updated since DirectX 8. The new XACT and XInput APIs are XBox oriented and definitely cannot replace DirectSound and DirectInput (XInput is for XBox only, XACT is for PC/XBox, but it cannot offer the same functionality as DirectSound).


You also forgot to mention that "Cross platform" now just means a codebase that works across products from the same company. :)

The DirectPlay thing really annoyed me, because when they first released it, it was marketed as a "retooled" version of DirectPlay that provided a seamless network layer for your games. When I used it, it really did work exactly how I wanted it to.

Then we're told that it's a sack of crud and going back to plain Winsock was the better approach, without providing any other deprecation route other than chopping the interface from the SDK.

Can they even call it DirectX, when it's been triaged down to Direct3D and DirectInput?

And don't even start with the idiocy around the D3DX library being hammered into a DLL so that now we have to worry about various versions floating around and all the other DLL-hell-ness..

The best part about DirectX8.1 and 9.0a/b, was that you really got a "one-stop-shop" for game development. Everything really *was* in there, and you didn't need to fork over sacks of cash to purchase various 3rd party engine solutions.

To their credit, the DX team does "seem" to listen to feedback and takes it into consideration when making decisions, but I seem to wonder if only the AAA companies are getting the loudest soapbox when compared to the hobbyist/indie developer.

I think it comes down to pure control.

By keeping the AAA developers happy, increases the likelyhood that the AAA companies will remain on DirectX, ergo providing/forcing a Windows platform to play the game on which means more Windows licenses back to Microsoft.

From a purely business point-of-view, why would Microsoft care what you or I think about the direction of DirectX? If all the hobbyists and Indie companies right now turfed DirectX, would MS even feel it?







Quote:
From a purely business point-of-view, why would Microsoft care what you or I think about the direction of DirectX? If all the hobbyists and Indie companies right now turfed DirectX, would MS even feel it?

Feel...what exactly? They don't sell DirectX. If everybody in the world stopped using DirectX, Microsoft would feel exactly...nothing. Monetarily, at least.

In fact, since they could fire the DirectX-related programmers, they might be better off, financially.

Game developers don't target Windows because of DirectX, they target Windows because of its market share, which has precious little to do with DirectX. If DirectX vanished from the face of the earth, there would be no mass gaming exodus to OS X or to Linux. Everybody would rebuild thier games based on other libraries and continue to sell primarly Windows versions, purely because of the installed base Windows has.

Quote:
And don't even start with the idiocy around the D3DX library being hammered into a DLL so that now we have to worry about various versions floating around and all the other DLL-hell-ness..

Since I don't distribute my own work widely (and dealing with installers wasn't in my job description when I worked in the industry), I've never had this problem. I don't know what the motivating rationale behind the decision was. I've seen others have issues with it, though, so I can see how it may potentially have been a bad idea; at the very least, assuming the rationale was appropriate, there does not seem to have been enough documentation on how to handle restribution of the correct D3DX DLL.

Either that or nobody reads the documentation.

Quote:
You also forgot to mention that "Cross platform" now just means a codebase that works across products from the same company. :)

I don't see the point you're trying to make here? DirectX doesn't bill itself as a cross-platform API.

Quote:
Can they even call it DirectX, when it's been triaged down to Direct3D and DirectInput?

DirectSound is still there, too.

Quote:Original post by Anonymous Poster
Then we're told that it's a sack of crud and going back to plain Winsock was the better approach, without providing any other deprecation route other than chopping the interface from the SDK.
Ah, good oldsk00l things! ;)
Quote:Original post by Anonymous Poster
And don't even start with the idiocy around the D3DX library being hammered into a DLL so that now we have to worry about various versions floating around and all the other DLL-hell-ness..

You haven't got the best of it! You shall not use D3DX at all from what I've understood because of some weird redistribution issues (can someone please confirm this?)... so if you need the HLSL compiler, you're in bad trouble! I find this so stimulating!

Previously "Krohm"

Quote:
You haven't got the best of it! You shall not use D3DX at all from what I've understood because of some weird redistribution issues (can someone please confirm this?)... so if you need the HLSL compiler, you're in bad trouble! I find this so stimulating!

You're wrong. Furthermore, I'm inclined to believe that the D3DX issues mentioned before are largely caused by people not reading the documentation at all, because a couple quick Google and MSDN searches turned up the relevant information.

Distributing the .dll itself is, apparently, illegal. However developers can redistribute the the cab file for the .dll and other required runtime components with their application. There's even an API to allow you to silently perform the install from code, if you'd like. Or you can do it during installation of your program.
Okay, whether you like/hate DirectX and various decisions surrounding it we'll be avoiding any sort of flame war here. Keep it reasonable or I'll be hitting the "close" button [smile]


With regards to the business/financial side of things, the DirectX API will generate revenue for Microsoft - just indirectly. It adds value to the Microsoft platform (aka the Windows OS) and thus provides a benefit/differentiation between rival platforms. By making the platform look sweeter you'll tempt more developers in, more developers = more software, more software = more choice etc.. etc.. and eventually that should result in more people taking out licences for the Windows OS which does directly generate money for the company. If DirectX (or any other key feature of their platform) vanished then you'd risk putting people off (which leads to less sales etc..) simply because the platform doesn't look so great anymore.

Or something along those lines...

Quote:By keeping the AAA developers happy, increases the likelyhood that the AAA companies will remain on DirectX, ergo providing/forcing a Windows platform to play the game on which means more Windows licenses back to Microsoft.
A bit cynical, but not an unreasonable interpretation. It would therefore not be surprising that AAA studios (or more generally professional studios) are potentially of more interest to Microsoft. These studios fill the games shops with titles that, if all go according to plan, have XBox/XBox360 and Windows written all over them...

Thats not to say that MS have no interest in indie or hobbyist developers - if that were the case then XNA Game Studio Express is a bit out of place.

Quote:I'm inclined to believe that the D3DX issues mentioned before are largely caused by people not reading the documentation at all
I concur. The information is readily available from LOTS of sources - official documentation, newsgroup/forum threads or other websites (including the Forum FAQ [wink])... It's really not that big an issue once you understand what it really means.


Anyway, that's all I have to add.

Cheers,
Jack

<hr align="left" width="25%" />
Jack Hoxley <small>[</small><small> Forum FAQ | Revised FAQ | MVP Profile | Developer Journal ]</small>

I think Microsoft are completely within their rights to ditch parts of the DirectX as they see fit. Supporting a tail-end of developers at their own expense was never part of the EULA. Moreover, if you want to use DirectDraw, DirectMusic, DirectPlay there's nothing stopping you. Even under Vista (which directly supports DX10 only), WOW32 will allow you to use DX9 in its entirety along with every previous release of DX.

DirectX has been religiously backwards-compatible since day one. If you have the gall to moan that they are no longer improving existing support for hardware that isn't even being produced anymore then you don't deserve such a wonderful API.

Regards
Admiral
Ring3 Circus - Diary of a programmer, journal of a hacker.
When MS announced they were dropping support on DDraw I thought it was a mistake. But after a while I got used to D3D and the advantages are so great I never looked back. Same with DirectSound. The DirectMusic interface is superior and XAct just raises the bar.

I never used DInput as I always thougt it was cumbersome and plain Windows messaging was enough for many purposes. But the XInput API is way cleaner and now I can consider using it.

When I heard about C# I never saw it as a game programming language. But now MS has deployed the impressive XNA platform which is the evolution of the DX API.

On the other hand... when MS announced the FX Framework with the release of DX8b, I was hooked from the beggining. After just a couple of hours reading about it I understood the fixed pipeline was just dead. MS was just shouting everyone to drop the fixed pipe. The decision to drop it on DX10 is just one of the best things they can do for computer graphics. Its like when they shouted: Drop 2D!!! Drop DirectDraw!!! Many people will cry but this will be for the best.

MS never leaves you 'without a replacement'. On contrary MS improves its libraries and provides better tools on each release. So you can keep whinning about what you lose and keep programming 2D games or try to ride the wave of all these changes.

The point is... are you an engine programmer or a game programmer?
If your answer is 'Engine Programmer' then you are just losing the best opportunity on your life. To develop an engine in a completely new platform without the burdens of the past. If you answer 'Game Programmer' then maybe you need to get a nice 2D engine like Torque Game Builder and forget about all this API changes. Note, that game programmers just face equal challenges than engine programmers so forget that myth about the game programmer being better programmers.

Now stop crying and go program your game.

Luck!
Guimo
Quote:Original post by vankata
XInput is for XBox only

XInput is not for Xbox only, it's for Windows as well. MS is moving to common controllers for PC and Xbox 360 so the Xbox 360 gamepad is also now the offical standard for Windows gamepads. Future 360 peripherals like the upcoming steering wheel will also work with XInput under Windows. For mouse and keyboard the recommendation is to use the standard Win32 APIs. In the past Win32 had issues for game input which was why DirectInput was sometimes used for the mouse and keyboard but these days it does the job just fine.

The only area that's missing is support for joysticks but they're pretty much a niche market these days and if you want to support them nothing's stopping you from continuing to use DirectInput - it's still around and still works on XP and Vista.

Game Programming Blog: www.mattnewport.com/blog

This topic is closed to new replies.

Advertisement