Go look at positions at game companies and tell me what you see. You'll probably find that you have the web/facebook game crowd who are mostly looking for actionscript/php devs, the desktop crowd who look for c++/lua and the i-gadget crowd who use objective-c. It depends on what you want to do really as to whether or not you're hurting yourself. (This is coming from somebody who is focusing on C# and python and ignoring c++)
–
Kenneth PoseySep 29 '11 at 21:25

6 Answers
6

IMO, yes, you are likely to be hurting yourself. First of all, rightly or wrongly there is a perceived hierarchy among programming languages -- and C++ generally has a higher standing than Java or C# (e.g., questions like yours are fairly common -- the reverse is virtually unheard of). If you apply somewhere that uses C# or Java, and you know C++, they're unlikely to question your programming ability. If you apply somewhere that uses C++ and you know C# and Java, there's a pretty fair chance, they will question your programming ability, at least to some degree. That's not to say the perception can't be overcome, but you're still putting yourself at a disadvantage.

Second, at least among the independent game developers I know (admittedly, not very many), there's some basic dislike of C# just because it's from Microsoft. Sun was viewed a lot more positively, but since the Oracle buyout that doesn't seem to be the case anymore at all. Most see "Oracle" and "cool games" as about as close to exact opposites as humanly possible.

Finally, from a practical viewpoint, games are one of the places where C++ is used most heavily. If you don't know C++ to at least a reasonable degree, it simply restricts your options considerably.

I liked this answer because of the comment on the perceived hierarchy of languages. I'll probably continue to do my initial project in XNA, for the most part I really like C#. But I'll make my next project in C++. All the other comments where also very encouraging.
–
Bryan HarringtonNov 18 '10 at 6:50

I really wish "corporate evil" rhetoric wasn't used as a metric for why not to choose a programming language, but I guess even us programmers are not completely pragmatic.
–
ChrisCSep 28 '11 at 20:48

@Jerry, just out of curiosity, if c++ only got a higher standing, what is on top?
–
Ali.SSep 29 '11 at 0:46

1

@CCRicers: At least some of it does seem to be pragmatic. While some might see Oracle as evil, most just seem to think they're unlikely to ever care about games at all. If they could improve Java for gaming a lot with 10 hours of work, or for accounting a little with 10000 hours of work, most are convinced the accountants are going to win and games will be ignored.
–
Jerry CoffinSep 29 '11 at 3:23

It isn't entirely clear, but what are your goals? To be a game designer? What do you think that position is/does?

In the basic case, as long as you're not writing actual code, not knowing C++ specifically won't hurt you. Of course, having a fundamental understanding of programming itself (object oriented design and being able to think in terms of conditionals, etc) is going to help you. What C++ itself does compared to C# or Java probably isn't going to matter when it comes to helping design game rules that are easy to describe with code.

Well specifically, I feel that the most natural way to become a designer/director is through being a programmer first. In 20 years, assuming C++ is still the way to go for games (I didn't even think of that) I feel not having a C++ project on my resume while going for a Game Design/Progaming Job is going to prevent me from getting a job.
–
Bryan HarringtonNov 16 '10 at 19:50

It depends on what job you're applying for. Generally console development requires C++, but, for example, you could be using an engine and do all your work in a scripting language instead.
–
Tetrad♦Nov 16 '10 at 19:54

It really depends on what your goals are. If you want to move into design as quickly as possible and work your way up there to be a director, the technical background you have knowing Java and C# well will be more than enough.

If your intent is to work your way up to a senior / lead programming position and move over to a director position from there, you'd better learn some kind of unmanaged language. Not necessarily C++ - C, Objective C, or something more fringe like D would be fine. But even working at higher levels of abstraction in C#, it's hard to be a great programmer without understanding pointers and memory management, without being able to read assembly and memory dumps, without being able to understand or even really implement low-level optimizations.

I should also add - if you're not in the industry now, planning 20 years out is silly. Maybe you'll find out you hate it; maybe you'll find out you don't want to be a director because of all the non-development crap involved, and you'd rather just stay a senior designer or programmer, working under a director but with lots of freedom in a specific domain you enjoy.

You will probably be fine using the languages you know;
C# with XNA is popular right now since you can develop to XBOX360, Zune, and PC.
Java's popularity is coming back because of Minecraft's indie success with it.

I was in a similar position as you though, and decided to "start over" so to speak with C++, and 2 weeks ago I purchased "Beginning C++ through Game Programming." It is NOT a game programming book, but a C++ beginner book that covers everything you will need to know in C++ when programming games with another API or Library, and substitutes boring projects with more game-related ones. It was a great read.

Now I am moving on to DirectX and purchased a book titled "Programming an RTS Game in DirectX" by Carl Granberg. It has fantastic reviews. I'm still not sure if I made a bad decision with DirectX over OpenGL, but we'll see.

Learning more languages will only be to your advantage. Even if nearly all pro engines use--or should use--scripting and/or extensive tools for designer ease-of-use, you're correct in that it helps greatly to have a project that you have specifically worked on. Even if your interviewer doesn't pay attention to your projects (which is already unlikely,) working on even one personal project will be a huge learning experience.

For designers and artists, the portfolio is arguably even more important, since you can't take programming tests or have straightforward tech interviews. So, I'm not saying that you should freak out and learn everything there is to know about C++.

Rather, you should be able to show a few games that have good design potential (think small, clear game concepts like Limbo or Portal,) whether you developed them yourself or you made them using Flash. Use coding as a tool, not as your primary weapon. Make sure they're easily accessible on your site with gameplay videos, screenshots, and available downloads.

Above all else, polish everything you make, no matter how small or what kind of project you have. If programming is about robustness and usability, then designing is about fun (people often forget this) and showing that you can really nail the details.

C++ is the originator and the creator of some of the most widely used languages which includes Java. By learning C++ (whether for game dev or otherwise), you'll be able to learn almost any language with speed and ease. That's the magic of this language. C++ gives you more control of the code as compared to Java. So if you want to really be a true master of your code, then you'd be in a much better position learning C++