March 15, 2006

[Gaming] .Net, Xbox 360 and what it means for us

I always suspected that the future of game development would be the .NET Framework and the Xbox 360. I just didn't think it would be coming this quickly.

There are lots of upsides to having the CLR on a console for developers. No need to write a custom memory allocator, memory leaks become a thing of the past, and with a common executable, development and testing can be done in part on a real computer. The CLR makes writing multi-threaded and thread-safe code significantly easier (a must for the Xbox 360), and the possibility of a common executable between the Xbox 360 and PC development sides of things means fewer bugs overall because when the product is tested on both platforms, odd corner-case bugs will be able to be exposed more easily.

The downsides are plentiful, however. Game developers are most likely going to have to learn C#, and it is quite the mental shift from C++. C++/CLI is too close to C++ for most developers that I know of to really make a mental seperation between the two contexts. Optimization techniques change radically from the C++ world. Lots of developers that I know are addicted to STL, and while generics are a great step in the right direction, they're going to have to wean themselves. The .NET inliner is spotty at best. Developers are already complaining about the 256Mb memory footprint on the Xbox 360, so some of them are going to balk at the potential addition of the CLR to their memory-intensive designs.

Smooth performance is a worry for me as well. While the nice thing is that if the game uses the CLR to its fullest potential and properly codes with the GC in mind, we won't have to worry about memory leaks, etc., but we're still going to have to worry about the occasional GC. At least on the PC, a GC(1) is usually a barely-noticable hitch but GC(2)'s are full pauses that can last for multiple seconds. With the lower memory footprint on the 360, those pauses will be significantly briefer, but will occur more often.

Anyway, I'm happy to see the .NET Framework being used in a larger context. If .NET can make it in console games, it can make it anywhere.

No comments: