There ISN'T any real fragmentation to speak of- at least not any that would be any different than Windows once you stop and think about all the OS versions, etc. that you have to deal with with them, especially Vista versions. All intrinsically different even though they have the "same" API, etc. It's a perception of the unknown that is keeping them from doing anything. They think there's no market to speak of, so they do nothing. It's more of a chicken and the egg problem really.
Originally Posted by alurien
Done right, Linux is largely that- ONE OS target. I know, I've developed commercial applications that handle that concept readily.
Microsoft Windows is Microsoft Windows. Apple MacOS X is Apple MacOS X. GNU/Linux is...RedHat...SUSE...Ubuntu...I myself run Gentoo...
Heh... The Direct3D API is published enough to code to it. That's actually sufficient to do porting and emulation/abstraction against. This is the very reason WINE/Cedega can DO what they do right now. The problem is that DirectX is a byzantine API with myriads of things to implement- something Microsoft has taken quite some time to build up to. It's part of why WINE's incomplete. Probably always WILL be that way because you're always playing catch up with a company that has NO desire whatsoever to make it easy for you to do that- it would take people out of their cash-cow status from them.
1. Microsoft untangles Direct3D from Windows, and publishes all the APIs for it, allowing Direct3D to be implemented natively on other platforms - if SGI, Sun, HP and 3D Labs (remember them?) can do it for OpenGL, I'm sure Microsoft can do it for Direct3D. In fact they could do it for the whole DirectX suite, but I'll take the graphics for now. This would then allow the likes of nVidia to ship both OpenGL and Direct3D implementations with their driver packages.
The d3d9.dll in WINE could then call down directly to the native D3D9 implementation and pass the data structures directly. I think this'd be about as thin as WINE could get. Or nVidia actually supply a d3d9.dll that does the job directly - installing it into the WINE file structure could be tricky though.
Heh... Funny that... ;)
Of course this scenario is unlikely to happen.
If they offer a MacOS version or have a porting interest have a MacOS version, then they're already doing it. It's not TOO difficult to make a port of a game, but all the same it's easier if you make it portable from the start. Now, having said this, what you need to have is a situation where you have the studios reserve the right to allow alternate OS ports or to have the publishers willing to allow them, both without insane royalty requirements to accomplish this.
2. Petition the games companies to create OpenGL renderers for their games. The Windows version of World of Warcraft has both Direct3D and OpenGL renderers - obviously the OpenGL one is the one which works best under WINE/Linux. MacOS versions will use OpenGL, obviously.
That, my friend, is the main reason we don't have as many games on Linux as we ought to.
One would suppose a WINE-like layer for MacOSX could be possible, especially considering that we sit on X86 and PowerPC in the same manner they do.
3. MINE...for want of a better term. A MacOS compatibility layer. MacOS X is much closer to GNU/Linux than Windows will ever be, is compiled nowadays for an Intel x86 instruction set, and uses OpenGL the same way that GNU/Linux with X-Window does. Such a layer would be (or should be) much thinner than WINE. Of course such a project is predicated on the fact that Apple won't sue...but is such a project technically possible?
In all honesty I think Option Three is best. Even with OpenGL renderers, there are other stumbling blocks with Windows games - the .NET stuff used in Lord of the Rings Online, for example.
In the end, though, it's still really emulation. Not the right answer in the medium to long term.