Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

My fear is that XNA has reached the end of the road. To keep up with the latest technology a shift to another game framework might be needed. We have many games in a large codebase, all based on XNA. My question is, how much work would it be to migrate to SharpDX and are there other possibilities?

Our code base mainly uses basic 3D rendering and the SpriteBatch, no fancy shader stuff.

Update:

I should have mentioned we only use 2.5D, we have a simple engine that builds textured quads to render text and animated sprites. Also for sound we use XACT (what else..) with some effects.

share|improve this question
    
Future plans on adding more platforms/mobile devices or only Windows? –  Maik Semder Nov 4 '12 at 12:04
    
Just Windows, we currently have a mix of 32/64bit versions of Vista and 7 in the field. –  Wouter Nov 4 '12 at 12:12
add comment

2 Answers 2

up vote 5 down vote accepted

As catflier mentionned, moving from a "high level" framework like XNA to a low level Direct3D11 API would require quite some work in order to achieve the same results. But there are now some options that you could also consider:

  • Use new SharpDX.Toolkit, which is basically a XNA like API on top of Direct3D11 API, running on Windows Desktop, WinRT and WP8. The goal of this toolkit is to provide a high level API for DirectX and Windows only platforms (not strictly compatible with XNA, as we want also to have access to latest Direct3D11 features). It has the famous BasicEffect, SpriteBatch, SpriteFont, an effect framework, a content manager, a game class infrastructure (almost identical to XNA Game class). But there is still no Model/Mesh rendering and no input/audio API. Concerning XACT support you could probably use SharpDX.XACT, though I would try to not leverage any more on this library, as It is completely deprecated. Because SharpDX is AnyCpu, It can run on any Windows x86/x64 easily , and using the toolkit, you don't need to install anything (no DirectX runtime, no C++ runtime).
  • Use MonoGame, which is using SharpDX under the hood on Windows and more targeted to be fully compatible with XNA, cross-platform, and allows you to reuse your existing content pipeline, assets, and port easily existing XNA game. I don't remember if they have a pure Windows version (they have a WinRT), but if not, they should be able to provide one soon.
share|improve this answer
    
Thanks for the explanation. SharpDX.XACT is deprecated because it is not used in DirectX 11 anymore? Monogame sounds interesting, but only when it grows beyond XNA 4.0 and has high stability. –  Wouter Nov 5 '12 at 9:58
    
Just downloaded the new SharpDX release yesterday. I can attest to the greatness of the new Toolkit tools. So glad to see something like this integrated within the SharpDX project. Thanks Alexandre. –  Inisheer Nov 5 '12 at 21:56
add comment

There's a few options, since you mention SharpDX i guess you want to stay in c#.

If you move to SlimDX/SharpDX, there's few things to take into consideration (which are also DirectX related)

From DirectX10+, you have no more fixed function, so you will need to create shaders for your rendering.

Also there's not really any proper built in model loader, so you will need to create your own importer (or use another one, in my case I wrapped Assimp into a managed assembly).

Resources use the concept of views (you you never bind a resource directly to the pipeline, you need to create the appropriate view for it and bind that view).

There's no more SpriteBatch either, but it should be trivial to reimplement it in a way that suit your needs.

Text support can be a bit of a pain (if using dx11, in case of dx10/dx10.1 it's ok)

So that's some of the changes you'll need to make, but on the good side, you'll have access to later hardware API, with all the goodies that goes with it (StructuredBuffers are awesome, instancing is much nicer than in xna, you can use compute shaders...).

Hope that helps

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.