Jump to content
  • Advertisement
Sign in to follow this  
DvDmanDT

DX11 Should or shouldn't I port my XNA 3.1 game/engine/framework?

This topic is 2609 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi everyone.

For about a year and a half now, I have been developing games using XNA 3.1. Few months ago, I decided to take everything those games/demos had in common and make an engine/framework of it, which I call LilEngine. It handles all the 'boring' stuff, and leaves game logic as well as rendering to the actual game. Works great.

The problem is that I want some stuff from .NET 4, in particular the DLR for scripting (IronPython) and the Parallel tools to ease multithreading. As far as I know, developing XNA 3.1 applications and games is not supported in VS 2010.

So therefore I'm considering an upgrade. I don't explicitly need those things, but they would be nice to have. Do you think I even should upgrade? If yes, to XNA 4 or SlimDX? It should be noted that I only care for Windows and not the other XNA platforms.


Upgrading to Xna 4 I expect to be fairly painfree. It has all the math classes/structs and uses the same content pipeline architecture.

SlimDX on the other hand would allow me to use newer features (DX11) and possibly also to integrate unmanaged components such as an existing renderer, since SlimDX exposes the interface pointers..

Share this post


Link to post
Share on other sites
Advertisement
I've been pretty seriously irritated with XNA 4. The profiles mechanism is highly intrusive, because it artificially forces you in software to one of two crippled specifications. On the low end is "Reach" which actually means WinPhone7 and has all sorts of restrictions based on the mobile GPU. On the other side you have HiDef, which means Xbox and refuses to even start on a PC that doesn't have a DirectX 10+ card. You have to pick one of these two, regardless of what features you're actually using.

Share this post


Link to post
Share on other sites
also the Graphics Device seams to be entirely new to me (i used XNA 2 & 3.1 for about 1.5 years), i tried to do a simple project in XNA 4 because it would be quicker and easier then doing it with native c++ and DX,

Share this post


Link to post
Share on other sites
Has anyone tried porting an XNA game to SlimDX? At the moment, I'm using mostly 2D features such as SpriteBatch and SpriteFont.

How much abstraction does XNA really offer? Is there any libraries for SlimDX which offers some of the features XNA provides?

Share this post


Link to post
Share on other sites
If you are already in XNA I don't see much point in porting to SlimDX. Porting 3.1 to 4.0 can be a bit of a hassle but it is worth it imho (they made some fairly major changes to how you draw primitives and handle rendering states). For the game I ported, 4.0 fixed a lot of sound issues we had with extensive .mp3 music in the game.

Share this post


Link to post
Share on other sites

I've been pretty seriously irritated with XNA 4. The profiles mechanism is highly intrusive, because it artificially forces you in software to one of two crippled specifications. On the low end is "Reach" which actually means WinPhone7 and has all sorts of restrictions based on the mobile GPU. On the other side you have HiDef, which means Xbox and refuses to even start on a PC that doesn't have a DirectX 10+ card. You have to pick one of these two, regardless of what features you're actually using.

Yup, that's the one thing that really upsets me about XNA 4.

I'm also annoyed by their reasoning for removing almost any traces of PC functionality such as replacing the D3DX Texture2D.FromFile() which was lightyears ahead of the crippled Texture2D.FromStream(), and Effect.FromFile() which freed you from the content framework for shaders and let you write custom runtime shaders. Their public reasoning was that they didn't like having PC-only features/functions that developers for their other platforms had no use for and as such were apparently "confusing" for them to be there. Yet these other platforms have a plethora of features and functionality the PC have no access to. One of the most common things I see regarding XNA is the issue of the net libraries in XNA on Windows.

It's easy to see where Microsoft views the PC version of the framework. I wouldn't be surprised if they eventually stopped supporting the PC at all.

Share this post


Link to post
Share on other sites
Yeah it's kinda irked me about the focus on Windows phone/Xbox with 4.0's release. If you glance at the revamped apphub or the xna download it would give the impression XNA isn't even geared for PC.

The removal of Texture.FromFile() and Effect.FromFile() I don't think would have been nearly as bad if they at least had the content pipeline included in the redistributable. But that doesn't look like it'll be happening soon (or ever).

@DvManDT

I agree with EJH, I like the organization of 4.0 better than 3.1. If you're already heavily invested with XNA (and happy with it) it makes sense to keep with it. Is it really worth it to spend a great deal of time porting it to SlimDX for D3D11 capability on the prospect of maybe you'll want to use some feature that so far you've seem to have been fine doing without? Do the time costs outweigh the benefits? If you're primarily using sprite batches and doing 2D rendering, probably not, since you're probably going to end up with similar results regardless of which managed D3D framework you're working with.

Share this post


Link to post
Share on other sites
The removal of Texture.FromFile() and Effect.FromFile() I don't think would have been nearly as bad if they at least had the content pipeline included in the redistributable. But that doesn't look like it'll be happening soon (or ever).

Or something equivalent. The fact that their official suggestion for functionality lost by this switch is to invoke the content pipeline is almost insulting. In order to invoke the content pipeline on an end user machine, they need the full .NET Framework 4, the full XNA Framework, and in order to install that, they need to install Visual C# Express. It's a mind numbing amount of baggage just to obtain a few lost features, that would have better been suited by simply leaving the old functionality in, or at least moving it into a "WindowsHelper" class or something, if they wanted to keep the basic API clean between platforms.

Share this post


Link to post
Share on other sites

Has anyone tried porting an XNA game to SlimDX? At the moment, I'm using mostly 2D features such as SpriteBatch and SpriteFont.

How much abstraction does XNA really offer? Is there any libraries for SlimDX which offers some of the features XNA provides?


This is what I am doing at the moment, porting from XNA 3.1 to SlimDX(D3D11). Although I use a large proportion of the 3D features, so it is likely quite a bit more effort than for just 2D.

The biggest chunk of code to port is the replacement for the content pipeline, ie similar binary serializer, build system etc. But I am quite lucky since I already wrote replacements for a bunch of the importers and processors due to limitations in the XNA builtin ones(eg font processor, texture importer, fbx importer etc).


My biggest reason is probably mostly the direction XNA seems to be heading in compared to the native API. But also things like DX11 features, 64bit support(in content editor), a multi threaded content pipeline etc.


David

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!