The question might look subjective but considering Microsoft:
makes me wonder why Microsoft doesn't push their flagship language to prove that not only you can cut down significant development time, and therefore money, but also show that you can release a next gen title where the real time interactivity doesn't suffer.
If Microsoft were to do this once, I am sure many AAA developers would jump on that wagon too.
You need to ask a slightly different question.
Why doesn't Microsoft rewrite it's existing highly tuned gaming engines in a completely different language.
This is hopefully a more self explanatory question.
I know virtually nothing about the gaming system code base but I certainly don't imagine it to be small. Converting anything other than a trivial application from C++ to any other managed language is a huge undertaking.
Forgetting all of the syntax differences and C++ features / hacks that can't be done in C#, with a gaming application one issue at the front of the conversation will be perf. C# is not slow but it has vastly different performance characteristics. It's almost certain that highly tuned C++ gaming code will not perform nearly as well if it's directly ported to C#. A whole new round of performance tuning would have to happen and would not be cheap.
First, XNA wouldn't be an option. It is made with the goal of abstracting away the differences between the PC and 360. A high-performance game can't do that. It has to exploit the differences. Where the 360 shines, the performance has to be leveraged. Where it sucks, workarounds have to be developed. And vice versa for the PC.
That's also why other DirectX wrappers exist (SlimDX comes to mind as a much more direct D3D wrapper).
As for managed code in general, several problems come to mind:
When that is said, using .NET for a high-profile PC game would work a lot better. The full .NET framework has much better performance characteristics, and the available hardware on a PC is going to vary anyway, so tight control over the exact memory usage is less critical.
But ultimately, why would they do this? It'd be a big risk, it'd require a lot of code rewriting, and what exactly are they trying to prove? Most studios make cross-platform games, and for them, .NET is not an option no matter how awesome it is. They want to be able to run their code on the PS3 as well, or the Wii, or....
Quite simply, for real-time-like performance problems such as is presented by First Person Shooters, C# isn't up for the task. Not that it's not a good language, I use it and like working with it, but the fact is that the indeterminacy introduced by the Garbage Collection in C# makes it inappropriate for games which have high performance requirements. The same would be true of Java. Only when you get to a point where you have a certain amount of excess performance available can you really do something like this; the problem really is that somebody else is going to take that extra performance, and instead of sinking it into the runtime requirements of C# (or Java, which would have similar issues), they will just make a better-looking game. Since the consumer doesn't really care what technology the game was developed with, they'll usually go with the better-looking game, which puts any games developed with C# (or Java, like I said) at a significant disadvantage.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With