Why C# XNA When Everyone Wants C/C++

Started by
164 comments, last by Promit 15 years, 1 month ago
For starters I've been a .net developer since the 1.1 framework. Everything from web apps to console apps, using C# and vb.net (ick). Also, I took C/C++ at a Uni many years ago. I'm looking at getting into game dev. So that leads me to the conundrum below... I've seen threads that suggest new comers to game dev to learn XNA and C# as their way into programming games. I find this very confusing. Looking at the job postings for Bungie, ArenaNet and Blizzard, they all want extensive C/C++ skills. The only mention of C# may be in regards to support of their web based technologies (not games). So, when the big shops want C++ why are many here in these forums recommending XNA and C#? There are more platforms than just WinPC and the XBox. Or am I wrong and the majority of shops are only doing WinPC and XBox dev these days?
My Games
XNA Quicks
Advertisement
I recommend XNA because C# and XNA are pretty easy to jump into. Even on the GameDev.Net latest news there is a story about a person who knew little of C# and nothing of XNA and made a block destroying game in a very short period.

http://www.gamedev.net/community/forums/topic.asp?topic_id=526722

Being able to make games and sell them on the 360 is just a bonus. Plus you can make games for a zune. Sure there are more systems out there than the PC and 360 and zune, but with 1 framework, you can code it once and basically (there would be a few changes, no keyboard on 360 or zune, smaller screen on zune, etc) compile and distribute on 3 of them.

But that is why I recommend it. Of course, I am not looking to get a job at Bungie/Valve/iD/etc. I would rather work for myself. But that is just me.

my blog contains ramblings and what I am up to programming wise.
Any number of reasons.
* Most people are not learning with the sole goal of scoring a game development job, even if that is an interest.
* C#/.NET/Python/etc are important productivity tools, and good to know even if you are working in the industry proper. My former employer was moving all their tools over to C#. Civ IV is half Python code.
* Most employers value ability and demos are an excellent indicator of ability -- this is well known. It's a hell of a lot quicker to build said demos in an environment like XNA.
* Nowhere is it written that because C++ is The Industry Language (tm), it has to be the first and only thing you know. It's a much more rewarding path, I think, to learn to build a game using C#/XNA, and then go back and learn all the details and irritations that doing it all yourself in C++ can involve.
Quote:There are more platforms than just WinPC and the XBox. Or am I wrong and the majority of shops are only doing WinPC and XBox dev these days?
Well, the Playstation 3, the Wii, the PSP, and DS are all still relevant. Mac and Linux aren't, for better or worse. But there's a lot more to game development than simply knowing how to vomit out C++ code. Yeah, you'll almost certainly need it to get a job, but what good are you to an employer if you claim to know C++ but have no evidence that you know much of anything about actually puttinga game together?
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Quote:Original post by Imgelling
Sure there are more systems out there than the PC and 360 and zune, but with 1 framework, you can code it once and basically (there would be a few changes, no keyboard on 360 or zune, smaller screen on zune, etc) compile and distribute on 3 of them.


Sure, for now. One thing I've never liked about MS technology is that it only works/runs on MS technology. If one takes the route you recommend, then one day may come when they are job hunting and don't have a more generic game programming skill set like C++ to land a job somewhere that is more system/framework agnostic.

Also, this still doesn't really address the issue of game shops job postings wanting C/C++ vs. C#/XNA.

My Games
XNA Quicks
Because the principles of programming (understanding logic, etc) as as important as knowing ny particular language. Languages like C# make it easier too learn these principles. People can then go on and learn C++ is they wish.

At least, that's the theory. To be honest I'm glad I learnt C++ first because otherwise I doubt if I would have had the motivation to learn C++ as it is so much more difficult to get stuff done quickly.
Quote:Original post by Intrawebs
Also, this still doesn't really address the issue of game shops job postings wanting C/C++ vs. C#/XNA.


Yeah, I realized that after I wrote it. Edited it a bit, then saw your post.

my blog contains ramblings and what I am up to programming wise.
Because C++ sucks.
My preferred language is c++. The truth is that knowing multiple languages never hurts, and they each have their uses.

I find that I do my major projects in c++ but I tend to do my tools and editors (quick things I throw together) in C#.
Quote:Original post by Telastyn
Because C++ sucks.

well,it's only less comfortable than c#,seeing stuff like LPDIRECT3DDEVICE9 is hell annoying to read and remember as a developer,but in the end c++ games are faster than c# games and mostly we only care for the result.
Quote:Original post by jColton
I find that I do my major projects in c++ but I tend to do my tools and editors (quick things I throw together) in C#.
QFE - while you may prefer to write your engine in C++, or have a pre-existing engine, C++ is a truly horrible language with which to write GUI software. Something like C#'s .NET, Apple's Cocoa/Objective-C, or Python/wxWidgets is a much quicker way to get your tools/editors up and running.

Also keep in mind that being highly proficient with scripting languages is essential, in any programming field. You are going to need to write a lot of scripts over time, for format conversion, build systems, data export, etc.

Scripting languages are also useful for even smaller tasks as well - the other day I was given a homework problem, with the following sub-problem: find the summation of 100000/sqrt(i), for i=1,2,...,10000. Sure, you can solve it through integration, but a single line solution at the python prompt is a little quicker: sum([100000/math.sqrt(i) for i in range(1, 10000])

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

This topic is closed to new replies.

Advertisement