Sign in to follow this  
Crow-knee

XNA 4.0 near broke me spirit!

Recommended Posts

Hi All,
Just a quick synopsis of my experience with the 4.0 framework.
I am coming from having a fair amount of code invested in the 3.1 version and so went to do a conversion.
This was, I'm afraid, abandoned.
XNA 4.0 seems to take out far too many helper functions and workflows and gives, well, nothing to the PC programmer. Formats/enums removed, breaking changes to vertex handling, the list is endless...
If there were a list, I suppose that'd be something. A mob of Shawn's posts in relation to this laid out hap-hazardly does not do much good when trying to approach an upgrade.
I also use 3rd party libraries - most notably XNAnimation for skinned mesh animations. The breaking changes ensure that these no longer work either.
I have to admit, I am not an XNA guru - never got too much into the content pipeline processes and importers, which was ok in the previous XNA versions. It seems that 4.0 has raised the bar as far as knowlege requirements in the underlying technology.
What has been your experiences with the new XNA?
Do us Casual programmers just have to harden up?
It seems counter-intuitive that the breaking changes come from feature removal, not extension.
For me at least, I think 3.1 is where I'll be until the libraries catch up.
Steele.

Share this post


Link to post
Share on other sites
I'm currently attempting to write a game for the 360 in 4.0 with VS 2010, however I'd like to remove some of the code/objects into a library for future games(First person camera, a debugging text display, etc...). VS 2010 throws an error regarding the library that requires a .config file to be added to the game application to tell it to use the library.

Share this post


Link to post
Share on other sites
I think PC developers are just expected to abandon XNA 4.0 and stick to 3.1 or go over to SlimDX.

Microsoft has taken the stance from 4.0 onward to remove almost all the PC-only features from the framework to keep the API more cross compatible between environments, despite the fact that they have several things that only work on WP7 and the 360. I kind of feel like the we're basically the odd man out.

Share this post


Link to post
Share on other sites

We had much the same discussion just a few days ago and I'm ok with sticking to XNA 3.1 for my PC projects, more so since much of my codebase is also in 3.1 and it looks like a pain to migrate. However...

It would be nice if a friendly MVP could check with MS how long 3.1 is going to be supported

If the answer is not long or otherwise not comforting, I think investing in the learning curve for SlimDX starts to look more appealing.

Share this post


Link to post
Share on other sites
Quote:
Original post by WWakerFAN
I do quite like the changes where something hasn't been removed.


Which changes would that be for a PC user? To be sure, I'm not challenging you to defend anything, I'm just curious. For me personally moving up to XNA3.1 already meant some loss of control and fighting the API, so I'm growing increasingly hesitant to upgrade to 4.0

Share this post


Link to post
Share on other sites
Quote:
Original post by remigius
It would be nice if a friendly MVP could check with MS how long 3.1 is going to be supported


If one of us did tell you that person wouldn't be an MVP for long. If you have a project that's going to take any length of time to develop you'd be better off not tempting fate and just using 4.0.

Share this post


Link to post
Share on other sites
Quote:
Original post by Crow-knee
I also use 3rd party libraries - most notably XNAnimation for skinned mesh animations. The breaking changes ensure that these no longer work either.
I have to admit, I am not an XNA guru - never got too much into the content pipeline processes and importers, which was ok in the previous XNA versions. It seems that 4.0 has raised the bar as far as knowlege requirements in the underlying technology.

Not really. They've actually made things easier for developing for Windows Phone 7. Development for Xbox and PC really hasn't changed.

Quote:
Original post by Crow-knee
What has been your experiences with the new XNA?

Haven't had any problems with it.

Quote:
Original post by Crow-knee
Do us Casual programmers just have to harden up?

I don't know if you'd consider me a casual programmer since I've been using it from the first beta, but change is part of the game industry. I'm surprised when people have problems with it.

Quote:
Original post by Crow-knee
It seems counter-intuitive that the breaking changes come from feature removal, not extension.

I don't understand this. Almost all of the changes are related to Windows Phone 7, which is new.

Share this post


Link to post
Share on other sites
I don't think SlimDX is a good alternative to XNA. Sure it allows you to use C#, but it provides no framework, content pipeline, etc. It is just a managed wrapper of Direct3D (which has its uses), but is not as friendly as XNA. For example, in SlimDX you would to reimplement the SpriteBatch and all the 2D drawing code that just works out of the box with XNA.

Share this post


Link to post
Share on other sites
Machaira, I am somewhat surprised at your comments. You say that nothin has changed really for windows apps, yet I have experienced so many incompatibilities with my 3.1 code base that the effort to convert amounts to significant redesign and rework. I am not alone in this either, just check the creator club forums for a taste.
I work in web application in my day job, and one of the things we can never do, is remove functionality from the user - even if it is technically difficult when moving to new platforms. It is very poor business. But given the nature of change in programming, you can expect such things from time to time, but on this occasion, with the lack of cohesive documentation on the upgrade process, I find the upgrade a barrier, not an advancement.
Don't get me wrong, the tuts on the new stuff are great. The new bits are nice.
It's the workflow from existing to new which is poor. Where my project was at the stage of dealing in high level objects, now has to have it's basic objects and structures redefined.

Share this post


Link to post
Share on other sites
Quote:
Original post by Machaira
Not really. They've actually made things easier for developing for Windows Phone 7. Development for Xbox and PC really hasn't changed.

I think PC development has changed the most if you compare the previous version to the current one. I'm obviously not counting the fact that WP7 hadn't existed previously.

Not only do PC users need to deal with the low level framework changes (I support most of the changes) but they also lost a lot of options they had before because we were allowed to use almost everything that the PCs supported if we did proper caps checking.

Anything that didn't make it into the two very different buckets were cut altogether which means serious considerations needed to be made to replace the functionality removed outright, and anyone wanting to support users with DX9 cards are forced out of several options that were available to them previously and still widely supported on DX9 cards. Things like shadow maps, something I've had a hard time wrangling on the Reach profile, is really a minefield now.

Since Microsoft needed the Reach profile to function 100% with WP7, many common PC options were removed from Reach and "upgraded" to HiDef even though they've widely available.

All in all, I feel the transition from 3.1 to 4.0 with an existing project is less than ideal if you have a project that was always designed with just the PC in mind. It's great if you can easily transition to the new framework, but if you were the victim of a cut, or still want to support DX9 cards, things get complicated fast.

Share this post


Link to post
Share on other sites
Quote:
Original post by Quat
For example, in SlimDX you would to reimplement the SpriteBatch and all the 2D drawing code that just works out of the box with XNA.
Turns out SlimDX actually has sprites, fonts, and lines. Go figure.

Share this post


Link to post
Share on other sites
I like the spirit of the changes quite a bit. There's a few changes that could be a little annoying for some users- e.g. I believe the Xen graphics API went through some pain, but the issues seemed to have been worked around.

Admittedly, my applications don't deal with fine-grained caps management. The porting process mainly consisted of updating some vertex buffers, and I personally prefer the new buffer API. I'm also quite happy targeting DX10 class hardware (even if not paired with a DX10 supporting OS). The Steam hardware surveys show around 80% of participants satisfy this requirement, and it's going up pretty quickly.

4.0 also seems to have the future in mind- a hypothetical move to support a DX11 feature level and beyond doesn't look like it would take as much redesigning.

Share this post


Link to post
Share on other sites
With regards to breaking changes in 4.0, it sucks if you're upgrading but they're certainly not all bad changes. In particular refactoring the state management was something they really needed to do if they ever wanted to support D3D11, plus I think immutable state blocks are much nicer interface to begin with. But like with any new API with breaking changes it's much much nicer if the old version sticks around, so that it's not a required upgrade. And while nobody knows how long "official" support for 3.1 will last, I can't think of any way in which it would stop working on current Windows versions (since it just sits on top of other native Windows libraries).

While the new version does make PC development even more limiting in some ways (like how you can no longer blend AND filter a floating point texture, lol), I think it's always been the case that it's been limited for PC use. It certainly has more than enough to do what you need for games with simpler graphics tech, but without D3D10+ class features or vendor extensions it can be difficult to extend past a certain point.

To me it seems that simplified cross-platform development that's easy even for n00bies has [i]always[i] been one of the primary design philosophies of XNA, I think and the changes in XNA 4.0 reflect that. I try to keep that in mind when I come across something that seems bizarre.

Share this post


Link to post
Share on other sites
About official support for XNA 3.1 on Xbox 360:
Quote:
The final version of XNA Game Studio Connect will be released later this fall. Once the final version of XNA Game Studio Connect is released, there will be a 90-day window where you can submit games created with XNA Game Studio 3.1 or games created with XNA Game Studio 4.0. After that 90-day window is up, you will only be able to submit games created with XNA Game Studio 4.0.

source

Share this post


Link to post
Share on other sites
Quote:
Original post by Machaira
If one of us did tell you that person wouldn't be an MVP for long.


Are you being serious? I mean, it's not like I'm requesting any super-secret information... I just want to get some clarity which I think any software user would feel justified in asking.

Quote:
Original post by zz2
About official support for XNA 3.1 on Xbox 360


Thanks for shedding some light on this.

Quote:
Original post by MJP
I can't think of any way in which it would stop working on current Windows versions (since it just sits on top of other native Windows libraries).
...
I think it's always been the case that it's been limited for PC use
...
To me it seems that simplified cross-platform development that's easy even for n00bies has always been one of the primary design philosophies of XNA


My worry about 3.1 support for Windows may well be pointless, but as much as I seem stuck on the PC platform, I liked having the option to put my stuff on the 360 sometime. As I've said before, I personally feel that the XNA update cycle is going a bit too fast. That probably means I'm either getting old or not working hard enough on my games, but despite my aspirations I am an amateur game developer. I don't have the time or inclination to crank out games fast enough to meet the XNA cycle, but that means I repeatedly found my codebase in need of tedious upgrading.

I understand the design philosophy of XNA and I guess this my sore spot. I've always looked to XNA as a successor to MDX, but it's turned into an entirely different kind of beast. A lot better in a lot of ways, but I disagree with limiting its PC use (and with the frequent upgrades) for the sake of cross-platformness or making it easier. I don't think either is a bad idea, I just think they don't need to diminish XNA's use for the PC platform.

However, in the end my opinion doesn't really matter. I'm not the avid game-publisher which seems to be the target audience for XNA. I'm more of an MDX relic who enjoys tinkering on game concepts and techniques without any specific release in mind, which isn't going to generate any income for MS. All in all, I guess SlimDX would be a better choice for me, if it just wasn't for that damn neat content pipeline [smile]

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