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

Started by
8 comments, last by dblack 12 years, 10 months ago
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..
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.
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
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,

Never say Never, Because Never comes too soon. - ryan20fun

Disclaimer: Each post of mine is intended as an attempt of helping and/or bringing some meaningfull insight to the topic at hand. Due to my nature, my good intentions will not always be plainly visible. I apologise in advance and assure you I mean no harm and do not intend to insult anyone.

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?
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.

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.
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.
The XNA 3.1-4.0 Cheat Sheet might help if you decide to upgrade.
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.

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

This topic is closed to new replies.

Advertisement