Why not C Sharp?

Microsoft-Dot-Net-Old-Logo2The choice of which technology and language a project is built on can be divisive. We wed ourselves to the tools we know best and identify with the solutions we employ.   While there are zelots in the PC vs Mac debates, the hotter arguments in tech circles frequently revolve around what technology will mean success.

One debate that comes up in game development is the use of any language other than C/C++.  The C/C++ languages have been almost the exclusive language for game engines since its beginning.   While developers my also adopt scripting languages (many times to offload work to less technical game designers) the core that makes the engine do its magic is in C/C++.

With the advent of new technologies does this still make sense?

Microsoft has for some time been promoting an hier to the thrown in C# which is built on top of its .Net platform.  Why not C#?  I honestly like C# and believe that it is in many ways a step up that can help with productivity. C# has many of the advantages of Java without being as bloated.  It is more secure by nature and protects programmers from common mistakes.

That said, in some cases C# does not make business sense.  If you invest 10-20 million into a game, you expect the best return on that investment. The ability to release that game on multiple platforms (PS3, Wii as well as XBOX) can double your returns for small additional development time… if you program it in C or C++.

That may change.  One of our favorite small game engines Unity3D is scheduled to be release on other consoles.  When it does it will bring it’s version of the .Net runtime along with it.  Since the main engine is already in C++ it preforms significantly better than C# for most of the heavy lifting, leaving game logic to C# which is significantly faster than most scripting languages.

If your target is XNA or Unity3D then C# is the obvious choice.  To go beyond those use cases Microsoft will have to work to make the CLR a lot more open. Releasing the core of .Net under a BSD or MIT license (rather than the more restrictive GPL/LGPL for Mono) would allow developers to integrate C# on any platform and modify it to perform efficiently for their games.  Till that happens  (or Unity3D becomes a real competitor on all platforms)  console development will belong to C and C++.

Why not C#?
I honestly like C# and believe that it is in many ways a step up that can help with productivity. C# has many of the advantages of Java without being as bloated.  It is more secure by nature and protects programmers from common mistakes.
That said, in some cases it does not make business sense.  If you invest 10-20 million into a game, you expect the best return on that investment. The ability to release that game on multiple platforms (PS3, Wii as well as XBOX) can double your returns for small additional development time… if you program it in C or C++.
If your target is XNA or Unity3D then C# is the obvious choice.  To go beyond those use cases Microsoft will have to work to make the CLR a lot more open. Releasing the core of Silvelight under a BSD or MIT license would allow developers to integrate C# on any platform and modify it to perform efficiently for their games.  Till that happens console development will belong to C and C++.