Supporting DirectX version(s)

Started by
10 comments, last by 21st Century Moose 8 years, 6 months ago
Hi all,

While learning d3d11, I was wondering.
Would there be any good reason to develop PC (maybe XBox in the future) games supporting multiple directx versions? Reading the latest survey on steam it seems that over 80% of all users have d3d11 support.
http://store.steampowered.com/hwsurvey/videocard/

What surprises me a bit, is the relatively high number of d3d10. I cannot imagine all these users have GPU's from the time between d3d10 was out and d3d11 wasn't yet.

In short; I plan to rebuild my 3d engine using d3d11, and as it looks now, I wont add support also for d3d9.
What would you say/ do?

Crealysm game & engine development: http://www.crealysm.com

Looking for a passionate, disciplined and structured producer? PM me

Advertisement
Steam is unable to detect hybrid systems correctly (like DX 10 + DX11 GPus) as a single system. Moreover there is a huge share of undefined/undetected DX compatibility system (which looks like is growing a lot in the last months).
Pre-DX11 systems should be down-limited by hardware like Intel HD 3000, which explains why there are so much systems still bounded to DX10.

Until you have a real valid reason to target old XP systems, I would not spend resources on such porting. However, if you game is not huge resource demanding, it is better consider to target DX10 GPUs like Intel HD 3000 and Intel HD 2000. Since Windows Vista represents a relatively very small piece of the cake, I would simply target those system via DirectX 11 directly creating a feature level 10.0 rendering path.

EDIT: the increasing of correctly undetected system should be related to Windows 10 and preview or missing driver.
"Recursion is the first step towards madness." - "Skegg?ld, Skálm?ld, Skildir ro Klofnir!"
Direct3D 12 quick reference: https://github.com/alessiot89/D3D12QuickRef/
You basically have to, if you plan on wide commercial deployment. Steam does not tell a complete story; it's only meaningful if you plan to solely target the Western PC market!

The XBox versions of DirectX are not the same as the PC versions. And if you plan to target the PlayStation you need to target GNM. Mobile devices predominantly use GLES, with Metal also available on iOS and Vulkan soon available for Android. If you plan to target non-Western PC markets then (due to a combination of XP still being dominant and recent hardware being rare) DX9 is still essential.

Sean Middleditch – Game Systems Engineer – Join my team!

I cannot imagine all these users have GPU's from the time between d3d10 was out and d3d11 wasn't yet.

Just because the D3D11 API was out, doesn't mean that GPU vendors weren't still shipping D3D_FEATURE_LEVEL_10 devices.
I would definitely support D3D10 hardware via the D3D11 API. Do not bother ever using the D3D10 API though!

You can also support D3D9 hardware via the D3D11 API, but there's not too much point these days... Unless you plan on porting to Microsoft Phone?

If you want to maintain WinXP support, you'd write an actual D3D9 API backend, or an OpenGL backend. I actually do have a D3D9 backend because I'm stupid enough to think that maintaining a WinXP compatible build is a good idea...

Would there be any good reason to develop PC (maybe XBox in the future) games supporting multiple directx versions?

You basically have to, if you plan on wide commercial deployment: The XBox versions of DirectX are not the same as the PC versions.

^ That. If you're doing XBox in the future, you'll be supporting a 2nd DirectX version.

A super-portable engine would have D3D9 for XP, D3D11 (FL 10/11) for Vista/7/8, D3D12 for Win10 (if you want to use fancy new features), D3D9.x for Xbox360 and D3D11.x or D3D12.x for XboxOne. That's ~5 D3D back-ends laugh.png

Let's be realistic here

- he specifically said pc so no playstation and mobile

- it's unlikely that he will be targeting xbox360 if xboxes are a maybe in the future

- his game probably needs to draw more than 5 polygons, so older gmas are out
- the non-western market (which is pretty much cis and asia) is a huge decision tree where most of the paths end up in "nobody cares about you game" and "your game has a 100% piracy rate and you gain nothing" if you don't have connections
- xbone doesn't need a separate path unless you plan to do optimizations that are likely beyond a hobbyist (can't really be discussed because nda)
- d3d12 is still in development and is currently very buggy, the tools are not on par with d3d11, and the debug layer is a mess (at least on nvidia)
So yes, d3d11 with a feature level of 10 or 10.1 sounds like a good place to start.

Seeing web statistics in this are alot better : https://www.netmarketshare.com/operating-system-market-share.aspx?qprid=10&qpcustomd=0 In this case the platforms above windows 7 still make up about 75-80% of all platforms.

Its up to you wheter that 12% of XP users is something you want to target.

Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2, theHunter, theHunter: Primal, Mad Max, Watch Dogs: Legion

I once saw a website with maps and percentages (have not bookmarked it) and those XP users were basically all concentrated in China, IIRC I calculated from that data the rest of the world had maybe 2 to 4%. This makes the decision easier, if you sell there you support it, if not then not.

the non-western market (which is pretty much cis and asia) is a huge decision tree where most of the paths end up in "nobody cares about you game" and "your game has a 100% piracy rate and you gain nothing" if you don't have connections


*cough* we have made over a billion dollars per year from those markets with a single title *cough*

Sean Middleditch – Game Systems Engineer – Join my team!

the non-western market (which is pretty much cis and asia) is a huge decision tree where most of the paths end up in "nobody cares about you game" and "your game has a 100% piracy rate and you gain nothing" if you don't have connections


*cough* we have made over a billion dollars per year from those markets with a single title *cough*

as a hobbyist?

Thanks everybody.
I've decided to focus on d3d11, with d3d10 feature level support as a fallback.

@SeanMiddleTech: out of curiosity, what was the title?

Looking at "AAA" studios, my view is that most recent introduced games require d3d11 to run at all. Just throwing some titles/ series out there: Call of Duty, Assassins Creed, Wolfenstein, FarCry, Race Driver Grid, Battlefield

Crealysm game & engine development: http://www.crealysm.com

Looking for a passionate, disciplined and structured producer? PM me

This topic is closed to new replies.

Advertisement