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

Started by
164 comments, last by Promit 15 years, 1 month ago
Quote:Original post by Intrawebs
Is there a game programmers forum/site that has a bigger professional to hobby ratio? Something like CGTalk for designers but one for game programmers?
There is one, but hobbyists aren't allowed there AT ALL. So I don't think it would be very helpful to you.

For the record, I've been observing these discussions for several years, and most of the most vocal supporters of C#/XNA/Python are the ones who are professional game developers. For example, there's an ArenaNet employee in this thread, which is one of the companies the OP mentioned. I see a Microsoft employee too. I was working until recently myself and am credited on an Xbox360/PS3 title.

It's actually pretty funny. The people talking loudest about what game industry professionals use are the ones who have never been in that industry.

[Edited by - Promit on March 5, 2009 2:31:35 PM]
SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.
Advertisement
To the original point:

My suggestion is to get the basics of a game loop and graphics down in a language that you already know (i.e. C#). Getting a full game running is hard enough without also throwing in a language that you're unfamiliar with.

That said, if the goal is to learn how to make a game loop, you might be better off starting with something like SlimDX than XNA, because XNA has a whole bunch of stuff that builds up the loop and the framework for you, which would defeat the purpose of what you're trying to do.

Since you're trying to make yourself marketable to the industry, you'll have to switch to C++ at some point. I'd do it once you're comfortable with the basic concepts of a simple game. The goal of this stage, of course, is to learn (some) C++, since you WILL need to know that to get any sort of job in the industry. There are a variety of reasons for the prevalence, mainly that it can easily run on any console (Whereas only one console can natively run a C# app). However, it's been stated that many of the big players in the industry now do their tools in a managed language (C#, mostly), because it's easier to get them up and running, so your C# knowledge won't be totally useless, either.

If you were never trying to get into the industry working with C++, or if you already knew C++, my suggestion would be different: if you're just going to do games work as a hobby and nothing else, C# is, in my mind, the way to go. The ease of working with it more than outweighs any of its (perceived) downsides.
Quote:Original post by Promit
It's actually pretty funny. The people talking loudest about what game industry professionals use are the ones who have never been in that industry.


Very good point, I wasn't aware of that. Thanks.

Quote:Original post by Drilian
My suggestion is to get the basics of a game loop and graphics down in a language that you already know (i.e. C#). Getting a full game running is hard enough without also throwing in a language that you're unfamiliar with.


Great suggestion, I may modify my approach than from a few posts ago and start with SlimDX (havent heard of that) or XNA so I can understand the abstract necessities of whats required to get a game running etc. Then move to c++ shortly after and not have to struggle with basic game dev and c++ at the same time.

Regardless, I will post my efforts on my blog overtime and keep in touch with this community. Thanks again for the help.
My Games
XNA Quicks
While I should probably let this thread die, I just found this excellent article on Gamasutra, a survey of many game dev execs and what middleware they choose and why/what they use for prototyping. Tons of good info here and it relates to this thread quite a bit.


http://www.gamasutra.com/blogs/MarkDeLoura/20090302/581/The_Engine_Survey_General_results.php

For the second to the last graph he states the following...

"...Several people noted that are using their previous engine versions to create prototypes for the next game. But what do new studios use? It looks like they probably create one-off C++ applications, sketch things out on paper, or use Flash or Lua. I had suspected that more developers would be using C#/XNA due to the ease of quickly knocking out quick test applications with it, but only 5% of the responders said they are using this for prototype development. (However, 76% of developers are using C#/XNA for tool building.)..."
My Games
XNA Quicks
Quote:Original post by Promit
For the record, I've been observing these discussions for several years, and most of the most vocal supporters of C#/XNA/Python are the ones who are professional game developers.

/Raises hand.

I'm using C++ at work (due to the platforms we're working on), but for anything else (tools), I'm using either C# or Python. At home, I've been building Flash games for a while using haXe and Python. It's not really that I find C++ so annoying to work with, but compared to other languages, it's not exactly smooth (even though it's the first language I learned - I used to 'love' it). I'm also simply more productive in higher-level languages, and it's actually quite fun to be able to focus on what you actually want to create - and to achieve it within hours rather than days. :)

I'm glad I looked beyond C++. Working with multiple languages allows you to pick the best tool for the job, it'll make you a better programmer.

I also believe that starting with small, simple games, using high-level languages is better for beginners. It gives them an overview of what game-development means, and they can learn how to program with these languages just as well - if not better, because there's less hassle in the way. Actually, I learned a lot about game-development through level-design - it has given me valuable insight.
Create-ivity - a game development blog Mouseover for more information.
Quote:Original post by Intrawebs
Quote:Original post by noe
C++ is more preferred by industry because:
I also can't believe how much disrespect C++ has on those forums and this is most important language in our industry. It is our language and deserves much more respect than it gets here. And no, I am not C++ fanboy.


Taking into account that there is a lot of hobby developers here it would make sense that they don't prefer c++, which is totally fine IMHO. Is there a game programmers forum/site that has a bigger professional to hobby ratio? Something like CGTalk for designers but one for game programmers?


Don't get me wrong, I am not claiming that C++ is better than anything other language out there. In fact I totally agree that personal preference is most important thing in hobby development. I was only trying to explain what employers often mean when they are looking for "C/C++" programmer. The only thing that makes me really sad are statements like "C++ sucks", I never understood why is there so much hate to C++ in here, especially when compared to C#. C# was designed for C++ programmers that were sick of doing simple things hard way and not against them. Both languages are great, both have their strengths and weaknesses and one can only have best outcome using them both.
Hey, just thought I'd chuck my hat into the ring one more time. First of all, to qualify, I do not currently and have never worked for a professional game development company. My opinions here are purely based on my 10+ years of hobby game dev and from my (somewhat over-avid) reading of industry literature.

First of all, as you'd be looking to get an entry-level position in a large professional studio (or at least that's what I'm assuming from your posts), your initial workload is likely to largely involve working on tools and other similar "helper" functions, rather than working on core game engine code. This is just a risk-management strategy on the part of the management. Once they see you can write solid code, you'd get more opportunities for core work. For a smaller organisation, this might be different. So any experience you get knocking up quick apps with C# (or a similar language used for rapid prototyping) won't necessarily be lost when you go to make that move.

Also, as Drillian said, you can learn the most important fundamental game dev skills (creating tight game-engine loops, running your primitives through shaders, etc) in a language you know, then switch to Cpp once you want to get more low-level. I started out in D3D using Cpp, but if I was starting out now, I'd much rather I'd been able to cut my teeth on something like C# and XNA, as I'd be able to learn the basics of shaders, batching up geometry, spatial hierarchies, camera control, etc, without having to worry about some of the lower-level stuff. XNA really is designed to ease people who have little previous experience into the field and as such, I'd recommend it highly. Of course you won't be of much use to a larger organisation until you've got more gamedev experience under your belt, but at least you'll have lots of nice demos to show them (which is definitely a good thing to have when you're interviewing) once you are ready.
Quote:Original post by noe
I also can't believe how much disrespect C++ has on those forums and this is most important language in our industry.



Just because it's important, widely used, vital to virtually all game programming jobs and even respected doesn't make it good.

Quote:
I never understood why is there so much hate to C++ in here, especially when compared to C#.

C# was designed for C++ programmers that were sick of doing simple things hard way.


It seems like you have a pretty good idea why...
Quote:Original post by Promit
It's actually pretty funny. The people talking loudest about what game industry professionals use are the ones who have never been in that industry.


I've been through the whole internship begging - to internship working at a small indie - to resume spamming - interview failing - interview succeeding - starting on tools team at ~100 person indie - to finally on a game team and looking at potential recruits process. I guess I'm still a noob with only 1 year as a fulltimer, but I'm pretty in tune with what the industry is looking for from trying to help my friends break into the industry since I got hired.

Like I said before, the number one reason I've seen for us turning away entry-level programmers is a lack of C++ knowledge/experience. The second is a lack of basic math (especially linear algebra and discrete math). Having a passion for making games is obviously critical, and showing demos or even completed games is a brilliant way to prove that you're not all talk.

Good luck!
[size="1"]Try GardenMind by Inspirado Games !
All feedback welcome.
[s]
[/s]

[size="1"]Twitter: [twitter]Owen_Inspirado[/twitter]
Facebook: Owen Wiggins

[size="1"]Google+: Owen Wiggins

Quote:Original post by Telastyn
Just because it's important, widely used, vital to virtually all game programming jobs and even respected doesn't make it good.


Why are you doing this? Do you really believe C++ is not a good language?

Quote:
It seems like you have a pretty good idea why...


Yes, I do know know them, because I know C++. It can be pita sometimes but I still like it because of many other reasons. C++ is hard and for todays standards quite old (in terms of last update) language but lots of things will change in C++0X (well probably not 0X anymore). Remember that most of so-called C++ flaws are language design decisions so it is really unfair to bitch about them all the time, just pick other language that is made other way.

This topic is closed to new replies.

Advertisement