How important is the knowledge of a language versus the games that you have developed in your portfolio?

To be more specific. Personally, I dislike C++ for several reason(mainly due to it's complexity, and pointers, and I prefer D as my language of choice thus far. Due to this, I've written two games in D instead of C++ that are my personal projects. Am I wasting my time with D? Should I start using C++ again?

For reference, I have 6 months of experience in C++. It's the first language I learned. I have messed around with SDL/SFML and a bit of Direct3D with C++ as well.

Even though I like D, i'd rather not waste my time learning it, if it in no way will help me get a job in the gaming industry.

  • \$\begingroup\$ this might give you a little hint :gamedev.stackexchange.com/q/22753/7328 \$\endgroup\$ – Ali1S232 Mar 24 '12 at 6:35
  • \$\begingroup\$ IMHO, with C++, there's just no better way to learn "everything programming" these days. Later if you want to learn D or C# or Java, it's going to be a breeze, other way around won't work out so well. \$\endgroup\$ – dreta Mar 24 '12 at 13:44

It depends on what sort of games you want to make. If you are talking consoles or big studio PC games, the vast majority is C++ with maybe a few plain old C holdouts still around. That doesn't mean it will always be that way, D very well could become the standard in a few years if enough people get into it and quality tools are developed but so far I've never heard of a commercial game using it... or any game for that matter yet.

This doesn't mean that it's a waste of time though! Knowing multiple languages is important, even if you don't end up using all of them on a regular basis. Much like with spoken language, learning a new programming language can actually improve your skills with other languages as you come to understand general concepts about programming. Also, by understanding how the same concept can be implemented in a different syntax and/or paradigm, it will make it easier to learn additional new languages, which may be a requirement. Adaptability is an important skill. For instance, my current project at work is using Scala, a language I had never touched prior to the start of the project.

Having knowledge of the language(s) that a company uses is definitely desirable, but far more important is your fundamental understanding of things like data structures, algorithms and architecture. You can get a programming job based on those merits even if you aren't familiar with the particular language a company uses, but not vice versa.

  • 2
    \$\begingroup\$ Ok, thank you for the reply. I realize I am focusing too much on the language. I will go with what I like for now, and just focus on problem solving, and programming concepts. I will keep plugging away, increasing the complexity of my projects! \$\endgroup\$ – RedShft Mar 24 '12 at 6:57
  • \$\begingroup\$ "but far more important is your fundamental understanding of things like data structures, algorithms and architecture." I disagree. For some jobs in game programming, this may be true. But if you're having to touch the low-level stuff to optimize performance, mastery of C/C++ or even assembly will be very important. \$\endgroup\$ – Nicol Bolas Mar 24 '12 at 10:00
  • \$\begingroup\$ I certainly didn't mean to imply that knowing C++ wasn't important for the "big game" section of the industry, but even there the application of very low level knowledge is infrequent and very specialized, i.e. knowing the performance characteristics of a particular console's hardware, which is not something you can typically learn outside of the industry and is also an ever changing target. \$\endgroup\$ – Jason Morales Mar 25 '12 at 1:35

I gave Jason's answer a +1 for content, but I disagree with the overall verdict. In the traditional gaming industry you're going to be staring at C++ 8 hours a day (or more) so you need to be very comfortable with it, even if it's not your 1st choice. If your portfolio shows that you basically avoided C++, then a prospective employer is likely to have second thoughts about whether you can adapt to their existing code base. Understanding the important concepts about data structures and algorithms is also essential, but if there's any doubt that you're able to implement them in C++, then you would be at a serious disadvantage compared to someone who's got evidence of that ability. For example, you may dislike pointers but being good with them has been essential in all game engines I've worked with.

If I were in your position I'd firstly decide what I meant by "the gaming industry" because that is changing a lot and there are lots of games now, eg. on mobile, web, tablets, etc, which don't use C++. But if you wanted to aim for the traditional AAA market I would say a portfolio needs to primarily be of C++ programs, with a D program thrown in as evidence that you are not limited to one language.

  • \$\begingroup\$ Ok, I see your point. Thank you for the response. I will focus on c++ it makes sense. \$\endgroup\$ – RedShft Mar 24 '12 at 17:36

C++ is a great language. It isn't very complex: the learning curve is fine, level of entry is low, and pointers are awesome! No better way to learn about variables, memory, functions and so on... I used to recommend Python as someone's first language, but I avoid doing so now. Why? Because Python is a really abstract language. You wont learn a lot about how computers work on a lower level if you start with Python.

So, I seriously recommend that you start learning C++. It has a much larger userbase and codebase than D, and it's the industry standard for the AAA. However, if you only plan is to make smaller indie games, then it might suit you fine. The problem is that as soon as you expand your team to have more programmers, you'll run into troubles. Chances are, they wont know D... But, as you stated, you're interested in getting a job, so yeah, you should use C++.

Also, you are not "wasting your time with D". Programming isn't wasting time. Once you grasp the basics of a language, that algorithm you learned with D can sure as hell be coded in C++ or Python. So, after some time, you're not learning a language, you're learning to program. This has a lot to do with your portofilio, if you made collision detection in one language, it isn't hard to make it in another.

  • 1
    \$\begingroup\$ Yeah, it's true, they won't know D. I also believe that C++ has many of the features I really like in D. \$\endgroup\$ – RedShft Mar 24 '12 at 17:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.