Jump to content
  • Advertisement
Sign in to follow this  
kobe bryant

Becoming a physics programmer

This topic is 4623 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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
Advertisement
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
I think your expectations are realistic. Until you have proved that you have knowledge, skill, and experience, you will be doing mostly grunt work (which could be the area of game physics).

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
To nire's list i would add too:

1) Tensor math
2) General topology
3) tribology
4) calculus I & II

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
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!