How much should I know about graphics programming, and to what extent should I know DirectX/OpenGL?
What about networking?
What about other side-skills?
I'm a graphics programmer, but have worked with physics programmers.
Knowing enough of a graphics API (of any kind) so that you're comfortable with drawing debug shapes (
e.g. visual versions of your physics capsules/boxes/spheres, or force lines, arrows, etc) would be handy. Also, knowing how to transfer object transform data (
e.g. a 4x4 matrix) from your physics engine over to the visual objects.
You'd almost always be doing this via a higher-level graphics engine, not D3D/GL directly, so learning those APIs specifically isn't a strict requirement.
Perhaps if you were doing something more advanced, like soft-body simulation, or CFD/Navier–Stokes equations, etc, then you'd want to have a much better grasp on graphics and visualisation techniques.
If you knew enough about networking to be able to have a conversation about how to handle the network-replication of physics-driven objects, and different networking strategies, like dependent lock-stepping, authoritative servers, etc, then that would be a plus.
Being qualified in another role -- either general gameplay programming, and/or another speciality like animation systems, would be very useful.
As mentioned in the off-topic above, (
almost) everyone uses existing physics engines, so the job of the physics programmer is to tame that existing code and make it do exactly what a specific game requires -- this might not keep you busy for a whole project, so being able to perform other roles might be required of you.
As for educational materials, I always see the
same few books on people's desks.
Edited by Hodgman, 15 November 2012 - 08:11 AM.