   Style Question
  Hello, all.  Im a new college grad and am looking to get into the game industry.  Recently,  I took a programming test from a propective company and was passed over undoubtedly for more experienced candidates.  This however, got me wondering how much my design influenced their choice.  I have explored many languages and am aware that I might not be programming in the ideal 'object oriented' approach in c++ design.  So my question is, do game development companies look for a certain style of programming and design in games?  How big a role do c++ facilities such as templates and classes play in game engine design?  Do objects completely dominate the systems such as in Ogre and other such engines? Am I focusing on the wrong aspects? I would like to hear from all you guys and gals in the game industry and possibly give me some advice on qualities or styles which  companies like to see demonstrated. Thank you.   
Quote:Original post by djbuzzkillSo my question is, do game development companies look for a certain style of programming and design in games?They look for the ability to design and maintain software systems in a strict OO style which emphasizes clarity, efficiency, and extensibility. That's not to say that the code which is written for games actually always follows these guidelines, just that when it doesn't, it shouldn't be because the programmer didn't know how to.Quote:How big a role do c++ facilities such as templates and classes play in game engine design? I've seen both used a lot. Much more the latter than the former, of course.Quote:Do objects completely dominate the systems such as in Ogre and other such engines?Yes.If you never took a software engineering class in college, that's a problem. If you have not worked on large (over 50,000 LoC) software projects in the past, that's a problem. If you don't fully understand object orientation and hence don't know how to leverage it, that's a problem. These are all problems which can be worked on, of course. Game developers ARE hiring new grads. They're doing it a lot. But there's a lot of new grads, so if you want a chance you'll need to distinguish yourself from the pack.   ;  HeyI've graduated in a French engineer school in september 2k5 and got hired as a developper an january 2k6, that is 5 month later.What was expected from me when I had the interview is a complete knowlege about C++ (by complete I dont mean they asked me questions about the darkest c++ corners, but some general random question that vary for every candidate)I think they expected someone who was familliar with c++ yet not an complete expert. What matters most is the ability to learn things by yourself, ability to work with a team, ability to understand other's code (which is by definition ugly since it is not yours), the strength of your wills to learn more about video game industry.About your conding style, you should just keep it "clean" and neutral. I'd focus on readability rather than efficiency, for example, focus on stability, focus on making your code less error prone, and be prepared to change your coding style anyway since you will have to adopt your company's.I'm convinced that many companies have jobs for people that are a good "raw material" to train rather than for experts who know everything already. Of course this is my single experience and is probably not representative (did I enven hav to mention it)I hope that could help you a bit. Since I was in a situation very similar to yours a couple month ago, you may PM if you want more information or just to hear more about my story.Edit: forgot to metion a good knowledge of DX or GL was required too, and a sample demo application with source code.Regards,Janta[Edited by - janta on June 12, 2006 7:53:10 PM];  If you haven't done so already, read through the C++ FAQ Lite - it's filled with useful information.There are also a number of books that will make you a better C++ programmer, here are a few: Exceptional C++, Effective C++, C++ Coding Standards, C++ Common Knowledge.You should also be familiar with Design Patterns. Here are a couple of sites with some more information.   ;  Thanks for the advice everyone.  I'm not a complete stranger to c++.  It is my first language and have read through design patterns and Alexandrescu's Modern c++, although the template acrobatics seem a little to extreme to be practical.  I'm assuming people take a moderate approach to using c++ design.  Quote:Original post by Will FIf you haven't done so already, read through the C++ FAQ Lite - it's filled with useful information.There are also a number of books that will make you a better C++ programmer, here are a few: Exceptional C++, Effective C++, C++ Coding Standards, C++ Common Knowledge.You should also be familiar with Design Patterns. Here are a couple of sites with some more information.;Quote:Original post by djbuzzkillThanks for the advice everyone.  I'm not a complete stranger to c++.  It is my first language and have read through design patterns and Alexandrescu's Modern c++, although the template acrobatics seem a little to extreme to be practical.  I'm assuming people take a moderate approach to using c++ design.  I'd just like to second that point about "template acrobatics" in that book. I have a reasonably good understanding of C++ but that book really made my head hurt. Are there any companies out there that would really want their developers using lets-go-mad-with-recursive-template-parameters patterns? I found the use of the computer-generated header file particularly unpleasant.;  I've used some of those techniques in practice. There are many situations where they can be applied, although in many of these situations there is a alternative that is much easier to follow (and functionally equivalent, thus, better). Every now and then a problem does come up where heavy template metaprogramming does offer an attractive, advantageous solution.But those situations are quite rare.   