1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Astrophysicist turned video game programmer?

  1. Nov 21, 2015 #1
    Hi all,

    I'm at a bit of a crossroads - I'm in a direct PhD program (in Astrophysics) right now, with the option of walking away with my Master's in September. In all of my research projects I've focused heavily on simulations (I know Python and Fortran, but not anything from the C family, though looking to take a C++ course next semester, and they have been fluids codes mainly) and I found that I love coding - so much that it even overshadows my love of learning about topics in astronomy and astrophysics! It's a bit alarming, and so I'm looking for a bit of insight - I was thinking of maybe graduating with my Master's and going into the industry, and in particular I would love to start programming for video games.

    I realize this profession is nothing like how it is to actually play video games - I expect mounds of complex code and lots of debugging, and days that are boring and frustrating as a result of this, and general stressfulness due to deadlines. I realize it's not all roses on the other side! But, I think it would be fun, also partially because I'm artistic and damnit, I want to be part of a team of people that brings these fantastic, beautifully-rendered games to fruition. Ubisoft is literally a couple blocks from where I live!

    I guess part of what I was wondering is, how feasible is this? Clearly I need to learn C++, and I might even need to have a portfolio of little games I've coded up - I'm up for that! (Although, should I use a game engine (I have Unity and it's very fun to play around with, also it's teaching me a bit of C#!), or should I make a simpler game but from scratch? I don't know what would look better)

    I should note that I'm looking more at a generalist programmer career path - I have physics knowledge, of course, but I'm not hellbent of finding a role that specifically puts this to use.

    Is there anything i should be doing right now while I work on finishing my degree, aside from learning C++? Or, is this a pipe dream that has little chance of happening for me without an extra year or more of dedicated computer science study? Any insight is much appreciated - I don't know many people I can talk to about this. Thanks in advance!
     
  2. jcsd
  3. Nov 23, 2015 #2
    I'm not even sure that I know where to start...
    1. To get a job, you need experience programming in the language of interest. You don't necessarily need a CS degree, but if you are saying "I need to learn C++", you have a *lot* of work ahead of you.
    2. Video game companies have a reputation for treating workers like garbage. (Enough people want to work in the sector that they can be confident of easily finding replacements.)
    3. As a programmer, they are not going to let you anywhere *near* the art, so being artistic doesn't help you at all. Creating the art is a different job entirely.
    I'm not saying anything is impossible... but at this point, I don't think you have a realistic view of what programming video games entails. Let me give you an analogy. I like looking at pictures from Hubble and using my backyard telescope. Do you think I have a future in astrophysics?
     
  4. Nov 23, 2015 #3
    Thanks for the reply. It's true that I don't have a realistic view - that's why I posted for some guidance.

    1. Yes, I have a lot of work ahead of me! So long as I don't need to go back to undergrad that's fine (though I have access to auditing undergraduate courses, which may be of benefit - I'm exploring this option for winter semester...) I've started re-writing one of my hydrocodes in C++ this weekend and it's been a decent introduction to the syntax and using the libraries, but at some point I know I'll need to build actual, complete mini-games to show possible employers, so it would help to know the best way to do this (for example, Unity3d and aim higher, or C++ and Allegro, ditching the GUI interface and user-friendliness?)

    2. Yeah, I've heard that - it's concerning.

    3. I thought smaller studios required people to be flexible in their skills? Well, if not I was misinformed here.

    I understand the analogy, but you're speaking to someone who dropped out of a psychology degree and went into physics on a hunch that I might like it better (though, I put in an extra year of work tutoring my math skills and getting the required math and physics high school credits to apply for my bachelor's...so it was a direct path but a lot of hard work!) So, to your hypothetical question I would say yes, if you're willing to put in the work.

    I'm just looking for someone to give me some insight as to the road ahead and what path I would be better off taking, if I were to make the change.
     
  5. Nov 23, 2015 #4
    I don't think you have to go back to undergrad... but you need to gain a similar amount of experience coding.

    And yes, you might have a better chance in getting involved in the art at a smaller studio, but I wouldn't call ubisoft a smaller studio! Even then... the art designers are a different breed than the programmers, and I'm not sure how much exposure you'd get even at a smaller studio.

    If you are determined to get into the video game industry, work on learning how to code, first and foremost. Secondly, don't expect to get involved in game or art design as a programmer. And thirdly, good luck!
     
  6. Nov 23, 2015 #5
    Thanks for your advice and a bit of a reality check! C++ bootcamp it is. : )
     
  7. Nov 23, 2015 #6
    Or, a really good tech demo.

    If you are going to put games in your portfolio then it's probably better to have one (or two) very polished games than six mediocre ones. Of course, you might make lots of little games for practice or fun, but they don't all need to go in your portfolio.

    For the games, you should probably use an engine (otherwise they'll take forever to make). I'd suggest either Unity or the Unreal Engine, as they are widely used by companies that don't have their own engine, so familiarizing yourself with one of them would be useful.

    If you want to do a tech demo then you should probably write that yourself from scratch, just using whatever APIs or libraries you need.

    Other than that: learn C++ as well as you can, which means that you need to write lots of code, then debug it and optimise it.

    Also, learn something about data structures and algorithms.

    If you have time then some basic knowledge about SSE (SIMD) instructions, DirectX rendering (or OpenGL if you prefer), multithreading and quaternions (used to represent rotations) would be helpful.

    There is some truth to this, but not all companies treat their staff badly, and some of the bigger ones have improved their practices in recent years.

    Learning C++ takes a long time, so if you are still interested in physics you should at least consider the possibility of completing your PhD and learning to program in parallel.
     
  8. Nov 23, 2015 #7
    It depends on what you want to do. "Video games" is such a huge industry and there are so many different careers. There's the programming and development (which is a CS job through and through, if you don't even know C++ yet, you've got a long road ahead of you), then there's the artistic work which can be anything from playing music in an orchestra to designing the in-game artwork, and then there's the technical stuff like engine programming.

    If you're already involved in your physics PhD and you're dead set on working in video games, I'd go for engine programming. Supposedly, there's a big push to hire more mathematicians and physicists to help design graphics engines or find ways to use tricks like procedural generation to make production more efficient.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook