• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
gasto

Direct X 11 really worth it?

26 posts in this topic

Since Direct X 11.2 will be Windows 8.1 and Xbox One exclusive, and only Windows 7 and 8 benefit from Direct X 11, is there a significant possibility that Microsoft is doing the same mistake that happened with Vista(most game developers sticked with Direct X 9)?

 

Is it really worth the effort to develop with Direct X 11 as an indie developer?

1

Share this post


Link to post
Share on other sites
Well in my opinion using dx11 is better . U don't have to use complicated things to get it done . It depends on what u are trying to do but when you have your basic framework in dx11 it is possible to do things that were not possible in dx9.

If u have your basic framework in dx9 that would be a pain if u want tesselation for example .
0

Share this post


Link to post
Share on other sites

Purely in terms of being a graphics API, I would say D3D11 is unquestionably better than D3D9. It's cleaner, leaner, and let's make use of newer hardware capabilities. Will that actually matter for your game? It depends on what kinds of game you're making, but in general the graphics API isn't going to become a limiting factor until you start having a really sophisticated level of graphics tech. If you want bleeding-edge graphics, then yes you want D3D11. If you want sprites or rudimentary 3D, the API isn't going to be that important.

 

Hi, may I ask which hardware capabilities supported by D3D11 (besides Tesselation) are the most important for modern 3D games in your opinion? Or, put it another way, what supported hardware features does a modern 3D game benefit most from when using D3D11 compared to D3D9?

Edited by Meltac
1

Share this post


Link to post
Share on other sites

 


Purely in terms of being a graphics API, I would say D3D11 is unquestionably better than D3D9. It's cleaner, leaner, and let's make use of newer hardware capabilities. Will that actually matter for your game? It depends on what kinds of game you're making, but in general the graphics API isn't going to become a limiting factor until you start having a really sophisticated level of graphics tech. If you want bleeding-edge graphics, then yes you want D3D11. If you want sprites or rudimentary 3D, the API isn't going to be that important.

 

Hi, may I ask which hardware capabilities supported by D3D11 (besides Tesselation) are the most important for modern 3D games in your opinion? Or, put it another way, what supported hardware features does a modern 3D game benefit most of when using D3D11 compared to D3D9?

 

 

http://msdn.microsoft.com/en-us/library/windows/desktop/ff476876(v=vs.85).aspx

0

Share this post


Link to post
Share on other sites


http://msdn.microsoft.com/en-us/library/windows/desktop/ff476876(v=vs.85).aspx

 

Thanks, but I can google that myself cool.png

 

I meant, from a practical point of view, which of the newly supported features are mostly used or useful in DX11 when it comes to game development? What are the key features you would say that makes it worth porting your legacy DX9 code up to DX11?

 

Or, say it yet another way, what high-level features (those advertised by the game industry) "need" DX11 if you want to bring them in your own game when?

1

Share this post


Link to post
Share on other sites

Well, a couple of years from now everyone is going to have Directx11 support, and if your first learining game programming, then it may take a couple of years to create an official game, so it probably would be worthit.

0

Share this post


Link to post
Share on other sites

I'm in a pretty similar dilemma or even trilemma. I have a DX9.0 engine and when I see where Microsoft is going with DX 11+ I don't like it. They made that thing in the past - DX10 was exclusive to Vista and Win7, now DX11.2 is exclusive to Win8.1 and so on. I had a WinXP box and I was stuck to develop with DX9. Than I started to look in OpenGL direction, where I could use the latest version on WinXP. 

I'm thinking about these things lately :

 

1. Is OpenGL in general(including OpenGL ES) is worth learning more than DX in the long run.

2. Is OpenGL game "market share" is growing ? How many devices and platforms I can target, if I invest time in learning OpenGL-like APIs. PlayStation 3/PS4, WebGL, Android, iOS, Linux, Mac and of course all versions of Windows ?

3. Is SteamOS and SteamBox, really going to affect the PC game market in favour to Linux and OpenGL ?

 

As a small indie developer, I need to know what is worth learning and what is going to fade in the future. I don't know exactly what platform I'm going to target in the long run.

Now I'm making a Windows game, tomorrow I could be making an iOS or Android game, or even a PS4 game. If I'm proficient in OpenGL style of programming can I be more competitive and flexible to jump between platforms.

 

Is sticking to DX11 ( and Win7/8 and eventually XBOX) is going to give me more than sticking to OpenGL 4+ and other OpenGL's to cover all the other platforms ? 

0

Share this post


Link to post
Share on other sites

I'm in a pretty similar dilemma or even trilemma. I have a DX9.0 engine and when I see where Microsoft is going with DX 11+ I don't like it. They made that thing in the past - DX10 was exclusive to Vista and Win7, now DX11.2 is exclusive to Win8.1 and so on. I had a WinXP box and I was stuck to develop with DX9. Than I started to look in OpenGL direction, where I could use the latest version on WinXP. 

I'm thinking about these things lately :

 

1. Is OpenGL in general(including OpenGL ES) is worth learning more than DX in the long run.

2. Is OpenGL game "market share" is growing ? How many devices and platforms I can target, if I invest time in learning OpenGL-like APIs. PlayStation 3/PS4, WebGL, Android, iOS, Linux, Mac and of course all versions of Windows ?

3. Is SteamOS and SteamBox, really going to affect the PC game market in favour to Linux and OpenGL ?

 

As a small indie developer, I need to know what is worth learning and what is going to fade in the future. I don't know exactly what platform I'm going to target in the long run.

Now I'm making a Windows game, tomorrow I could be making an iOS or Android game, or even a PS4 game. If I'm proficient in OpenGL style of programming can I be more competitive and flexible to jump between platforms.

 

Is sticking to DX11 ( and Win7/8 and eventually XBOX) is going to give me more than sticking to OpenGL 4+ and other OpenGL's to cover all the other platforms ? 

 

 

At the moment I'm making a series of tools that I need in OGL. However, from time to time I add more bits to the game - which I've structured in the following way:

 

-----------------------------    ----------------------    --------------

|                           |    |                    |    |            |

| Winmain() creates a new   |    |                    |    |            |

| CWindow object which      |    |                    |    |            |

| is responsible for window | -> | Generic game code, | -> | OGL render |

| creation and converting   |    | which interacts    |    | functions  |

| user input to a generic   |    | with ->            |    |            |

| format, which is sent     |    |                    |    |            |

| to ->                     |    |                    |    |            |

|                           |    |                    |    |            |

-----------------------------    ----------------------    --------------

 

The beauty of this structure is that I can create a WinRT/D3D11 version simply by replacing the first and last boxes above, which will account for a tiny fraction of the code base. I could also extend this further to run on Linux/OSX if I so desired.

 

The whole notion of either/or becomes moot with the above as I can target any platform/API - I'll simply extend the code as I see fit.

0

Share this post


Link to post
Share on other sites

D3D11 works on Vista as well, as long as they have the proper platform update. It's actually possible to query for the required update and prompt a download/install from Windows Update, at least if you're proficient at making installers. 

 

Purely in terms of being a graphics API, I would say D3D11 is unquestionably better than D3D9. It's cleaner, leaner, and let's make use of newer hardware capabilities. Will that actually matter for your game? It depends on what kinds of game you're making, but in general the graphics API isn't going to become a limiting factor until you start having a really sophisticated level of graphics tech. If you want bleeding-edge graphics, then yes you want D3D11. If you want sprites or rudimentary 3D, the API isn't going to be that important.

 

Either way I would recommend checking out the latest Steam and Unity hardware surveys so that you can make an informed decision regarding the baseline hardware and OS that your game will support.

 

That dilemma is what keeps developers(like me) from actually creating the engine. When I would have finished writing the engine in DirectX11, DirectX12 will be the cutting edge. So unless Windows 8 and Xbox One doesn't support DirectX9(which it does), I perceive no reason why I should aim at the latest instalment of DirectX, taking into consideration also that my graphic demands are minimal(2D texture billboard-heavy).

 

I am talking about building an indie game from it, not an engine competing with Unity or UDK.

Edited by gasto
0

Share this post


Link to post
Share on other sites

 

Since Direct X 11.2 will be Windows 8.1 and Xbox One exclusive, and only Windows 7 and 8 benefit from Direct X 11, is there a significant possibility that Microsoft is doing the same mistake that happened with Vista(most game developers sticked with Direct X 9)?

 

Is it really worth the effort to develop with Direct X 11 as an indie developer?

 

Depends on your game and target market.  I would realistically limit your options to either D3D11 or OpenGL; D3D9 is a dead, legacy API for a legacy platform.

 

In terms of learning graphics, I recommend starting with D3D11.  It more closely matches real hardware and will all but force you do "do things right" unlike OpenGL which still results in goofy questions around the Web debating the merit of vertex arrays vs vertex buffers or performance concerns with glBegin or whatnot.

 

If you are targeting parts of the world outside of NA and western EU, you'll find that pirated XP is still the most common OS (though it's shifting towards pirated Win7).  If you are targeting Mac and Linux you're forced to use GL and not D3D.  If you research the target markets for your game you may find that supporting China or Mac users may be important to your bottom line.  GL is the better choice for portability as it is supported by XP, OSX, Linux, and most mobile platforms.

 

Assuming you are sticking with NA and EU as your target markets and don't think you need non-Windows support, however, stats do seem to indicate that D3D11 has sufficient penetration in the market and is safe to depend on with relatively minor lost sales opportunity.

 

Even if you do think you need the portability you can make a strong argument for building your game with D3D11 initially and porting to GL afterwards.  D3D11 is easier to work with in modern usage (old-style GL is clearly easiest, but it's deprecated for very good reasons), D3D drivers tend to be less buggy, and Microsoft's dev tools are significantly better than anything I've ever seen for GL, making it much easier to get your game up and running with D3D11 than it is in GL especially if you're doing anything even remotely advanced.

 

The key point to take away from all this is to research your target market.  My opinions on APIs or research done for my own products are not necessarily relevant to you and you should not bet the success of your game on feedback from strangers on the Internet.

 

 

I have read an interesting [url=http://flohofwoe.blogspot.com.es/2013/10/farewell-directx.html]blog post from a respectable German developer[/url], where he specifies that DirectX11 all together is not so relevant for reaching huge audiences(the emerging Chinese, Indian  and middle-eastern).

 

Also, [url=http://msdn.microsoft.com/en-us/library/windows/desktop/hh769064%28v=vs.85%29.aspx]Microsoft itself[/url] specifies that DirectX9 is the version to develop with for maximum compatibility.

Edited by gasto
0

Share this post


Link to post
Share on other sites

 


Purely in terms of being a graphics API, I would say D3D11 is unquestionably better than D3D9. It's cleaner, leaner, and let's make use of newer hardware capabilities. Will that actually matter for your game? It depends on what kinds of game you're making, but in general the graphics API isn't going to become a limiting factor until you start having a really sophisticated level of graphics tech. If you want bleeding-edge graphics, then yes you want D3D11. If you want sprites or rudimentary 3D, the API isn't going to be that important.

 

Hi, may I ask which hardware capabilities supported by D3D11 (besides Tesselation) are the most important for modern 3D games in your opinion? Or, put it another way, what supported hardware features does a modern 3D game benefit most from when using D3D11 compared to D3D9?

 

Compute shaders is the big one. Combines with the ability for arbitrary read access from buffers and textures, it opens to door to all kinds of new techniques. We haven't even really scratched the surface of what's possible with compute. Other notable mentions:

 

  • Access to MSAA data 
  • Access to depth buffers (possible in D3D9 through driver hacks)
  • Better instancing support (you can access arbitrary buffers now in vertex shaders, which makes instancing much more powerful)
  • Constant buffers (reduces CPU overhead)
  • Up to 128 textures
  • Decoupled textures and sampler states
  • Integer math in shaders
2

Share this post


Link to post
Share on other sites

How many devices and platforms I can target, if I invest time in learning OpenGL-like APIs. PlayStation 3/PS4, WebGL, Android, iOS, Linux, Mac and of course all versions of Windows ?

Not to disagree with your other points (tying D3D to Windows upgrades *is* stupid) -- but I would not call GCM/GCX OpenGL-like in the slightest. If you're porting to PS4, you're learning a new/different API, that's probably closest to Mantle, then D3D11, then GL4.
Which brings up another point -- if you're an indie with no time for porting/implementing these kinds of systems, you should probably pay someone else to via licensing an engine. Otherwise, if you're going to commit to implementing your own graphics engine, you're going to have to learn the concepts behind all the APIs, and you will have to learn how to use those concepts on multiple APIs -- even if that just means the GLES2, WebGL, GL2.1, GL3, and GL4 ways of doing things! ;-)
If you've come that far, then doing a port to PS4/GCX should only be a very small amount of work, because you've already practiced how to implement the same concepts on five different APIs already! ;-)
1

Share this post


Link to post
Share on other sites

 

How many devices and platforms I can target, if I invest time in learning OpenGL-like APIs. PlayStation 3/PS4, WebGL, Android, iOS, Linux, Mac and of course all versions of Windows ?

Not to disagree with your other points (tying D3D to Windows upgrades *is* stupid) -- but I would not call GCM/GCX OpenGL-like in the slightest. If you're porting to PS4, you're learning a new/different API, that's probably closest to Mantle, then D3D11, then GL4.

 

I meant using PSGL which is OpenGL ES 1(.1) compilant + support for vertex array objects and nVidia Cg shaders. So for example, if I decide to use OpenGL ES 1.0, I cant target Windows all versions, Web browsers all versions(WebGL) ( even IE maybe), iOS, Android, Linux, Mac and PlayStation 3(throught PSGL, though I heard of it's terible performance). 

 

APIs -- even if that just means the GLES2, WebGL, GL2.1, GL3, and GL4 ways of doing things! ;-)

 

DX9, DX10, DX11 also have differences in implemenation.

 

@

mark ds

Yep, I'm trying to make such a framework too, but then it comes the language difference... For example, for some of the platforms you use Java, some use C++, some Objective C etc..

Edited by solenoidz
0

Share this post


Link to post
Share on other sites

When I would have finished writing the engine in DirectX11, DirectX12 will be the cutting edge. 

 

 

Haha, thats good point 

0

Share this post


Link to post
Share on other sites

Thanks guys for pointing out the "big" features of DX11 / D3D11.
 

 


Re Dx11 killer features: UAVs, resource views, compute.


 


Compute shaders is the big one. Combines with the ability for arbitrary read access from buffers and textures, it opens to door to all kinds of new techniques. We haven't even really scratched the surface of what's possible with compute. Other notable mentions:

Access to MSAA data
Access to depth buffers (possible in D3D9 through driver hacks)
Better instancing support (you can access arbitrary buffers now in vertex shaders, which makes instancing much more powerful)
Constant buffers (reduces CPU overhead)
Up to 128 textures
Decoupled textures and sampler states
Integer math in shaders


It's a shame that none of those things is possible to use solely within a HLSL shader - one needs an engine dedicated to DirectX 11 to make use of these features. This is what many shader dev's like me keeps "stuck" on DX9, as gasto says correctly:
 

 


That dilemma is what keeps developers(like me) from actually creating the engine. When I would have finished writing the engine in DirectX11, DirectX12 will be the cutting edge.
Edited by Meltac
0

Share this post


Link to post
Share on other sites

Personally I think that if your resources and skillset are such that it would take a prohibitively long time to implement a DX11 engine, then you should probably consider using an existing engine. An engine like Unity has many engineers for using the latest API's, and can abstract the features in such a way that you don't have to bear the entire burden of targeting multiple platforms with varying feature sets.

 

If you are going to make an engine, then I would say at some point you've just got to saw "screw it" and start making the game using whatever technology and API's you're comfortable with. Like I said early for the majority of games D3D9 vs D3D11 vs GL really isn't going to affect the actual game and what you can do with it, it'll just be an implementation detail. If it turns out your game is awesome and you want to target new platforms, then you can always port it after and change the graphics API if needed. 

1

Share this post


Link to post
Share on other sites

Not to hijack the thread, but what are the benefits of using D3D11 over D3D10?

All I've seen is the Device.Context, which supposedly makes multithreading easier for games. But I'm already using multithreaded loading and running my gameloop in a separate thread than the main one (using D3D10), so not sure how the device context would improve my architecture...

Edited by gfxCahd
0

Share this post


Link to post
Share on other sites

Not to hijack the thread, but what are the benefits of using D3D11 over D3D10?

All I've seen is the Device.Context, which supposedly makes multithreading easier for games. But I'm already using multithreaded loading and running my gameloop in a separate thread than the main one (using D3D10), so not sure how the device context would improve my architecture...

 

Here you can find the list of main features of d3d11 over d3d10.x: http://msdn.microsoft.com/en-us/library/ff476342.aspx

 

And here something about DXGI: http://msdn.microsoft.com/en-us/library/bb205075.aspx

Edited by Alessio1989
0

Share this post


Link to post
Share on other sites

If you are going to make an engine, then I would say at some point you've just got to saw "screw it" and start making the game using whatever technology and API's you're comfortable with.


Make a game using seperate libraries without an engine. In the end, you've got a sorta good engine, tweak it a bit more and you've got an engine that does what you want, the way you want and free (depending . . .) and it'll be suited for all your games after making it (depending . . . ) :)
0

Share this post


Link to post
Share on other sites

Just adding to this: it may seem as though unless you're using 11-specific features you'd be as well off with 10, but that's not really the case.

 

All D3D10 class hardware is capable of supporting D3D11 (with at least D3D_FEATURE_LEVEL_10_0), so there's actually no valid reason to prefer 10.  By using 11 from the outset you are better positioned to move up to 11 in the future, or to drop in 11-level features for higher quality rendering modes, and with minimal code disruption.

 

...Gah?

 

Never seen mention of this anywhere for the past month+ I've working on this. Either my reading comprehension is seriously lacking or such an elementary fact is practically hidden. Anyway, now I finally know why I kept finding D3D9 and D3D11 tutorials and almost none for D3D10....

 

Thank you, and I'll make the switch to D3D11 right away. Btw, the differences seem to be:

 

1) As mentioned, the introduction of the device.Context.

2) No more effects, need to compile Vertex, Pixel etc.. shaders separately. And thus instead of effectvariables I need to use constant buffers.

3) No D3D10 font/Sprite. Don't care, using my own classes already.

And, finally, If I want D3D10 harware to run my game, I just need to make sure I respect these limits: http://msdn.microsoft.com/en-us/library/bb509540.aspx

 

I think that's about it...

Edited by gfxCahd
2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0