Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411528 Posts in 69377 Topics- by 58433 Members - Latest Member: Bohdan_Zoshchenko

April 29, 2024, 12:12:47 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)The XNA incompatibility WTF thread...
Pages: [1] 2
Print
Author Topic: The XNA incompatibility WTF thread...  (Read 8868 times)
lemmy101
Level 0
***



View Profile
« on: September 09, 2008, 06:32:37 AM »

Hi all, we entered the demake compo written in XNA (Yeah I know! It's just we'd never have had the time available due to jobs etc to write it in C++, rapid development is one thing that XNA cannot be critisised for IMO)

Now I'm mostly an avid supporter of what XNA is trying to do, but I do agree that the amount of people who can't get it running is rather silly to say the least. The extent of which wasn't clear to me until this compo! I thought it was mainly lack of shader support that stopped it working on people's machines.

However I suspect that this is largely down to various daft prerequisites that have never firmly been pinned down by MS. We tried to cater for most of these in the installer for the game, even managing to get someone running on XNA who had previously never been able to.

As such it's my belief that there are a large amount of people whose PC WOULD run XNA perfectly, and it's probably some obscure dll missing, and just the error reporting is so crap that unless the developer is sat there with a debugger ON one of these problem machines, it's difficult to find out what the problems are... I was hoping to start this thread as a way to try and pin down what these problems are, because as far as I know the only actual hardware requirement is a minimum of 1.1 HLSL support.

So these are the known prerequisites of XNA 2.0:

.Net 2.0
XNA 2.0 Redist
DX 9.0c with the following files in system32:
  • xinput1_2.dll
  • xinput1_3.dll
  • d3dx9_31.dll
  • x3daudio1_2.dll
  • x3daudio1_3.dll
  • xactengine2_9.dll

XP:
C++ 2005 SP1 Redist or .NET 2.0 SP1

Vista:
C++ 2005 SP1 Redist or .NET 3.5

This app http://xnamatrix.com/xnareq.php also checks the prerequisites for XNA 2.0 supposingly, however I've found it returns all okays even when some of the above are not installed. It will however check if the GFX card is capable of Shader 1.1/2.0

So I'm curious, if those with XNA problems would be willing to look into it? if every one of these prereqs are definitely installed, and problems still occur. BUT, the app reports shader support is ok (or it's obvious to you it is due to being able to run modern 3d games) I'm sure there's just some silly little thing that's installable that's so far not widely known/reported by MS that could sort it out...

The above list I think is the closest to a total prerequisite list as there is ATM, but my suspicion is that it could be something specific to some games, just for example, importing the System.Xml from .NET, or some other thing that may be used in some games and not others, may be adding a further prerequisite (some DOM dll, perhaps) I think there's an answer there somewhere, though I'm sure many others are looking into or have looked into the same problem. Wink

Just as much as there's a lot of anti-MS feeling these days, I think XNA has a lot of potential (especially considering DX 1 + 2 were practically useless) and it would be a shame if the crappy redist problems stopped it ever being a valid PC indie development platform.

Ta!

lemmy
« Last Edit: September 09, 2008, 06:43:38 AM by lemmy101 » Logged

muku
Level 10
*****


View Profile
« Reply #1 on: September 09, 2008, 06:45:45 AM »

Hi all, we entered the demake compo written in XNA (Yeah I know! It's just we'd never have had the time available due to jobs etc to write it in C++, rapid development is one thing that XNA cannot be critisised for IMO)

Not to hijack this thread, but there are many more, arguably even more rapid game development environments available, it's not like you have to choose between C++ and XNA. Pygame, Gamemaker, my personal favorite D, or use C# with Tao or something like that and avoid this entire XNA train wreck.

Anyway, good luck with this. It won't help me because I'm on Win2k, but I guess that can't be helped.
Logged
lemmy101
Level 0
***



View Profile
« Reply #2 on: September 09, 2008, 06:50:02 AM »

Yeah granted. Smiley First off though I don't know python, or any of the other equivelents comfortably enough to consider them RAD tools for this compo, secondly, I didn't appreciate the gravity of the XNA incompatibilities until this competition.

Good point about the C# alternative though.

That all said, if it wasn't for these problems, I'd much rather use C#/XNA out of choice, so if these problems are fixable one of the big arguments against XNA dissapears in a whisp of vapour. Smiley
Logged

Terry
TIGSource Editor
Level 10
******



View Profile WWW
« Reply #3 on: September 09, 2008, 07:18:18 AM »

My problems appear to be hardware based - I've only got a simple graphics card on this laptop. Just to be sure I checked that I've got all those dlls and I do.

You could just say that I don't meet the minimum specifications and leave it at that, but I think it's a bit unreasonable to need a pixel shader to play a speccy demake Sad Like muku said, there are plenty of alternatives out there if you're looking for something to speed up development...

 
Logged

lemmy101
Level 0
***



View Profile
« Reply #4 on: September 09, 2008, 07:24:35 AM »

"but I think it's a bit unreasonable to need a pixel shader to play a speccy demake"

Well yeah, you could say that. Smiley Though the shader is for drawing alpha blended textures, regardless of whether they're speccy pics or 1024 square normal maps... looking to the future the requirement isn't a problem, I don't think, as most pre 1.1 cards will get replaced at some point, but I guess they made the decision because they intended XNA to be primarily used for 3D, where the requirement is completely valid...

If we enter the next compo then we'll be sure to consider alternatives, though likely C# alternatives still.

out of curiosity, what card do you have?
Logged

Terry
TIGSource Editor
Level 10
******



View Profile WWW
« Reply #5 on: September 09, 2008, 07:31:58 AM »

It's an "ATI MOBILITY RADEON 7500".

I'm kinda surprised you don't just use C++ with SDL/OpenGL or something, I had a quick search for some XNA code on google and it doesn't really look any simpler or quicker to code than C++. And even the Tao infrastructure requires the dot net redistributables...

Well, whatever works for you, I guess - I just think you're making things hard on yourself for no good reason Tongue
Logged

muku
Level 10
*****


View Profile
« Reply #6 on: September 09, 2008, 07:36:40 AM »

Though the shader is for drawing alpha blended textures, regardless of whether they're speccy pics or 1024 square normal maps...

I honestly don't see why a shader is required for that since every fixed function pipeline can do this perfectly fine (and fast) without any kind of shader program. Even ten year old cards have no problem with that. Does the XNA framework actually enforce that? It just seems like extremely lazy programming on their part.

So, I agree that for 3d games this would be less of a problem because people who want to play 3d games tend to have at least decent video cards, but I think taking this into account XNA is a bad match for 2d games, especially retro-styled.


As for what Terry said, I too have yet to hear a convincing argument on what XNA actually makes easier for the programmer. I'm interested to hear about it.
Logged
lemmy101
Level 0
***



View Profile
« Reply #7 on: September 09, 2008, 07:46:05 AM »

I've used C++ for 12 years now, but I can honestly say C# speeds things up massively.. and if I had a choice I'd use it always.

Note in this month we've had loads of other things on, so the entire of this game was done in pretty much the first TWO days at the start of the compo, with a bit of polish in the final few days. I don't care who you are, dealing with C++, all the memory management and set up required, as well as all the millions of little things (pissing about with header files, and all the evolutionary scars of C->C++ that make OOP in it so much more of a clart on) expends so much additional time that's hard to account for in any argument unless you've used it yourself.

A lot of it is specific to C#, or the intellisense/editor, not necessarily XNA, but the whole package gives an immediacy that C++ could never have. "I need a new class to take care of this. Click click, call it that... type "over" of override, press space and automatically override any virtual functions etc" that's not to be underestimated.

Consider all the time you spend, summed up over an entire project, just copying method from class definitions, and typing classname:: before them all in the cpp file, avoiding cyclic includes, or adding implementations of interfaces to various subclasses. Or DLing a class / lib off the net and spending time trying to integrate it into your code (where in C#/XNA it usually is literally a case of drag/drop/run.

Unless of course you happen to have a fully functional 2D game engine written and ready to go, the difference is immense when factoring all these things.

I could go on all day about all the time saving things in XNA, but I guess it's all moot when people could point at similar things in pygame or whatnot. ANY C++ graphics library is certainly no competition at all in terms of development speed, it's that simple. And this is not an opinion out of ignorance, or noobness, as I've used C++ a long enough time to consider myself "fast" enough that the results I've had have spoken for themselves.

That all said, I agree that XNA is perhaps not the best choice for these kinds of competitions. But from our perspective, it was XNA or no entry at all. Apologies to those that this decision left out, but then... it ain't that special anyway, just a daft laugh! ;p

Cheers all,

lemmy
« Last Edit: September 09, 2008, 07:54:47 AM by lemmy101 » Logged

muku
Level 10
*****


View Profile
« Reply #8 on: September 09, 2008, 08:00:08 AM »

I've used C++ for 12 years now, but I can honestly say C# speeds things up massively.. and if I had a choice I'd use it always.

I definitely agree with you that C# is typically more productive than C++ (as are similar modern languages which e.g. don't force you to manage your memory yourself). I think I sort of understand where you're coming from now, which is more a language argument than a library argument. So perhaps Tao would really be a good choice for you to look at in the future.

And if you really created all this content I've seen in the video in just two days or a bit more, that's definitely impressive.
Logged
lemmy101
Level 0
***



View Profile
« Reply #9 on: September 09, 2008, 08:04:17 AM »

I honestly don't see why a shader is required for that since every fixed function pipeline can do this perfectly fine (and fast) without any kind of shader program. Even ten year old cards have no problem with that. Does the XNA framework actually enforce that? It just seems like extremely lazy programming on their part.

The whole 2D stuff built into XNA is built around the SpriteBatch HLSL shader. I think it's original intent is for 2D HUDs and billboarding within 3D games more than a comprehensive 2D games graphic system. The fact it can be used for 2D games I think is secondary in it's design. 2D being such as it is the XNA community have obviously embrased it, but a look at xna creators club shows that 3d articles/tutorials outnumber 2d by a factor of 10.

I guess it's no different to writing a 2D game in OpenGL back when 3d accelleration was still in its infancy. Incompatible on many PCs that should have been able to run them given their subject matter and graphical quality, perhaps, but I doubt you could find a PC that wouldn't run an OpenGL game now.

I'm sure there's a 'good' reason they made that decision, and that decision was forward facing in some bigger, long term plan. If every bit of new technology had to work on the lowest common denominator then these kinds of technology would never evolve as far, IMO.

Hell, it could be an extremely valid technical requirement for it to work fast on the XBOX 360, where graphics stuff is better off done on the GPU than on the CPU. It's clear that's where it's focus is anyway.

Also, I have a suspicion that XNA will have the same success as DX in the long-term, and I'd prefer to be an old-friend of it, than scrabbling to catch up the missing 5 years of experience and knowledge of it when it finally does become the indie game platform... which I suspect it will do, eventually.
« Last Edit: September 09, 2008, 04:26:52 PM by lemmy101 » Logged

lemmy101
Level 0
***



View Profile
« Reply #10 on: September 09, 2008, 08:10:25 AM »

And if you really created all this content I've seen in the video in just two days or a bit more, that's definitely impressive.

Thanks Smiley okay maybe a slight exageration, well, say 75% of that video. The poolhop was ropey and things like the outro weren't done till the end, but for the most part it was working and playable.

I'll definitely look into Tao now, thanks for the recommendations! Smiley
« Last Edit: September 09, 2008, 08:20:06 AM by lemmy101 » Logged

muku
Level 10
*****


View Profile
« Reply #11 on: September 09, 2008, 08:34:08 AM »

Hell, it could be an extremely valid technical requirement for it to work fast on the XBOX 360, where graphics stuff is better off done on the GPU than on the CPU. It's clear that's where it's focus is anyway.

I don't think that argument works because the XNA implementations on XBox and PC are separate anyway, AFAIK. Also, using standard alpha blending is still doing stuff on the GPU, just using the fixed pipeline.

But yeah, let's agree that XNA seems more geared towards shiny 3d stuff.


Quote
Also, I have a suspicion that XNA will have the same success as DX in the long-term, and I'd prefer to be an old-friend of it, than scrabbling to catch up the missing 5 years of experience and knowledge of it when it finally does become the indie game platform... which I suspect it will do, eventually.

I hope it doesn't Shocked I don't see what's independent about being locked in to one platform, one library, one language, and being at the whim of whatever Microsoft is up to next. Thanks, but I'll stick to OpenGL until they pry it from my cold dead hands Wink
Logged
Alex May
...is probably drunk right now.
Level 10
*


hen hao wan


View Profile WWW
« Reply #12 on: September 09, 2008, 08:43:27 AM »

AFAIK, if the computer is theoretically capable of running XNA games, then as long as the following is done they should work:

* install .net up to required version for platform
* update DirectX
* install XNA redist
* update DirectX again.

That last stage is critical, someone was saying that it installs extra bits that xna needs that don't get installed before since xna isn't already installed.

I think I saw a thread on creator's club that had instrucitons how to make an installer that foolproofs xna installation, but don't have the link handy.
Logged

lemmy101
Level 0
***



View Profile
« Reply #13 on: September 09, 2008, 08:49:38 AM »

Quote
I hope it doesn't Shocked I don't see what's independent about being locked in to one platform, one library, one language, and being at the whim of whatever Microsoft is up to next.

So how does this differ greatly from DX exactly? Smiley

I'm talking about the more mainstream indie development, purely because I can't see XNA being used in commercial game development for some time.... of course there are always going to be Linux/Mac cross-platform libraries in the indie scene, but I expect XNA will completely surplant DX in the future.
« Last Edit: September 09, 2008, 04:28:45 PM by lemmy101 » Logged

muku
Level 10
*****


View Profile
« Reply #14 on: September 09, 2008, 08:50:56 AM »

So how does this differ greatly from DX exactly? Smiley

Exactly. That's why I use OpenGL (plus it's nicer to work with).
Logged
seregrail7
Level 1
*


View Profile
« Reply #15 on: September 09, 2008, 01:45:07 PM »

AFAIK, if the computer is theoretically capable of running XNA games, then as long as the following is done they should work:

* install .net up to required version for platform
* update DirectX
* install XNA redist
* update DirectX again.

That last stage is critical, someone was saying that it installs extra bits that xna needs that don't get installed before since xna isn't already installed.

I think I saw a thread on creator's club that had instrucitons how to make an installer that foolproofs xna installation, but don't have the link handy.

There is, and the guys who done Narcoleptic Soccer Rush for the VGNG compo made it, and it still didn't work on everyones machine, even though it should. This is something that Microsoft don't seem to acknowledge and don't look to have any interest in sorting it out. They're too busy with the Creators Club on 360 to give a crap about the pc, which is a total shame. All they have to do is make the XNA installer install all of the requirements, at least.  Sad

I'm also given a bit of a hard time over using XNA, but really for this competition it was XNA or nothing, since I'm only starting to learn C++ and DirectX now. I'd rather make a game that only some people can play than not make a game at all. I am committed to my comment that I will not be using XNA for the next competition I enter.
Logged
muku
Level 10
*****


View Profile
« Reply #16 on: September 09, 2008, 01:55:57 PM »

I'm also given a bit of a hard time over using XNA, but really for this competition it was XNA or nothing, since I'm only starting to learn C++ and DirectX now.

Lemmy has a point when he says that productivity will suffer when you go from C#/XNA to C++/DirectX though. I'd say that's even much more true when you are just learning C++. Also, realistically, learning C++ really well takes a year at least, probably more. So, why not stick with C# (since you already know it) but use a more lightweight library?
Logged
seregrail7
Level 1
*


View Profile
« Reply #17 on: September 09, 2008, 02:03:55 PM »

I'm not learning DirectX just for making games for the TIG competitions, I was planning this before this competition. I already have some C++ experience, I'm just a little rusty. So I'm going to spend some time remembering what I've forgotten before delving into C++.
Logged
raigan
Level 5
*****


View Profile
« Reply #18 on: September 09, 2008, 06:10:13 PM »

What's wrong with using C# and OpenGL? Check out Tao.Glfw, the Boing.cs sample gives you a skeleton OpenGL app.

For it to run you'll need to make sure .Net is installed, and include the appropriate dlls in your installer, but it should be a lot better than the mess that is XNA.

If all you're doing is simpler 2D, this is IMHO going to be _more_ productive than XNA because you don't need to jump through all their stupid hoops regarding the content pipeline, you can keep it super-simple.

The attached is a diagram from the XNA docs, it's nightmare-inducing.

Logged
Zaknafein
Level 4
****



View Profile WWW
« Reply #19 on: September 09, 2008, 08:48:14 PM »

The content pipeline is simpler than it looks. Actually if you were to build a content pipeline in a bigger game project, you'd build something similar to what they did. Or you'd use a scene manager that provides such a pipeline.

Also correct me if I'm wrong, but I think XNA asks for 2.0 pixel and vertex shaders, not 1.1.
Logged

Pages: [1] 2
Print
Jump to:  

Theme orange-lt created by panic