Sign in to follow this  
kobe bryant

Becoming a physics programmer

Recommended Posts

I made this post specifically for people who are physics programmers or people who know about the ins and outs of being one in the games industry. I decided recently that physics programming was the area of games programming i would like to persue, i have no formal training in physics, i didn't do it at degree or college (high school for the yanks) level. I am currently doing my masters degree in games programming, we will do a physics module next term. My supervisor recently informed me that programmers without degrees or PHD's in maths/physics are very unlikley to be employed as physic programmers. I came here to get some more opinions, i dont expect a games company ask me to write a physics engine after one semester of rigid body physics but i did feel that i could acquire the knowledge over some years at a company and specialise in this area eventually. Any advice or opinions will be very welcomed.

Share this post


Link to post
Share on other sites
I wouldn't count on being able to get a job creating a physics engine without a specialized degree, or specialized training or experience. The math for physics, to do it robustly, understanding all the nuances, make it superfast, is far from trivial. Understanding simple 4x4 transformation matrices and vectors and basic 3D graphics will not cut it, to say the least. I think the only way you would be able to do this without a degree (even, actually, with a degree) would be to create something on your own that is basically state-of-the-art, e.g., prove that you can write fantastic physics. Otherwise, you'd have a really hard time convincing any studio or middleware company that you have the skills.

That said, there are a dozen (well, lots) of robust physics engines out there now, including several that are sufficient for current commercial games. I believe it is possible to get a job coding up physics in a game that uses an existing commercial engine without a specific degree in physics. I'd actually suggest that experimenting with these engines is a good way to jump into game physics. See the Forum FAQ for a list of some of the engines that are available.

Share this post


Link to post
Share on other sites
I would say write a physics demo from scratch, in your own time - don't wait till you get taught it. It will teach you loads - not just about the tiny subset of physics that is relevant in games, but about optimisation, library/software design, optimisation, graphics (cos the demo has to look nice too :), code and numerical stability, algorithms, you'll develop a consistent coding style (if you haven't already) etc etc. At the end of it, at the worst you'll have decided physics isn't that interesting after all, probably you'll have found out what simply doesn't work very well so you'll know better next time, and hopefully (after maybe the 2nd or 3rd attempt) you'll have a demo that really rocks - not only because it shows you know basic physics, but also that you're able to make everything come together and work.

It may be true that in practice an employee who's got experience working with a couple of commercial engines, even though they never wrote a piece of low-level physics code in their life, might be a better hire that someone who wrote a supa-doopa physics engine but had never touched anybody elses code... but at the same time if someone sent me a demo (not that I'm in that kind of position :), there's no way it could really stand out as being exceptional if it says "uses Novodex/Havok" at the bottom of the readme file...

I guess the coolest thing you could do would be to write a physics demo that let you switch at run-time between your own physics library and Novodex/ODE/Newton etc.

Having said all that... just because you use a physics demo and your interest in physics to get yourself a job in games programming doesn't mean you're likely to get your first job being the one physics guy in the company. The chances are once you start working they'll be a bit of room to manouever, and hopefully you'll get a chance to gravitate towards what you're good at. If that means working on physics even though you don't have a physics degree (which will probably mean reading/learning lots of stuff in your own time as you work), then so be it.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
I dont' think that programmers that don't have degrees are very unlikely to get game programming jobs. I met this dude at school thats worked for several high-profile game companies, all before he had his undergraduate degree. The reason being that he was simply a competent self-taught programmer, with some killer demos that he managed to convice people to take a look at.

ps
sorry fot the typos, i'm rather drunk

Share this post


Link to post
Share on other sites
Well, I'm a physics programmer working on a production game. I have written a physics engine from scratch (with inspiration from ODE).

I have a Ph.D. in math & physics, so that obviously helps a lot. I suggest the following:

1. Study the numerical solution of differential equations (write some integrators and compare their stability).
2. Study robotics. Implement an IK system. Implement Featherstone's algorithm.
3. Study data structures. Study graphs.
4. Study constrained optimization. Understand Lagrange multipliers.
5. Study computational geometry. Understand spatial data structures. Understand convex hulls, triangulation, GJK. Learn the separating axis theorem.
6. Study kinematic constraints. Derive Jacobians.
7. Study impulses.

After all that, rip apart ODE and learn everything about it. Then write your own engine from the ground up and make some demos.

From my experience, it is not enough to make a physics engine available to your team. You also need to understand every aspect of its behavior. Your team will count on you for support.

Share this post


Link to post
Share on other sites
love what you're doing and new knowledge will find it's way to you. if you're forcing yourself to do this then it's not for you. if you really enjoy it and find yourslef coding projects in your free time, then it'll come to you naturally with some hard work. I'm a little more traditional then most. I'd say learn this stuff from a theoretical standpoint first. like pick up a mechanics book like Glodstien's. math is obviously important, a good working knowledge of calculus is important, and at least some differential equations. however knowing how to solve differntial equations analitically isn't as important as knowing numerical methods. nire got some good points, all this stuff is important, a good knowledge of linear algebra is also important. don't try to learn it all at once you'll kill yourself. start with the math, learn calculus, linear algebra, in depth and differential equations learn the basics at least.

Tim

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
I've been Head Programmer for some high profile studios and I've hired a fair few programmers in my time. The best physics programmer I've met so far is an Italian guy who is completely self taught. He started with the basics and then studied and studied, his dedication was awesome. If I remember correctly he doesn't have a degree in anything, but he certainly has a job in the games industry.

Best way in is to do what the guys above have said and make some good demos. First thing I ask for is demo code no matter what position is being applied for.

As a general statement I'd also advise that you really understand everything that's happening in your system. Too many people download code off the internet and never understand what it's doing, their demos work fine and then when they get asked detailed questions about what's going on they try to bluff "did that bit a long time ago" or "I can't quite remember how that works". Do that too many times, especially if the questions aren't at the nitty gritty level and you can expect to not get the job.

The game industry takes a lot of dedication, but if you like a challenge it's very rewarding.

Good luck.

Share this post


Link to post
Share on other sites
Quote:
Original post by kobe bryant
Thanx for the feedback, how long will it take to learn all that math and what are the best books to learn these things.


If I may, I'd like to second this question as this is an area I'm also very interested in.

Cheers for all the information posted.

Share this post


Link to post
Share on other sites
I don't know if this is a field of work that I would really want to get into I'm sure that as soon as physics chips come out a lot of the physics programming jobs are going to be relegated to API calls. With the physics being hardcoded into the chips.

Share this post


Link to post
Share on other sites
Quote:
Original post by Vanke
I don't know if this is a field of work that I would really want to get into I'm sure that as soon as physics chips come out a lot of the physics programming jobs are going to be relegated to API calls. With the physics being hardcoded into the chips.


Hmmm.. I can imagine something very similar being said a few years back...

"I don't know if this graphics programming is a field of work that I would really want to get into. I'm sure that as soon as 3D graphics chips come out a lot of the graphics programming jobs are going to be relagated to API calls. With the graphics being hardcoded into the chips."

The point being that whilst it will get less and less necessary as time goes on to be able to implement low level physics from scratch, there will always be a need for people who know how to take either their own or someone elses (software or hardware) physics engine, and make it work within the considerable constraints that a game imposes. To do this well will always require a deep understanding of the principles and theories involved, as well a practicle experience.

Share this post


Link to post
Share on other sites
Quote:
Original post by kobe bryant
Thanx for the feedback, how long will it take to learn all that math and what are the best books to learn these things?



I'm not entirely certain what the best books to learn the math are, but I've been learning linear algebra and tensor math from books I got at a library downtown. I'd say about 30% of the books I've encountered are good enough to learn from and since there are atleast 200 I can get for free... My point is that if you have a library near by you should definitly check there before you spend a lot of money. As far as time, that probably depends on the person, but odds are you can learn much faster than you would at school. Since about April I've read a book on basic calculus, graph theory, linear algebra, less basic calculus, and right now I've got a book out on tensor math and another one on general topology.


What exactly is topology used for in programming? Every other book I got out becuase I wanted to program something, but I've never needed topology...

Share this post


Link to post
Share on other sites
Quote:
Original post by Anonymous Poster
Too many people download code off the internet and never understand what it's doing



Thats one thing I hate doing. I like to get code for learning purposes, but I DON'T like to use it until I understand exactly how it works. And since I'm not a very good self teacher.. I get stuck often :/

Share this post


Link to post
Share on other sites
Topology teaches you the basis relation beetween metric spaces, if you consider an object like a volumetric metric space, you could end up with interesting algorithm ( mostly based on discret division ) for doing collision detection or interpenetration, also consider that you could apply the same algorithm for visibility detection purposes.
This is a huge topic that i haven't seen covered anywhere in game programming, with time , and computing power, many of those algorithm will become more and more popular.

Share this post


Link to post
Share on other sites
Hi i've just start a-levels in maths, physics and electronics, what would you sugest is a good cource to start with in computer programming, i would like to specialise in physics coz i'm very interested in it, but would that mean do maths, physics and a computer programming degree?

ps I'm currently self-teaching myself C++, have nearly finished pong with allegro.

Share this post


Link to post
Share on other sites
I have a feeling that the Ageia physics chip might not be a fixed function pipeline. It might have a programmable pipeline that is analogous to the pixel and vertex shader pipelines in modern GPU's. Therefore, working with physics hardware could become an extremely interesting thing to do!

Share this post


Link to post
Share on other sites
Just as with graphics, a fixed, high-level physics API will become a hindrance for companies that want to innovate. Thus we have programmable shaders on GPUs. It remains to be seen if the PPU manufacturer(s) will open things up.

I have had to add many low level features to my physics engine to support our game. This would have been difficult or impossible to accomplish with a third party engine.

Share this post


Link to post
Share on other sites
Quote:
Original post by kobe bryant
I made this post specifically for people who are physics programmers or people who know about the ins and outs of being one in the games industry.

I decided recently that physics programming was the area of games programming i would like to persue, i have no formal training in physics, i didn't do it at degree or college (high school for the yanks) level. I am currently doing my masters degree in games programming, we will do a physics module next term. My supervisor recently informed me that programmers without degrees or PHD's in maths/physics are very unlikley to be employed as physic programmers.

I came here to get some more opinions, i dont expect a games company ask me to write a physics engine after one semester of rigid body physics but i did feel that i could acquire the knowledge over some years at a company and specialise in this area eventually.

Any advice or opinions will be very welcomed.


Wanna hear a funny story?
I'm a 13 years old russian boy specializing in computer graphics and algorithms.
I know C and VB.
I wrote my own 3D engine from a scratch.
I know OpenGL.
I got excelent grades in chemistry and physics and know many things on the subjects.
I wrote tons of really cool demos.

"you're obviously very intelligent in some subjects, including maths. I've got a first class in CS (though not from as good a uni as Thomas) and I know very little in comparison to you and Thomas"

That's a quote of a conversation I had in another forum, in a thread about collision detection.

But i'm not writing this to brag, but to show you how bad life is when you are good at something and don't have a proof for it, so read on:

I study in weakest math group (as a result of a long series of extremely stupid mistakes, not math mistakes, life mistakes) and even my own mom thinks i'm a failure and doesn't even want to take a look at the stuff i'm doing!
So how can I expect a director of a computer games company to look at them?

Now isn't that totally ironic?
I could use some advice as well...

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Quote:
Original post by mrbig
Quote:
Original post by kobe bryant
I made this post specifically for people who are physics programmers or people who know about the ins and outs of being one in the games industry.

I decided recently that physics programming was the area of games programming i would like to persue, i have no formal training in physics, i didn't do it at degree or college (high school for the yanks) level. I am currently doing my masters degree in games programming, we will do a physics module next term. My supervisor recently informed me that programmers without degrees or PHD's in maths/physics are very unlikley to be employed as physic programmers.

I came here to get some more opinions, i dont expect a games company ask me to write a physics engine after one semester of rigid body physics but i did feel that i could acquire the knowledge over some years at a company and specialise in this area eventually.

Any advice or opinions will be very welcomed.


Wanna hear a funny story?
I'm a 13 years old russian boy specializing in computer graphics and algorithms.
I know C and VB.
I wrote my own 3D engine from a scratch.
I know OpenGL.
I got excelent grades in chemistry and physics and know many things on the subjects.
I wrote tons of really cool demos.

"you're obviously very intelligent in some subjects, including maths. I've got a first class in CS (though not from as good a uni as Thomas) and I know very little in comparison to you and Thomas"

That's a quote of a conversation I had in another forum, in a thread about collision detection.

But i'm not writing this to brag, but to show you how bad life is when you are good at something and don't have a proof for it, so read on:

I study in weakest math group (as a result of a long series of extremely stupid mistakes, not math mistakes, life mistakes) and even my own mom thinks i'm a failure and doesn't even want to take a look at the stuff i'm doing!
So how can I expect a director of a computer games company to look at them?

Now isn't that totally ironic?
I could use some advice as well...



Advice : buy some flowers for your mother ;) Be nice to her ... eventually she'll gain interest in what you're doing.

Don't know whose quote this originally was, but "It's not about what you think , but it is what you do (and other people see) that defines who you are (to the world)."

Get the good grades and proof to the others what you already know. And don't worry... you're only 13, plenty of time to get a job.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Hello again, must get around to setting an account up ;-) I'm the guy that employs programmers (see above).

Here's a revelation that some of you are not going to like:

I never employ anyone until they've finished their first degree. And if you drop out of the degree then that makes it much, harder to get an interview.

And the answer is not what you're thinking, so before you all go mad, think about this:

When people work in the games industry it's a business. It's not like a hobby project, the work has to be finished. Complete. Debugged and working in all situations. 99% is no good - all special cases need trapping, no matter how obscure.

This is much harder than it sounds and as a graduate you may not get to work on the bleeding edge rendering / physics code, because there'll be a highly paid bloke / team of blokes doing that work. But your code still has to work - all modern games are made by teams and that means you have to be reliable. And that means you have to be able to finish jobs and learn stuff that you're not interested in.

Having a degree proves that you've got the brains (and mental toughness) to learn lots of crap (most University course have large amounts of dull stuff in them) and also means you're a bit older and you've got the maturity to finish something you've started. That's worth a lot to someone who is managing a multi million dollar project.

Final point: For every person that sends in a good demo who hasn't got a degree there are probably 3 people who have a degree + good demo - these days often a Master's degrees too. Given that budgets are limited, and that the interviewer's time is limited, who do you think gets the first chance at the interview?


I told you all you wouldn't like it. But before you flame me, think about it.


P.S. If you're really, really outstanding you can make it on your own (see above example) but it is very rare and you'll have to get someone to give you a break and that is going to be very hard to achieve in the current climate, there is simply too much money at stake to take a risk.

P.P.S. The second most important thing that I look for is commitment and lots of hobby projects are a good sign. You still need the degree to open the door though.

Share this post


Link to post
Share on other sites
AP: That gives me a large problem then. I dropped out of a degree but not through lack of commitment. I had no option as I am partially sighted and although the university said they would respond to my needs, they never did. In fact, even though I tried approaching lecturers and other staff members, none were willing to help as the one-on-one time with myself was deemed to be detrimental and "unfair" to other students. There's a lot more that went on that I could say, but the story is rather arduous. Suffice to say, the word "pissed" just doesn't cover how I feel about not getting the degree I wanted.

I respect your opinion and I can completely understand what you are saying from your perspective, but if what you're saying is true, what advice could you give to me in order to enhance my prospects? I am thinking about studying a Computational and Mathematical Science degree with the Open University, being as home study is easier for me, but would you suggest anything else aside from demo projects?

Commitment isn't a problem for me and I know I can get references to back that up, but what else could I do outside of that?

Cheers for the comments. They've certainly proven useful and enlightening.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Hi John,

1) That sucks and the University should be ashamed of itself.

2) There are always exceptions that prove the rule, as I said in my original post. So you could just try and go it alone, but that's going to be a hard route.

3) Open University teaching is excellent. I have ultimate respect for people who obtain one of these, particularly as they are usually obtained whilst people are working. They are not a soft option. If you enrol you'll find out what I mean.

4) If you're going to study from home try and get a related job in computing, maybe a normal programming position and then move across. Experience does count - I've employed several people who don't have degrees, but they all started way back before graduates were the norm.

Good luck. If you've got more questions please post. I've got to go out now so this is slightly rushed, if I think of anything else I'll post it later.


Share this post


Link to post
Share on other sites
Blimey, thanks for the fast response! Thanks for the encouragement, too! I was actually going to do the degree on a part-time basis whilst working in a programming position anyway, so I'm glad you feel that's a good route to take.

I'm not sure what else I could ask you at this stage, but if you do think of anything that might be important, please post. I'd be very interested to read your (and others) feedback.

Thank you for your time, it's much appreciated. [smile]

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this