With Microsoft releasing Visual Studio 2005 Express for FREE, I simply had to take a look at this new effort on their part to do things right. So far this XNA stuff is looking very cool. And who can say that the ability to develop indie games for the XBOX 360 is not cool? :D

I have been so anti-microsoft my whole life, yet this time it looks like they actually got something right. Its a big leap for me to go from being biased against microsoft, and now wanting to learn and use their software but what the hell can I say? I'm intrigued.
I'll keep you guys posted on my developments.

For the record, I'll never stop coding with Allegro & C++ ......but this new stuff may be taking up some of my time......as most new toys do. :D_________________Principal Software Architect
Rambling Indie Games, LLC

XNA is interesting but an unfortunate step in the wrong direction for game development._________________If you play a Microsoft CD backwards you can hear demonic voices. The scary part is that if you play it forwards it installs Windows. - wallace

With Microsoft releasing Visual Studio 2005 Express for FREE, I simply had to take a look at this new effort on their part to do things right. So far this XNA stuff is looking very cool. And who can say that the ability to develop indie games for the XBOX 360 is not cool? :D

You must have forgot to read the part about how you have to sign up for their XNA game developers club ($99/year or something) to develop for the xbox360, plus you can only share your games with other people in the club by the means of passing them your source code.

You must have forgot to read the part about how you have to sign up for their XNA game developers club ($99/year or something) to develop for the xbox360, plus you can only share your games with other people in the club by the means of passing them your source code.

No, I read that part. ;)

Its not that bad. But I don't own a 360.......yet. I really want to get one for the new sonc game. :D

Nod: Why exactly do you think that XNA is the wrong direction? Do elaborate._________________Principal Software Architect
Rambling Indie Games, LLC

I actually do like C# over Java. C# is a really awesome rapid development tool for apps, but C# for gaming.... I'm a little skeptical about it. C# compiles to bytecode (or "managed" code as redefined by MS), which I have no idea how well it translates to native code. But one thing I know is that .NET apps tend to add alot of memory requirements. The other things are automatic garbage collection and array index checking, which have huge performance hits in terms of gaming.

Anyhow, C++ is still the way to go for me still or even better C!

On the other news, PS3 runs Linux. This means you should be able to port your Linux games on to the PS3.

Nod: Why exactly do you think that XNA is the wrong direction? Do elaborate.

Because it adds yet another layer of abstraction to a system that's already far too "off the metal". This subject came up on the cboard at cprogramming.com not long ago. Basically, it comes down to wasted horsepower...it's amazing that we have such awesome supercomputers at our fingertips and yet we stuff them full of slow code and systems that run far slower than the ones we had even 10 years ago. Basing XNA on C# was a huge mistake...C# is way too new a language and has not had the time to mature that C++ has. C# is also not very well suited for game programming anyways...there's nothing you can do in C# that you can't do ten times better (and might I mention...faster?) in C++ when it comes to game coding._________________If you play a Microsoft CD backwards you can hear demonic voices. The scary part is that if you play it forwards it installs Windows. - wallace

I normally use Java, but I did buy a C# book earlier this year just to see what it's like.

Both languages have their pros and cons, but they're essentially the same. Java gives you precisely what you need so that it's harder to screw stuff up, while C# adds shortcuts that allow you to write shorter but (often) less readable code. The main thing with me is that I had already written alot of game code in Java, so I stuck with Java.

Compiling to bytecode works out ok, but you have to distribute the JRE (or the .Net libraries for C#) with your application. Both are usually available on Windows computers, but usually are older versions. To use cutting edge features, you need to indlude the JRE or .Net libraries.

C# doesn't work so well on non-Windows platforms, even though it's theoretically cross-platform.

But the bytcode itself is ok. The overhead is offset by the just-in-time compiler's improved ability to optimize the code. There is still a noticeable few second wait for start up sometimes.

Once, on an old computer several years ago, I tried to show a Java game I made to someone, and she said "There's nothing there." and walked away before it started up. :)

C# is also not very well suited for game programming anyways...there's nothing you can do in C# that you can't do ten times better (and might I mention...faster?) in C++ when it comes to game coding.

Iterating through collections --- something that is obviously necessary for any game that has any type of abstraction in it --- is far more elegant and simple in C# than it is in C++, especially with the former language's support for anonymous methods.

I also find your speed argument to be slightly suspect: stupefying code for minor performance gains is silly. Especially, as you say, sense computers are increasing in power. At least, as far as the Windows goes, modern Windows runs fast enough in most cases on a current generation machine, whereas the same cannot be said about an older version of the operating system running on a then-current machine.

Not that I disagree with you, per se; I personally do not care for Microsoft's products, and see no point in supporting them._________________"...LeoDraco is a pompus git..." -- Mandrake

Iterating through collections --- something that is obviously necessary for any game that has any type of abstraction in it --- is far more elegant and simple in C# than it is in C++

Yes, almost anything in C# is more simple and elegant than C++, but speed argument still holds. In gaming, you have to iterate through millions of objects, 60 times a second, and it adds up. In C++, you define your own iterator class which would make use of locality and processor cache for the best performance. Since I am not familiar with how "managed" code translates into hardware instructions, it is hard to say how well C# works with the processor.

Ignoring the speed difference between C# and C++ execution, there are certain features in C# that are of concern for gaming. For one thing, garbage collection. Garbage collection is a very CPU intense operation. What this means is that every time the garbage collection runs, you would expect to see little pauses during gameplay.

.NET tends to be a memory hog on my system. I would prefer not to upgrade my RAM, since upgrading RAM is fairly expensive for me (still using old hardware).

While the little performance bonuses may be insignificant to those, who has the latest hardware that can actually run the latest windows... (vista?), you may find that there are a lot of us, who still are running older hardware. Most games these days require quite alot of processing power. However, most of them have optimized it enough that even older computer can run them, even if its a bit choppy. If they ignored everyone by not optimizing their code b/c they can depend on everyone to having the latest hardware, then they would've lost alot of customers.

I have quite a beefy computer here, capable of anything I throw at it, including top-end 3D modelling software (Maya, 3dsmax, etc). Yet in the grand scheme of things, it's a completely inadequate piece of antiquity. No dotnet program I've ever used runs with any decent performance. Fortunately, the only dotnet-based program I need to use regularly is Shipping Assistant 3.0, a program provided by the USPS primarily for corporations who do a lot of postal shipping. It's easily one of the slowest programs I've ever used, and when I say slow, I'm referring not to calculations or anything like that but in the actual speed of the GUI. You can actually SEE the elements drawn out onto the screen, and you have to wait around for it to finish putting everything where it needs to go. The same program, if it were written in VC6 or any other competant compiler, wouldn't have such terrible performance. Couple that with the massive framework you need to run the damn thing to begin with...and I think you can understand why I think all of this has headed in the wrong direction.

The root of the problem is that systems are running slower than ever despite processors that are more powerful than ever. Why is that? While I'm not a major fan of spending 30 hours optimizing 2000 lines of code to gain a 0.1% performance increase, it seems that coders these days rely way too heavily on compiler optimizations. In fact, some of the so-called "experts" will swear up and down, left right and diagonally that you should ALWAYS write vanilla code, foregoing all manual optimizations because something in their broken brains assume that the compiler knows all and no human could ever write tighter code. There's also the false accusation that manual optimization interferes with compiler optimization (whoever started this one needs to be shot in the bunghole with a lawn dart).

Speed is king. Period._________________If you play a Microsoft CD backwards you can hear demonic voices. The scary part is that if you play it forwards it installs Windows. - wallace

The plural of anecdote is not data: I can just as easily point out that dotnet applications that I use (both ones that I write at work, and ones that I use to facilitate doing my job), run extremely fast on my work machine.

Pointing to a single application written in a framework which happens to be poorly written, and claiming that the framework itself must suck because that application runs poorly, is disingenuous.

RedSlash wrote:

Garbage collection is a very CPU intense operation. What this means is that every time the garbage collection runs

Regardless, your argument is slightly naive: you can turn off garbage collection in C# for classes you write, as well as provide explicit finalizers and destructors._________________"...LeoDraco is a pompus git..." -- Mandrake