Looking at XNA

Miscellaneous Forums/General Discussion/Looking at XNA

Since the official word of Max3D is "there is none", I am going to be looking into XNA this week. Just to explore options for the future.

Anyone have any early experience with it? Any pros/cons they would like to share?

There is official word on Max3d, that was ignorant. :D
XNA isn't exactly going to be a leap forward.

Only had time for a quick squiz the other day. As a C# noob I don't find XNA concise or direct enough to drag me away from B3D but I'll probably plug away at it and pick it up over time, if only on the off chance that I may end up faffing around with a 360 at some point.

2D stuff does not look too intimidating on initial inspection. For sound you have to use XACT, which means nothing to me but I've read some forum posts having a little moan about it on the MSDN forums - I think it's a bit high-level for some. As for 3D - there's a Spacewar demo... it runs on my lowly laptop with integrated GFX, which was a nice surprise (I actually didn't think I would be able to develop with XNA without more modern hardware). 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!

But no. Generally quite impressed on the whole, although it still serves to remind you what you're paying Mark for.

Well, the apparent official word on bmax3d is that mark still hasnt worked out what he's going to do, so it won't be arriving anytime soon.

The official word on XNA is that Microsoft need five versions for a proper product. Being an early adopter is going to be plenty painful.

Best of luck to you tho'.

.

IIRC, weren't those Burger King games made in Blitz, or was that just the name of another company using the same name?

http://www.gprogs.com/forum/viewtopic.php?id=103

IIRC, weren't those Burger King games made in Blitz, or was that just the name of another company using the same name?


As none of the blitz products run on the xbox or xbox360, its pretty safe to assume (and easy to google) that they where in fact developed by blitz games.

The official word on XNA is that Microsoft need five versions for a proper product. Being an early adopter is going to be plenty painful.

Is there a link for that official word? I know Microsoft traditionally need about 3 versions to hit the sweet spot, but this 5 version thing is a new one.

Why switch to XNA? What are you trying to do which you can't do with bMax or blitz3D?

I've been playing WoW the last few days and that's a directx 7 game, and could be written using blitz, so what's the problem?


Why switch to XNA? What are you trying to do which you can't do with bMax or blitz3D?


People just want to have the latest or greatest - doesn't mean they're going to do anything with it - just human nature.
I still haven't seen anything that pushed Blitz3d to its limits.
As far as I can see XNA is just a set of frameworks that uses c# amd managed directX - no big deal - the only advantage I can see is that you can run your games on the xbox - for a fee of $99 a year - but those games cannot be sold.
The "official" word on BMax3d is just that its taking a new direction - not that it has ceased to be.
MiniB3d is becoming pretty much what I always imagined the native 3d module would be anyway and is worth a try.

.

There is official word on Max3d, that was ignorant.

Mark said, there is no official word, and that it wont be arriving any time soon. Meaning I am at a cross road on where my contracts go (the people I make games for as a freelance consultant).

I want a solution that isn't going to require long waits, and doesn't require messy/clunky work arounds.

LOL. Why wouldn't you try some of the other great FREE 3D modules for BlitzMax instead of throwing away what you've already paid for? Makes absolutely no sense, unless you're on a fishing expedition.


I used blitzmax when it first arrived. With the lack of a 3d engine, I went back to b3d as I had contracts waiting and needed a solution to complete them (without having to spend a year and make my own max 3d engine).

After seeing that things are regretted with the current form of blitzmax (as mark had said in his post), it makes me curious on where the future of max will be. Not 'if' mind you, just how long, and how many core changes will be made that might hinder work in progress.

Mark has done a great job, I respect what he has accomplished. I still like Blitz3D however my coding style has changed greatly over the past 7 years. Every project leans me more twords OO. The amount of overhead in Blitz3D that I have to do to do that is getting painfull.

Why switch to XNA? What are you trying to do which you can't do with bMax or blitz3D?

Make fast 3d games for the pc and target a console whilst I am at it. There is plenty i can/have done with Blitz3D, its a good product. But it's outdated when you get down to the nitty gritty. There are many things it doesnt do in DX7 that it probably should just to say it uses all of DX7. With higher end hardware out there, and a vast amount of XBox 360's (add XBLA on that), the market is opening up, and the only way to sieze some sort of reward from that opportunity is to jump onto the wagon before it leaves.

The official word on XNA is that Microsoft need five versions for a proper product. Being an early adopter is going to be plenty painful.

Thanks for the opinion and all, however I already feel as a 'debugger' of sorts if I choose to use max.

Bottom Line Is
I am at a good point in development here (between projects) and thus am at a fork in the road. Which direction do I go?

Blitz3D:
Pro:Able to do most of what I need to do
Con:No shader support
Pro:Quick prototyping
Con:Rarely updated anymore
Con:Not OO, can do quasi-OO, but it gets kinda messy and bloated
Con:Windows PCs only (not cross platform)
Con:No console support (limited market)

Blitzmax:
Pro:Cross Platform
Con:No Supported 3D module
Pro:Many flavors of 3rd party 3D Modules
con:Like many 3rd party stuff, no telling when support for them will be dropped
Con:Language still going through early development modifications
Pro:OO (for the most part, some features lacking, but not a big deal)
Con:No console support (limited market)
Con:Word from BRL is always "It'll be ready when it's ready", until 2 years the word becomes "We have no clue" (this isn't good for developers trying to plan out their year around a product).

XNA:
Pro:Windows and Console support
Pro:C# (OO)
Pro:Managed DX (managed .net framework)
Pro:Ongoing support from M$
Con:Many patches until stable
con:Not cross platform (Mac or linux, oh well)
Pro:XBLA
Pro:Shader Support

I guess most of you missed the point of this thread. I am not hounding Mark, nor am I saying anything bad about BRL and it's products. I was merely opening the floor up to those who have tried out XNA to get their opinions on it (in general). I can sit here and attempt to defend my reasoning all day, but you all have to realize that when it comes time to delivering a product to an employeer, I have to have my eggs in the basket and ready. I can't say "maybe BRL will release a fix for this" or "They dont know when the 3d module will come about now". We were really counting on the 3d module as we wanted to take advantage of the cross platform compiling. Now that the cat is out of the bag on Max3D, we are force to decide if this is where our future lies.

If your lively hood depended on programming games, selling games, etc, you would be in the same dilema as I am now.


If your lively hood depended on programming games, selling games, etc, you would be in the same dilema as I am now.



Luckily my livelihood does not depend on selling games other wise I probably wouldn't be using any Blitz products at all.
I also wouldn't be using XNA until at least it was made much clearer how the licensing will work for the Xbox. Currently you are not allowed/can't sell anything you produce with XNA for the xbox which I imagine would be quite a problem for someone who needs to make a living from it.
A better option certainly in the shorter term would be just to use plain old C++ or c# and Managed DirectX. It would then be a lot easier to port this to an Xbox once the licensing issues were made a bit clearer.

.

People just want to have the latest or greatest - doesn't mean they're going to do anything with it - just human nature.

I hate it when people just chalk things up to "you want the latest greatest" or "gfx dont make a game". Give it up already.

I still haven't seen anything that pushed Blitz3d to its limits.

Then you really haven't been around long. I have pushed 12,000 particles at 40 fps in B3D. That was after many hours of optimizing. There are plenty of people that hit the limits of B3D. Just because no one pushed the Dreamcast to it's limits doesn't mean they stay developing for it. Technology moved on, and so did developers

The "official" word on BMax3d is just that its taking a new direction - not that it has ceased to be.

The official word (as mark put it) is "there is none" (meaning no official word).

MiniB3d is becoming pretty much what I always imagined the native 3d module would be anyway and is worth a try.

Which is the whole question then. At what point do we let go of the past and move on? The MiniB3D looks good yes, but its 3rd party. Whenever such-n-such decides not to support it anymore, that's where the tracks end.

Luckily my livelihood does not depend on selling games other wise I probably wouldn't be using any Blitz products at all.

We have made alot of money using B3d. Don't even suggest you can't make money using B3D.

I also wouldn't be using XNA until at least it was made much clearer how the licensing will work for the Xbox. Currently you are not allowed/can't sell anything you produce with XNA which I imagine would be quite a problem for someone who needs to make a living from it.

We are not looking to make a living from anything at the moment. We are merely exploring options.

A better option certainly in the shorter term would be just to use plain old C++ or c# and Managed DirectX. It would then be a lot easier to port this to an Xbox once the licensing issues were made a bit clearer.

Now your getting it!

It would be interesting to see what an official BRL response is on this though.

To be honest BrEgOrS, I am not looking for a reply from BRL. Like I said before, I respect what BRL has done, however they are just falling behind too far for me to continue using the products. Doesn't mean I won't support them, doesn't mean I have anything against them, just means that I need to evaluate alternatives while I have the time and ability to make a good choice.

In the past, just as I was finishing one project, my employeer would have another already started and ready for code. So the tail of one project would overlap the nose of another. This time it is different, they are deciding routes, and asking my opinion on direction. I can learn whatever I need to that comes down the pipe, I just need to find the solution that maximizes output. Blitzmax was to be that solution, however it's after xmax and there still is no native 3d module, so the next project is being held up in the documenting stage until we choose which direction to go for the next 2 years.

.

Yeah, I hear ya.

> A better option certainly in the shorter term would be just to use plain old C++ or c# and Managed DirectX.

I'm starting to look into Windows Presentation Foundation, for what I want to do it may be the best solution.

Were currently using Bmax and an Ogre wrapper for a couple of commercial projects, but plans are to port our work to XNA with ogre sometime after the new 1.4 version and commercial license option turns up early next year.

.

The Cobra 3D module is practically done, apparently - for PC hobbyists looking to wang fancy GFX around with simple syntax it might prove the way to go.

There's always Irrlicht for C# too, if you're a bit more serious but want to let XNA mature.

Dark Half: What is stopping you from coding in OpenGL with BlitzMax for a 3D solution? You would then be cross-platform with Mac and Linux.


Because I started doing some simple opengl stuff in bmax when it first released. I remember the documentation being a huge pain (I remember considering tying a rope around my neck when trying to figure out a function using the documentation).

Also, what happens if the core of Bmax changes again? None of the original ports for the NeHe tutorials work anymore.

mmm XNA, looking at it, you'd be better off with DarkBasic, yet, we know what happens when we discuss that here! XNA is fine, DB a no-no! Right...

Dabz

P.S. Kuron says 'hi' by the way! :)

What does Kuron have to do with this?

Nothing really, he just asked me to say hello, because I was writing the reply while talking to him in a chatroom!

Thats okay isnt it, to pass a message on... Theres no terms of service rule about that is there?

Dabz

Well, in order to understand XNA, you need to understand how to code around the .NET structure first of all, besides the Direct X 9/10 structure... Second of all, did you need the 2005 version of C#, or would older versions work as well?

Thats okay isnt it, to pass a message on... Theres no terms of service rule about that is there?


Sure! Who is Kuron?

you need C# 2005 express installed to use XNA, other commercial version of visual studio don't work with the current version of XNA.


you need C# 2005 express installed...other commercial version of visual studio don't work


I think they work, you just need Visual Studio Express to be present.

I'm looking forward to playing the release of xna racer.


Sure! Who is Kuron?



Since I think your homouring me, I'll be homoured!

Kuron is a moderator at syntaxbomb, a good one too, he's probably one of the many talented BlitzCoders that have been hounded from these forums over the years, but thats for another day, as I dont want to see this thread go tits up like mine did!

Back on topic:-

As a hobbist programmer, to me, programming wise, its a good tool, because:-

1) its free
2) it lets you use a powerful 'true' OOP language to build games (And I've used C# on-off since I bought Visual C# 2002 by accident from a seller at ebay, he had it marked as VC++ 2002)
3)The language at the heart of XNA can be applied not only to games, but to general window applications as well as webpages, thats a lot for one language to do and it does it well.
4) It compiles to windows and Xbox, both dominate the home computing and console market (see Evaks sig)
5) The IDE is far superior to many IDE's out there.
6) You'll have all the 3D lovelyness you'll ever need.
7) There are plenty of reference books on the C# language, everything you'll ever need will probably only be a amazon patented 'one click' away.
8) They are working on Vista support, so I'd imagine DirectX10 will get a look in.

Its your choice, stay with Max and buy a commercial 3D Engine license, or go with XNA for free, see what happens, if it works out, great, if it doesnt, well, it doesnt, there's always Max to fall back on!

Dabz

Since I think your homouring me, I'll be homoured!

Not humouring you at all. The name rings a bell, I believe I have seen him around here, that's about it. I really don't come here that often anymore.

Its your choice, stay with Max and buy a commercial 3D Engine license, or go with XNA for free, see what happens, if it works out, great, if it doesnt, well, it doesnt, there's always Max to fall back on!


Thanks for your view on XNA (and to those who have shared their views). Falling back isn't really an option, if I choose something, I am stuck with it for the next 2 years most likely (because the employeer will stick most of his asset creation guys into this art path).

From the looks of things, I will probably go into C# (since its not a huge learning curve from c++ over all), and just port to XNA when the time comes.

Pro:Ongoing support from M$


Ongoing for as long as suits them. "Plays4Sure", anyone?

They've come up with quite a few 'revolutionary' pieces of software that they hyped to no believe, only to axe them again in their next major version.

And as far as 'support'from microsoft is concerned -- that by itself is rather overhyped as well. There are countless examples of glaring bugs and ommissions in their software that have taken *years* to get fixed, if ever. There's entire communities dedicated to workarounds for microsofts incompetence.

Unless when you say 'supported' you really mean that you can talk to a monkey that tells you that yes, you are indeed up that infamous creek without a paddle.


They've come up with quite a few 'revolutionary' pieces of software that they hyped to no believe, only to axe them again in their next major version.



Yet, for the foreseeable future, they'll support C# as well as Managed DirectX!

It wont be long before programmers leave the cradle of the XNA Game Studio application and tackle Managed DirectX head on in Visual Studio with a SDK.

Many programmers here have filled a lot of gaps in the native Blitz language for years, they leave the Blitz cradle and expand the language from the outside. Its all about rolling up your sleeves and 'just getting on with it'.

It all depends on how far me, you or anybody else wants to push themselves to make stuff happen. If someone pushes themselves to learn how to use the XNA Game Studio app, I'm in no doubt they'll push themselves further by using a DirectX SDK in Visual Studio.

Dabz

Sure! Who is Kuron?

I believe ( feel free to correct me if I'm mistaken ) he was previously known as Brice Manuel and WhiteEagle, and there might have been others. Perhaps one of those names is more familiar?

Hmm...devil's advocate time...See my worklog for my initial XNA impressions...


1) its free


Yes, but it's not exactly 'no strings attached'.

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.

X360 version:
Lots of restrictions on what you can do - source code sharing only and no commerical products.

XNA 'professional' is coming out next year which will change the picture, but I suspect you'll still really need to go through a 'recognized publisher' etc to achieve anything, and anything you do 'anonymously' will always run the risk of being rejected as a product.


2) it lets you use a powerful 'true' OOP language to build games


C++/Java/ObjectiveC/Deplhi?


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?


4) It compiles to windows and Xbox, both dominate the home computing and console market (see Evaks sig)


Windows machines with both NET and XNA frameworks installed don't dominate - neither do X360 owners with XNA membership.


5) The IDE is far superior to many IDE's out there.


And can also be used with non-C# languages.


6) You'll have all the 3D lovelyness you'll ever need.


Hmm...not sure what that means exactly...


7) There are plenty of reference books on the C# language, everything you'll ever need will probably only be a amazon patented 'one click' away.


Again: C++? Java?


8) They are working on Vista support, so I'd imagine DirectX10 will get a look in.


Possibly - depends on the X360's hardware caps - also assuming the point of XNA is to provide some kind of common windows/X360 platform of course.

Don't get me wrong, I think XNA is actually pretty cool and a step in the right direction.

But most of it's appeal is surely in the X360 factor - take that away and the reasons for ignoring established languages/APIs like C++/Java/Direct3D/OpenGL becoming a lot less compelling.

And while I imagine C# will be with us for a good while, I'm not sure about the XNA framework - esp. if it's tied to the 360's hardware. This will depend on the whole success of this enterprise I guess. However, the fact that MS have already deprecated managed DX is a little worrying, as in a way XNA is just another 'managed' DX!


you're gonna need to make sure the end user has both NET and XNA frameworks



You sure? I assumed it would just be .NET... it's not like you need the DirectX SDK to run DX games. The GFX requirements are surprisingly low... see my post and remember that MiniB3D no worky on my machine.

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

If only there was a uniform, unchanging, future proof API for DirectX- that would make me want to use it. I like Direct3D9, its fun the play with. But I'd rather use OpenGL to create stuff. Its simple, elegant, widely supported, and futureproof.

Good points Mark, but I'm a hobbist programmer, so all in all, its a good tool personally for me! :)

Granted, there other programming languages out there, like C++, Java etc etc, but they dont fit into the discussion about the XNA Game Studio, which I thought was the basis of this thread! ;) Or I've missed a point somewhere (yet again, lol)


Hmm...not sure what that means exactly...



Well, whoever use's XNA will probably have access to everything they'll ever need under DirectX, like shaders etc etc

So if people keep popping up, saying 'I want X feature in Blitz3D', or, 'when is Max3D coming out.. never... OMG I'M GOING TO DIE', we can politely point them to XNA, they have everything they'll ever need, IDE, DirectX, a OOP Language, they can either move on, or be quiet! :D

For me, the only thing lacking in blitzMax is the IDE, the language is great, 2D is all I use,but I hate the IDE and the docs (which you've probably read many times)... Thats my view, and many will disagree (as they do). Hopefully, Qubes IDE will get me going with BM, until then, I'm happy with Blitz+!

Any, nice talking, gotta go, phones blaring! :)

Dabz

If only there was a uniform, unchanging, future proof API for DirectX- that would make me want to use it. I like Direct3D9, its fun the play with. But I'd rather use OpenGL to create stuff. Its simple, elegant, widely supported, and futureproof.

DirectX is future proof unless I'm missing some aspect of it. Blitz3D still runs on DirectX 9 systems, correct? You just specify which version of DirectX that you want to compile/link against and your code never needs to change.

Is there a link for that official word? I know Microsoft traditionally need about 3 versions to hit the sweet spot, but this 5 version thing is a new one.
History.

First Microsoft webbrowser that didn't suck: IE 5.0
First Microsoft OS that didn't suck: Windows 2000 (aka. Windows NT 5.0)
First DirectX version that didn't suck: DirectX 5
And so on...

DirectX is future proof unless I'm missing some aspect of it. Blitz3D still runs on DirectX 9 systems, correct?
DirectX is traditionally only bacwards compatible by two versions (ie. DirectX 5 games won't [and don't] work on DirectX 9). So it stands to reason that in time, neither will DirectX7.

By then no one will care about DX7. Or it will be emulated.

XNA, looking at it, you'd be better off with DarkBasic
In which case you'd be better off with your mouth full of shotgun, and your toe on the trigger. XNA is so much better than DarkBasic and DarkBasicPro it's not even funny.

By then no one will care about DX7. Or it will be emulated.
REally? Well it pisses me off that I can't play Panzer General 3D Assault and M.A.X. to no end. I doubt I'm the only person who has an old game or two lying about they really want to play, but can't.


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.

Shareware developers will benefit from this as the dependencies will be installed by other software products utilizing XNA.
In two or three years time when we start seeing XNA titles in the shop (best case scenario).

I won't even get into the extensive refactoring and debugging tools available.
Yeah. Resharper and csUnit are my personal favorites. Too bad they (like almost everything else useful) don't work on Express Editions.


In two or three years time when we start seeing XNA titles in the shop (best case scenario).


That's really only because of the infancy of XNA. Once it stabilizes, it won't take long after that. Especially if the software is developed with the change in mind.


Yeah. Resharper and csUnit are my personal favorites. Too bad they (like almost everything else useful) don't work on Express Editions.


The more I learn about the express edition, the more thankful I am that I have a different version.

It won't be long before XNA works with the pro and standard editions. Seems ridiculous that they would target a professional market and then make the tools incompatible with the professional development suites.

nUnit is a good tool too. And I believe it's open source.

What's wrong with the refactoring tools and debugging capabilities included in the Express edition? I've been using it for quite a while and they've always worked well IMO.


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...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 :)


Well that's me mildly patronised! :P I'm not a fan of applying the OO mindset universally as it happens (if for no other reason than this.whatever looking so damn ugly), but that's got nothing to do with my complaint. If I were looking at learning a procedural language I'd want a similar thing... a small, single file example to ease me in regardless of the fact that in the real world it'd be Include City. The complexity of the Spacewar project is fairly ridiculous given what it does - surely a C# issue rather than an XNA one, yeah, but then they are tied at the hilt.

Isn't this the classic problem with reading and deciphering OO source?

Well,

I wrote a long reply to the above, but ended up way off topic ('just an implementation detail' indeed - don't get me started!).

But all in all, there's basically one thing I don't quite get:

What exactly does C#/XNA have over, say, C++/OpenGL (or even C++/D3D or C#/D3D)?

The only thing I can really think of is the ability to release 'open source demos' for the X360 - what else is there?

Both are strongly typed OO languages combined with low level 3D APIs.

Both will require you to get your head around shaders, matrices, quaternions, etc etc.

I guess if you're a huge fan of C# that might be enough.

Some people obviously like Visual Studio quite a bit too(!) - but VS isn't an XNA only IDE: you could also use it to write a C++/GL game.

The more I think about it the odder it seems...

> The complexity of the Spacewar project is fairly ridiculous given what it does - surely a C# issue rather than an XNA one

Not even a C# one, there is a point where one goes over the OO edge, and in my personal opinion the Spacewar Demo went WAY beyond that. It would have been possible to do the same thing much less convoluted.

> What exactly does C#/XNA have over, say, C++/OpenGL (or even C++/D3D or C#/D3D)?


The entry point is much lower with XNA. All you need to do to get going is take the example and plug in the logic where it shows it goes, then plug in the rendering. It's maybe one step further up the ladder then the D3D/OpenGL, but it is a helpful step. Still, it's more trouble then I want to deal with.


All you need to do to get going is take the example and plug in the logic where it shows it goes, then plug in the rendering


In other words, it copys/pastes a template for you?

But surely, if you're up to writing the logic/rendering - along with the associated low level 3d math that involves - the dozen or so line app template shouldn't present too much of a barrier?

Nah, still not at all convinced!

What's wrong with the refactoring tools and debugging capabilities included in the Express edition?
They suck. Seriously. Try Resharper. It makes Visual Studio almost as good as Eclipse.

What exactly does C#/XNA have over, say, C++/OpenGL (or even C++/D3D or C#/D3D)?
Automatic garbage collection? XNA doesn't seem to have any advantage over Managed DX, except perhaps speed. I'm guessing Microsoft are going to be pushing XNA fairly agressively soon, possibly to the point where DX10 can only be utilized through XNA.

I've written two games for XNA so far, and I'm still feeling things out. Both were 2D games so I didn't get too deep into shaders. One of XNA's big 'selling points' was it's content pipeline. Personally, I'm not too enthusiastic about it. It complicates things for me as I don't deal with very complex data. And during beta I ended up writing my own from scratch as the final pipeline wasn't released, so going through the whole process using my own resource manager was not bad at all, and in any other language you'd be doing this anyway. And in many ways I prefer Blitzmax's way of dealing with images, audio, and other content. It's not as 'dictating' as XNA but complete enough that it just comes down to me saying LoadImage() if I want knock up a quick app.

For me, I like C#. I also like the C# intellisense in the IDE. It seems more robust than C++, but maybe I don't have something correctly setup (plus I'm not too experience with C++ either). So the big two factors for me was the language and the IDE, because frankly I can't stand to use the blitzmax IDE on large projects. Blide is a very nice alternative though for those looking for a similar 'Visual Studio' Experience. Having your game run on a console is cool too, but you really can't do much else with it :\.

In the end, XNA by itself really doesn't offer that much more, and in some areas it's even lacking (only WAV support?!). There were definitely some moments when working with XNA I'd think to myself "Why didn't they just do it this way?" and "this way" meaning the way BMax does it. Right now, the way I see myself using XNA would probably be with TorqueX (again, I like C# more than torquescript). It's a neat engine and making a game with it is much faster than making some game starting with XNA templates.

What exactly does C#/XNA have over, say, C++/OpenGL (or even C++/D3D or C#/D3D)?

For one thing, managed Direct3D is many orders of magnitude easier to code than OpenGL via C++. Throw in garbage collection and you've got an environment that is much friendlier to the beginner. It's all about lowering the entry barriers.

They suck. Seriously. Try Resharper. It makes Visual Studio almost as good as Eclipse.

"They suck" doesn't really help me. Any specific examples I can get my teeth into? I've never had a problem refactoring anything in Express, from variables to function calls. I'm wondering what I should be watching out for that Resharper will help with.


Well that's me mildly patronised! :P I'm not a fan of applying the OO mindset universally as it happens (if for no other reason than this.whatever looking so damn ugly), but that's got nothing to do with my complaint.


Well, my intention wasn't to insult you. So please accept my apologies if I did. You admitted yourself that you were new. I've mentored a fair number of procedural developers to get them to wrap their minds around the OO concept and they all say the same things you did.

Studio does let you define all of the classes in a single file should you want to do that. I imagine for documenting purposes, it's easier to say "refer to file X rather than, look for class at around line ###".

It's all about standardizing your code and applying best practices.

Granted, 80% of the time, the code only needs to be readable by yourself, if you ever want to evolve into a development team, a lot of time is wasted comprehending unpredictable code when you're not conforming to some agreed upon standard. One class per file is a pretty standard way of going about things. This keeps items isolated, and especially if you're using source control, more are able to work on a project without worrying about stepping on each other's code.

To be fair, games are typically not the investment that an enterprise-level application is. So, I suppose it's possible to be overly paranoid about how agile your application needs to be. But then, it doesn't hurt to subscribe to best practices so you can move that habit to gigs that might require several developers on the same project.

Microsoft gets put into a weird position. They're trying to attract the amateurs, yet also need to be compelling to the experienced. From that position, it doesn't hurt to expose amateurs to best practices, as doing something contrary to that hurts their credibility with the experienced.

It's akin to visiting a foreign country. If you're an American tourist visiting Germany, you can't expect everyone there to change their lifestyle around yours. You either attempt to understand their way of life, and fit in or be frustrated in a way that nobody else but yourself cares about.

I know that sounds a little elitist, but that's really the harsh reality of it all.


Isn't this the classic problem with reading and deciphering OO source?


The only time I've had a rough time deciphering OO source-code is when the naming conventions and methods are not terribly self expressive, or common mistakes are made (such as non-side-effect free functions)

Again, you need to change the mindset. OO applications are not "top-down". They exist as an aggregate of "entities" that interact with one another.


I wrote a long reply to the above, but ended up way off topic ('just an implementation detail' indeed - don't get me started!).


Doesn't BlitzMax allow you to switch out OpenGL and DirectX by a single statement (SetGraphicsDriver or something like that)?

At least from my point of view, that illustrates that the engine underneath is an implementation detail.

From your point of view as the API developer, that might be over-simplifying it. BUT, from the client code perspective, that's exactly what it is.


What exactly does C#/XNA have over, say, C++/OpenGL (or even C++/D3D or C#/D3D)?


I haven't browsed too deeply into XNA, but as others have mentioned above, you get the advantages of managed code.

You also get the benefit of IL deployment rather than building a binary for every machine you're targetting. (Java byte code has the same advantage if you were to choose that development platform)

XNA for Mono is well under way. Hopefully allowing deployment to platforms not owned by Microsoft.

The only thing I am not terribly happy about so far with XNA is that it seems to marry your application to DirectX. Therefore, if you want to be able to treat the rendering pipeline as an implementation detail, you would need to take the abstraction out a bit and provide a "common" facade/interface to OpenGL and DirectX.

I know in areas of .Net that have competing providers (i.e. SQL Server vs. Oracle, Source Safe vs. Vaut, etc), Microsoft has created interfaces to allow these environments to interact between one another as plug ins (they call them "providers"). If they haven't done this with the DirectX, hopefully they will in the future so a third party can create a compatible OpenGL provider and allow client applications to utilize it by means of a strategy pattern.

XNA appears technically to be another entry into Microsoft's patterns and practices code blocks.


"They suck" doesn't really help me. Any specific examples I can get my teeth into? I've never had a problem refactoring anything in Express, from variables to function calls. I'm wondering what I should be watching out for that Resharper will help with.


You really do need to try it to see the difference. It takes a little bit of getting used to if you're accustomed to the native refactoring tools, but once you get by that, you might find yourself unable to live without it.

Some of the finer points that re-sharper provides..
- Intellisense is enhanced to narrow the list of selectable items by what you've typed so far (as opposed to just bringing you to that area of the drop-down box)
- Non-inherited methods/properties/members are shown in bold in intellisense
- Code analysis that greys out non-executing or unnecessary code (i.e. you do an unnecessary cast, it will tell you about it, if you're importing unnecessary modules, those grey out as well)
- Hash marks on the side of your source code that allows you to jump immediately to errors and areas that could be tuned.
- Automatically putting end braces, parathesis, etc. in, and placing your cursor between them for your entry
- Re-ordering of parameters on methods will intelligently scan your code and handle the changes on the callers.


Believe it or not, this is a very SMALL list right from the top of my head of the elaborate set of features in re-sharper.

> In other words, it copys/pastes a template for you?

There is a template that you can open up and start working from.

>But surely, if you're up to writing the logic/rendering -
>along with the associated low level 3d math that involves

There are managed helper functions to deal with that as well, not by any means as easy as setting up a camera in blitz, but much easier then DX by itself. And the rendering seems to be as simple as inheriting a mesh object and using it's .render method (I have only done the 2d sprite though). I've only looked over the examples for most of this, but where looking at DX examples made me decide to move along the XNA ones look like something I could handle.

Some of the finer points that re-sharper provides..
- Intellisense is enhanced to narrow the list of selectable items by what you've typed so far (as opposed to just bringing you to that area of the drop-down box)
- Non-inherited methods/properties/members are shown in bold in intellisense
- Code analysis that greys out non-executing or unnecessary code (i.e. you do an unnecessary cast, it will tell you about it, if you're importing unnecessary modules, those grey out as well)
- Hash marks on the side of your source code that allows you to jump immediately to errors and areas that could be tuned.
- Automatically putting end braces, parathesis, etc. in, and placing your cursor between them for your entry
- Re-ordering of parameters on methods will intelligently scan your code and handle the changes on the callers.

Thanks, I'll give it a look! That sounds interesting...

I'm not a fan of applying the OO mindset universally as it happens

OO obviously shouldn't be applied when not necessary. However in almost all areas of game development, OOP is extremely important.

For example, when I first learned Blitz3D, I was a strictly procedural programmer (didn't know OOP). But when I saw how Blitz3D's entity system worked, I was amazed by how much sense it made and how easy it made things. Later, I found out that Blitz3D's entity system is simply a procedural implementation of OO techniques; namely Inheritance and Polymorphism.

If you like Blitz3D's entity system, chances are you'll like OOP. Of course, OOP is always a difficult concept to learn properly (and I've seen OOP horribly misused where code is more complex, rather than less complex), but once you do, your programming is made alot easier.

What exactly does C#/XNA have over, say, C++/OpenGL (or even C++/D3D or C#/D3D)?

I'm not sure, but it appears to me that XNA is a lot easier than pure DX or OpenGL, but not as easy as something like Blitz3D or Ogre. If I was in your place, I would use something like Ogre, since it provides all the 3D features you need while being easy to use. In fact, I am in your place, and I am using Ogre ;)

4) It compiles to windows and Xbox, both dominate the home computing and console market (see Evaks sig)

Just spotted this. Evak's sig is a little misleading ;) The XBox 360 ( which is what XNA compiles to, not the original XBox ) has the smallest market share of any console over a year old. The fact that it outsells two consoles which have only just come out and neither of which is in stock pretty much anywhere doesn't really indicate ( to me, anyway ) that it dominates the market.

That plus, as I think someone already mentioned, people with an XBox 360 can't play anything you compile anyway. Only other people who join the XNA network can play it, and that must be a tiny, tiny demographic.


For me, XNA is not the now, but it might be the future. I tend to agree with FlameDuck. I can definitely see Microsoft trying to make XNA the only way to use DX10. In fact, I'm positive they'd like to, the only question is whether or not they think they can get away with it.

360 will dominate all... don't call me biased either :)

I dont like what Microsoft is beginning to do, they're slowly pushing new technology into the market thats slow, bloated, and could give DarkBasic Pro a run for its money.

Something about Flight Simulator 2007 that has this slow, bloated, new technology feel about it makes me think its a Direct3D10/XNA Hybrid prototype.

Seriously, what is the point of bringing out new technology if its going to make current gen look 100x faster. Why? I could go out and buy a 'nVidia 8800GTX PT RT GTS GT 12' just to have it run the latest games at 11FPS. I hope game developers stick with DirectX9/OpenGL for at least a little while longer and not be pressured into jumping onto the XNA Bandwagon.

Hmm, makes me wonder if some smart guy at Microsoft will eventually make an X360 version of Flight Simulator, and develop a wireless yoke/cockpit controller for it, or something...

Yep Sid at Evil Blue Studios just talked me into looking at this baby from M/Soft.

Will post thoughts as the new year progresses (if I get time) regarding it.

First thoughts are that XNA Studio was totally painless to install and get up and running. The documentation is pretty good for startiung you off. What is needed are so great video tutorials to bring us up to speed on C# itself in the game environment.

There are some, more are promised, but after an hour of beginning I had my first sprite on screen and a 3d model lit and rotating on screen. Not saying I understood exactly how that happened but thats C#.

Syntax and features are a bit like Flash Actionscript and Java so if you know either have a look.


This book looks good as a starter:

http://www.amazon.com/Microsoft-Visual-2005-Express-Program/dp/0735622299



I shall keep you posted.

IPete2.

First thoughts are that XNA Studio was totally painless to install and get up and running. The documentation is pretty good for startiung you off. What is needed are so great video tutorials to bring us up to speed on C# itself in the game environment.

Same here. So far the experience has been painless.

I guess it all depends on where things go over the next year or so. M$ has been none to make trends, and hold other to them (wether we want to or not). In some cases they fail, in others, they create a new 'standard' (loose term).

I really don't want to spend an amazing amount of time developing my own 3d engine (I am just one guy), or purchase someone else's when they might choose to drop support for it.

XNA seems like a doable future for me (and for my employeer), as it looks like the future of not only 'quick and powerfull windows game development' but also 360 development (regardless of if you need a xna member ship to play the output now, things can always change).

Besides, creating games that the 360 lacks (genres) in at the moment is like shooting fish in a barrel. Being on that up-swing will be someone worth it.

Other consoles:
PS3: pssshhhh, I dont put much stock in it. It's costly, bloated, over-hyped. And Sony is known for screwing the little guy

Wii: nice toy, fun to play with, but not the best looking for indies. The gfx dont rival a pc, and it still gets mixed reviews (not to mention it's still not in stock anywhere).

Overall, the 360/Windows marriage for game creation looks like the best one as it hits 2 potential markets. Where it opens in the future is up to M$, and I am sure with enough money or enough bitching they could open it up even more to cater to us indies. We just need a loud enough voice (or a big enough wallet).

This is what my employeer wants more than anything.

Dark et al interested in C#

have a lookie here for beginners in Visual C#:

http://msdn.microsoft.com/vstudio/express/visualcsharp/learning/#beginners

Some great get you going video tutorials for absolute novices - I have found a few others too but these give you a firm grounding in some details others have missed out so far.

I am still a little confused over if I can make an executable Windows game with the XNA or not, any thoughts? I was worried that like 'Glue-IT', any programmes I write will have to have the .NET framework on the machine.

It certainly is quite exciting. I had a 3D World Studio level loaded and rotating about its centre in just a few minutes. And the more I look at C# the more I wonder why I have ignored it for so long.

In terms of speed I have seen a Msoft report which says XNA Visual C# can be only 2-3% slower than c++ but is far less convoluted and in some cases as it is written as something wich compiles 'Just In Time' that and code blocks which are used often are sometimes faster than c++ to execute overall.

IPete2.

I am still a little confused over if I can make an executable Windows game with the XNA or not, any thoughts?

Still experimenting at the moment. I will have to get back to you.

Thx for the link, good resource!

hey nice link, thanks for the absolute beginners resources :)

> I am still a little confused over if I can make an executable Windows game with the XNA or not

The .net framework is required for XNA programs to run.

Dynaman,

Yeah I was just talking to Sid on MSN (a pal of mine at Full Sail http://www.fullsail.com) he says that or the redistributable runtime:

http://www.microsoft.com/downloads/details.aspx?FamilyId=2E136A1F-F187-478C-9DA5-AAEB0904782B&displaylang=en

IPete2.

To make transpaerent images easier in DirectX's Texture Tool, you can use this to prepare your bitmap images:-

http://www.syntaxbomb.com/forum/index.php?topic=314.0

Its just a little thing I knocked up, to save me the trouble later! :)

Though, if you use a decent PNG editor, you'll probably not need it! :)

Dabz

IPete:
Be sure to read the fine print... (from the link you provided)

The runtime components in the XNA Framework Redistributable require .NET Framework 2.0 and the latest version of the DirectX 9 runtime. These additional requirements are available at the links below.


I'ts not "OR" the redistributable runtime. It's in addition to.

Rocket -

Ah yes - so that adds quite a bit to the game itself, thank you. I hadn't understood that, I thought it was either/or.

IPete2.

I'm looking forward to playing the release of xna racer.


woah!

Just found out XNA doesnt natively support standard font drawing like Blitz's Text command, though, jobs a good'un:-

http://www.syntaxbomb.com/forum/index.php?topic=305.msg2173#msg2173

Dabz

Just wow !


http://www.ziggyware.com/articles.php?cat_id=6


IPete2.

Let me ditto what Ipete2 wrote.


Just wow!

What's wow about that?

Parallex mapping is a nice wow

Wow = more resources to show us how to do stuff we can't do yet...

> What's wow about that?

Wow is that he put a number of nice batch of sample code, well written and focused, all in one spot. Samples are easy to find, well written ones are slightly harder.

Even more video tutorials for beginners

http://www.xnatutorial.com/?page_id=46


I have spent a few hours watching this lot and IT IS THE BUSINESS!

If you are at all interested in XNA then you should go here and get these videos - THEY ARE BRILLIANT and Thorough - top to bottom for beginners!

IPete2.

I hadnt really read this thread properly until tonight, so a couple of thoughts here:

(1) I was asked recently could I prototype a game idea for the XBOX 360 - my answer was probably not, now Im just not sure, depends to what level and how long they give me, but the possibility is now there, at least to show something on XBOX 360.

(2) Having a reason to look into C# is a useful means to an end for me personally. I have always wanted to move towards C++ but never really had reasonable opportunity or requirement. I think this will help me understand concepts I have looked at before but not really understood.

So far so good.

(3) Torque has already moved it's 2D engine to include TorqueX an XNA version and is preparing a professional version for it later this year, so they must know something we don't.

(4) About 2 years ago Microsoft told the game development world it was going to change the way multi platform games were developed, XNA was announced. Although it is only Windows and XBOX360 at present, I am sure there will be versions for PS3/Wii/ and possibly even Apple platforms.

Time will tell, but the advent of wiritng in a more streamlined fashion seems to have arrived. According to pundits C++ has a lot of legacy issue, which C# does not.

Yes XNA will change over time, isn't that why B3d is still only at DirectX7? Major re-writes every year and a half are just too much for a small team to handle. Torque Shader engine has been 'coming soon' for years now!

But even so it is more reason to be involved now, as the 2nd version has only just been released and some pretty major changes have already occurred (so I am led to believe).

Just my initial thoughts.

Don't get me wrong I'm not going anywhere without B3d and BMax at my side, but XNA may offer me some opportunities to stretch my legs and open up new marketplaces for SmartScreen to explore.

IPete2.