[SOLVED] How to lower Monogame requirements?

Hi Everyone!

My question is quite simple: is there any way to lower Monogame OS/Software requirements?
I am working on a very simple 2D game (simple in terms of technology), and I am only rendering pngs. No effects, no 3D stuff, just a bunch of pngs, therefore the DX11 requirement seems a bit…too high.

I know that XNA’s requirement is shader model 3.0+ and when my game will be ready, DX11 will not be a problem for even casual players, but still…it looks unnecessary. :slightly_smiling:

Edit:
Ok, I just found this, but I am not sure if these profiles can be used in Monogame as well:
https://blogs.msdn.microsoft.com/shawnhar/2010/03/12/reach-vs-hidef/

It might be important to note that dx11 works with dx10 cards as well, as long as you don’t use Shader Model 5.0 in your shaders.

It does not need a DirectX11 video card. It just needs a version of DirectX from the last few years that has DirectX11 support. You can use DirectX11 on a DirectX9 video card. It just doesn’t provide all the extra features, very few of which we use anyway.

That sounds good! Thanks for this info. DX10 (or should we say 10.1?) is much better alternative, because I am planning to release my game in 6-12 months and maybe I should not worry about Windows XP and lower…

Is there anything I need to set in the project to make it work on DX10.1, or is it done automatically?

Ahhhh, ok, now I think I understand the core of the problem! So if I am right:
As DX11 is only available in Windows Vista and above, in my case the only requirement is the OS and not the hardware, right?
I am asking this, because I am planning to release the game through Steam and I need to set the min/max requirements and it makes quite a big difference if the game requires or does not require DX11 card. :smiley:

According to the latest Steam Hardware Survey, Windows XP accounts for just 2.03% of their audience. The combined totals of Windows Vista don’t even reach 0.5%. Windows 7 at almost 40% (7.01% for 32-bit, 32.53% for 64-bit) is a much better baseline to aim for.

That is a very useful link, thank you very much! From that survey, it is more or less obvious that I should not worry about XP and not even DX9. :slightly_smiling:

DIrectX11 has Feature Levels. When we create a DirectX11 device object in MonoGame, we supply a list of feature levels that we can support. DirectX11 then goes through the list and gives us a device that has the feature levels that suit the hardware the user has in their computer. As you can see in the code where we create the GraphicsDevice object, we support down to feature level 9.1. This equates to DirectX 9 video cards.

If MonoGame doesn’t run on Windows XP, you can just also have an XNA version.

If all the assets are the same, then basically you would only need to have an XNA.exe and MonoGame.exe As for Steam and having both options, there’s probably a way to launch either via some launcher or tell the end users to use the XNA.exe on Windows XP.

As for shader profiles, Direct X versions, you might be able to use Switch Statements or #Definitions

how would he go about that?

If you mean to use something like this, I know it is possible but I will not use shader in my project:

pass P0
{
    VertexShader = compile vs_1_1 VS();
    PixelShader = compile ps_1_1 PS();
}