Game Programming Tests

Discussion in 'I wanna be a Game Programmer' started by kettiby, Mar 26, 2008.

  1. kettiby

    kettiby Lurker Not From Round Here

    Hello all,

    I am currently in the process of looking for jobs after I graduate from university. And (luckily) I have managed to secure an interview with a games developer.

    But I'm really worried about the test! All the stuff likely to be tested, e.g. C/C++, OpenGL and DirectX, wasn't taught on the Computer Science course I was on. Despite having dabbled in the aforementioned languages and technologies, I don't quite feel up to speed.

    Could anyone give me any pointers as the best way to prepare? I'm currently brushing up on my C and C++ knowledge but get a feeling that that alone won't be enough.

    Thanks in advance for any words of wisdom.
     
  2. Xajin

    Xajin Codebastard One Of Us

    Write a simple game in C++ using Microsoft Visual Studio Express.

    This will give you two things:

    1. Experience in C++ game development.
    2. A demo to show your prospective employers.
     
    • Thank Thank x 3
  3. PeterM

    PeterM (name subject to change) One Of Us

    Oh, and make the explosions look good.

    Worked for me!
     
    • Winner Winner x 1
  4. Mathematix

    Mathematix Banned

    What the other guys said. How are you at generally reading other people's code? You should have a sound enough knowledge from your computer science course to show that you can understand what a program is doing, as well as the syntax.

    A games programming test does not have to specifically test you on code only used in games - it is pretty likely to test you on your understanding of algorithms, including algorithm efficiency like Big-O and NP-Completeness (in the worse case scenario).

    Good luck! :D
     
  5. Xajin

    Xajin Codebastard One Of Us

    • Thank Thank x 2
  6. Bitterman

    Bitterman Not From Round Here One Of Us

    Xajin's original suggestion was right on the mark. If you've only dabbled in C/C++/etc, it's likely (depending on exactly who you're interviewing with, and the role you're going for) that you probably won't have the skills they're after. The only way you can gain these skills before the interview is by making a game. Preferably more than one, of increasing complexity.

    Don't get me wrong - you're in a better situation than some, because your course will have given you a background in which you can pick up the requisite skills relatively quickly. You just need to do it before the interview. (Don't be tempted to say in the interview "I don't know this stuff yet, but I'm a quick learner." The interviewer will only hear "I don't know this stuff, blag blag blag blag.")

    However you shouldn't underestimate the challenge. If the interviewers are after a certain level of knowledge, and you haven't got it, you will struggle - there's no way around that. Happily, as you're a graduate, the level of knowledge they expect shouldn't be that unreasonable; but I would be pretty certain that their expectations will only be met if you've made some games. Learning C++ out of a textbook won't help, you just won't absorb it.

    If it's any encouragement - my University course taught me sod all C/C++ and literally zero DirectX/OpenGL, in fact in practical terms it was rubbish, the people doing Physics did more programming than I did in CompSci. But I was able to combine the theory that I did get taught with the practicalities of doing stuff for myself (IMO both are essential), and got a games job straight out of Uni. So you're probably in a pretty similar place now to where I was then.

    General words of encouragement: if they've invited you for an interview, it's because they think they might want to hire you. You just need to prove them right - they're on your side already, you're not struggling against them.

    Best of luck, and if you don't get it, chalk it up to experience and try again. You may also consider subscribing to Develop and Games Developer magazines, visiting GameDev.net and Gamasutra.com regularly, and the fact you're on here is a good sign too; also grab yourself a couple of games programming books and work through them. But above all, get making games.
     
  7. Nokill

    Nokill Troll Not From Round Here

    yea go to Gamasutra and listen the first podcast they made its about getting a job and how to do this.

    And on the programming bit you can read tons of articles on the subject how to do it.

    Good luck
     
  8. kettiby

    kettiby Lurker Not From Round Here

    Thank you everyone, for some really good, useful advice! I've got a couple of game programming books that I working my way through, which should also help me in terms of C and C++.

    Worst comes to worst, at least I'll gain some useful experience from it all!

    PS: Loving that Youtube link... :)
     
  9. yaustar

    yaustar Industry Professional One Of Us

  10. MaciejS

    MaciejS Industry Superbeing One Of Us

    I've recently read interesting note on this subject. It's tongue-in-cheek, so take with grain of salt, but some good tips can be found there. Of course interview at Google is a little bit different than in gamedev (I dare to say, it's much harder).
     
    • Thank Thank x 1
  11. kettiby

    kettiby Lurker Not From Round Here

    Thanks for the links guys :)
     
  12. sp3c1al1st

    sp3c1al1st Literate Troll One Of Us

    If you're looking to be a games programmer, then you really ought to have more computer science courses than one. From your comments I'm guessing you didn't major in CS? If you haven't written games or demos on your own then, you may have a difficult time securing a game programming job. The other bits of advice on this thread are valid: try writing some of your own games, and/or get a CS degree. Alternately, you could consider doing something other than programming games -- art, production, sound, etc.
     
  13. trave

    trave Muppet One Of Us

    I read his message quite differently - i.e. by "Computer Science course" he means his degree. Unless a degree is biased towards games programming, you wouldn't get any DirectX, OpenGL or even C/C++ these days!
     
  14. kettiby

    kettiby Lurker Not From Round Here

    Yes, this is correct.

    The course I'm on is quite prestigious one (or so they say!) from a red brick university in England. So while we learn the theory behind many of the new and emerging technologies, we don't necessarily learn programming languages in great detail. The idea is, is that we learn enough at university to then go ahead and pick up job skills in our own time.

    It has its pros and cons.
     
  15. sp3c1al1st

    sp3c1al1st Literate Troll One Of Us

    Truly? It has been a while since my red brick experience, but even then we had two and a half years of moderately strenuous C work. Lots of operating system stuff, low-level rendering stuff (Gouraud and Phong shading and the like), plus some theory of computation and some required calculus. (There weren't no C++ in those days, you whippersnapper.) What's it like nowadays over there?
     
  16. randomnine

    randomnine Internet Robot One Of Us

    I graduated a few years back and my course was much like you described, but with a smattering of "web technology" and Java thrown in. One of the more technical projects was, in the second year: programming an emulator for a multi-core system that implements a given machine code, writing an assembler, writing a compiler to compile from a simple language to that assembly, writing an OS kernel in that language that supports multi-threaded programs and I/O. Half of that was just for extra credit, though.

    My university was part of the Russell Group, and even so the CS course was reportedly more technical than others at that level. I've heard that many universities now run softer courses, using Java as the primary language, so the applicants they get won't drop out - and most universities that can attract capable applicants treat CS as a mathematical, not engineering, discipline. CS hasn't necessarily gone downhill as such but has certainly shifted away from training competent programmers for industry.

    Since you mention it, I don't think there's a CS course in the land that seriously teaches C++ or the large scale software engineering that goes with it. I can understand that, though. They've only got three years: they wouldn't get anything else done :)
     
    • Thank Thank x 2
  17. Mathematix

    Mathematix Banned

    Awesomely said. I'm one of those 'mathematical' comp sci graduates and grateful that my old institution taught in that manner. :)
     
  18. kettiby

    kettiby Lurker Not From Round Here

    Replace C with Java and we've got the same course. My only concern is that there is very little hands on stuff. For example, I've learnt quite a lot about graphics theory - the basics like Phong, Goraud etc. and then more advanced stuff like classical ray tracing and Monte Carlo. Heck, we've even been lectured on the latest methods to extract geometry from real-life models. Yet our OpenGL exposure has been very limited. A bit odd that.
     
    • Thank Thank x 1
  19. sp3c1al1st

    sp3c1al1st Literate Troll One Of Us

    Thanks all for the update on current CS courses.

    In reply to the original poster who was concerned about being quizzed about specific technologies: this is a difficulty you will frequently encounter when being interviewed for any engineering position. And it is frequently the case that you as a programmer will get asked, "do you know technology X", where X is a ponderous bit of tech that no one human being really understands completely. In these cases, if you have some relevant experience, it is best to explain that honestly without inflating it, and if you have no experience, it is best to explain how your experience on a comparable tech (say writing your own renderer as opposed to knowing how to transform and light in OpenGL) would be applicable to your new job. Good luck and keep on interviewing!
     
  20. Maj

    Maj Gamer One Of Us

    For what it's worth, I look back on my uni days and wish I'd spent a bit less time learning OpenGL and a lot more time learning linear algebra. As it is, I'm fairly proficient in an obsolete API*, but when it comes to stuff that's important to me now - BRDF's, spherical harmonics, quaternions - I'm left floundering.

    * obsolete as in glBegin(GL_TRIANGLES) is obsolete.