Looking at XNA

Miscellaneous Forums/General Discussion/Looking at XNA


Windows version:
While you can do whatever you want with whatever you do, to distribute you're gonna need to make sure the end user has both NET and XNA frameworks. This makes life a little awkward for shareware authors. Also, XNA has moderately high system requirements - shader blah.somthing. This may also limit your market unnecessarily.



Dependencies will always be present on "new" development systems. Your own product has a dependency of DirectX 7. That's a hefty download as well back in 1999 (and probably more awkward for install/support since it sits in the COM/Win32 realm, driver issues, etc.).

The difference here is that it's old news, and therefore a default component of XP (thus eliminating the download). This will also be the case for XNA/MDX over time.

Game APIs in particular will ALWAYS have to deal with dependency issues because of how quickly new hardware comes out.

The .Net installers (.msi gizmos) are pretty comprehensive now, even allowing you to offset dependencies to a secondary download during the install process (similarly to how Quicktime does it).

Also, be reminded that commercial shrink-wrapped software will also be utilizing this. Shareware developers will benefit from this as the dependencies will be installed by other software products utilizing XNA.


3)The language at the heart of XNA can be applied not only to games, but to general window applications as well as webpages

C++/ Java/ObjectiveC/Delphi?


Delphi - is a .Net language now as well. All future versions that Borland releases will emit IL.

ObjectiveC - For small-talk-ish behavior, you can find much better alternatives that target far more platforms and has a larger community. Isn't ObjectiveC primarily used on Mac-oS/Next Step?

Java - The problem of dependencies also applies here. Java's install is arguably a lot more complex than .Net as it doesn't hook into Windows update.

C++ - Can't beat C++ other than it's complexity. If someone can't wrap their head around C#, they're certainly not going to comprehend C++. Also, it's cross-platform capability is not as abstract as Java or .Net. Anyone that's deployed to Linux knows that a single linux binary is not guaranteed to execute on every flavor out there.


As a noob I find that particular example a bit perplexing -- having to work out exactly how twenty-one source files interrelate makes it feel over-engineered and needlessly obtuse for what it is. I would've been happier with one big, fat goofy file!


The point of having independent object files vs. one monolithic file is the same reason why you don't have to copy and paste the source code of Direct X into every program you write. It's a matter of separating responsibility and creating a program that's agile enough to survive changes in certain areas without affecting the program as a whole.

This is a procedural developer's mindset. As you learn and become familiar with the concepts of OO (and it seems you're leaning that way if you downloaded C#), you'll see the method to the madness :)


DirectX is future proof unless I'm missing some aspect of it. Blitz3D still runs on DirectX 9 systems, correct?

.....

XNA is tempting, but the thing that really prevents me from using it is that it will go through major (and I mean MAJOR) revisions every year or so, whereas OpenGL uses the same API it did ten years ago (even while adding support for all the features of DX10).



The engine underneath is an implementation detail. I never could quite understand why people get hung up on this aspect.

Which leads to...

con:Not cross platform (Mac or linux, oh well)



http://www.taoframework.com/Mono.Xna

Notice there's no talk of direct X here?

I'll say it again. Implementation detail.



I think using an MS development system would create a huge programming hours increase. If you're the head of a company that already employs 50 programmers, this isn't such a big deal, but it can kill a small developer.


Huh? Have you even used their development tools? Intellisense alone reduces programming to typing a prefix of a few things and then hitting tab. It statistically tracks your style and makes frighteningly accurate educated guesses about the method you intend to implement after awhile.

I won't even get into the extensive refactoring and debugging tools available.

If you compliment the already great IDE with a great tool such as re-sharper, the programs practically develop themselves with you just coaxing it along.