July 27, 2007

c++ vs c#

One question I keep coming back to is whether or not I should switch to using C# and Managed DirectX instead of C++ and unmanaged DirectX for my game. (I also considered XNA, but decided against it for various reasons.)

I'm a lot more productive in C# than C++ and I'm already using C#/MDX for my tools so it is quite tempting. However MDX is no longer being developed, and I'm not sure what kind of features it might be missing compared to native DX, if any.

I already have a lot of working C++ code, but it shouldn't be too hard to port it. Any drop in performance would probably be negligible and I'm not too concerned with cross-platformedness at the moment.

Another thing about C++ is that it makes me feel like a Real Programmer™, which is kind of stupid, but I spent long months learning the intricacies of the language and I'm hesitant to give it up now even though a lot of what I learned also applies to C#.

The most important thing should be to get things done, but still, it's a tough choice.

7 comments:

Anonymous

The real question you should ask yourself is... Do I really want to use .NET Framework?

Now, AFAIK using C# doesn't automatically mean that, the compiled aplications reguires .NET Framework, but most likekely this is the case. And with C++, compiling .NET aplications (Even though it's possible) isn't really and option/rational.

There is a reasons why game developers doesn't make ".NET games". You can read about those reason in Mark Russinovich blog.
The Coming .NET World – I’m scared
.NET World Follow Up
Mark is not an game developer and doesn't talk about games, but I think you get the picture.

So my advice is. If you can build with C# so that it doesn't require .NET Framework. Go For It! Otherwise stick with the C++. :)

Anna

The .NET Framework is a big contributor to my productivity in C#, so there's no question here for me. I don't think it's quite as bad as Mark makes it sound anyway.

Also there are some games that use .NET, like Arena Wars.

Anonymous

I've been asking myself much the same question (albeit I was looking at basically any language). What it came down to for me was whether I wanted to program things as a hobby or as something more than that.

C\C++ seems to be the best choice if you plan on going into game development as a career, as that is what most games are built on.

C#, on the other hand, seems to be the best choice if this is something you are doing on your own as a hobby, as the .NET framework simplifies things. Obviously it comes with a cost, but the benefits seem to outweigh the costs if you're doing this on your own, IMHO.

I personally chose to go with C# for my personal project, as its more of a hobby for me. I am majoring in Electrical Engineering after all. (though I might double major in CS if I like my AI course in the fall...)

Anna

I do intend to go into the game development industry, but not necessarily in a role that would require me to have extensive C++ knowledge. I'd rather be doing higher level design stuff which is more likely to involve scripting.

I think that C# is a better choice for this project for the reasons you mentioned. It's the fact that I've already made an investment in C++ that's making this decision difficult.

I'm currently at a standstill because after working on the map editor in C# for a few weeks it's incredibly hard to get back into working with C++. So I'm going to start porting my project to C# and see how it goes.

Anonymous

If you are fluent with C++ then stick with it. I'm using it now for one and only reason: the majority of game develepers use C++. Hence it has the most libraries and engines available. Also every tutorial or code snippet is written in C++. You just get more help from more people using C++.
But as you said, in the end all that matters is whether you get things done or not. Heck, Soldat is written in Delphi!

Anna

I started learning C++ less than a year ago so I wouldn't say I'm fluent. I started with C# a few months later and I feel much more comfortable with it even though I'm less experienced. It's like a cross between C++ and VB6.

Anonymous

You should continue learning C++ reason: more tutorial article libreries etc. alot of forum for help.

I have news for language:

c++ is something from the past they just created the D language (I dont know if it is that recent...) http://www.digitalmars.com/d/

but it's not finish so stay with C++

Good luck


rfreak

Post a Comment