I want to learn how to make physics engines - for real - what should I study?

Started by
7 comments, last by BlackWind 12 years, 3 months ago
Hey,

Atm I am studying game development but I decided that's not really my thing, since we never get to do any of the fun / low level stuff.

I'm not sure what I want to do later on but I decided that it will most likely: either help building physics engines or something with AI.

What would be the best courses to take, to achieve this?

I thought of a bachelor's degree in science - theoretical physics, and then go for a master's degree in computer science. After that CS master I will probably know what path to take for the phd.

Can I get any helpful information from CS/AI/Computational Physics gurus?

Thanks.
Advertisement
There's no right or wrong way to go about anything. I would argue that the low level stuff isn't always fun.

But you need to know what it's like to write game code before you can write good engine code. If you live in a bubble in the engine you wont ever learn the requirements of a real game.

Therefore it would best if you first created games, before moving to developing low level/engine support. In the making of those games you will be doing all the required low level things, just without putting the pressure on it of being "official."

You should use every single physics engine, and every AI engine, and every rendering engine before you can say what you do and don't like about existing engines. Along the way, make somewhere between 5 to 10 good examples of each and you will be at a very competent level.

There's not really much time for school with that schedule. I've met very few skilled professionally trained people who's skill came from their professional training.
Look at the Temple Run game on the iStore. There is very little low level work to be done there.
You also can start from investigating other open-source physics game engines, like Box2D. There are very good box2d tutorials to view physics in practice. Moreover, you can look into this topic to understand theoretical background
@m_belousov [size=2]iOS Game Developer
Well I don't see how I can do anything without at least having a degree in theoretical or computational physics. If I want to research new physical possibilities for games/simulations/applications, then I don't see where studying existing engines would get me. Of course it's a must, but isn't there much more to it? There's not much point in making a physics engine that already exists.
I studied Physics for some time and then switched to CSE. Theoretical physics seems WAY over board when in comes to writing physics engines for games. The stuff you need for game physics engines are relatively basic (rigid body motion etc.). Theoretical physics usually means things like quantum field theory etc. (even "regular" quantum mechanics is kinda canonical physics knowledge for experimental physicist). What I find to be way more useful for physics engine stuff is numerical mathematics since that is where most of the challenges lie when it comes to actually simulating it.

Well I don't see how I can do anything without at least having a degree in theoretical or computational physics. If I want to research new physical possibilities for games/simulations/applications, then I don't see where studying existing engines would get me. Of course it's a must, but isn't there much more to it? There's not much point in making a physics engine that already exists.


Actually, 99% or more of the difficulty in writing a really good (i.e. fast, flexible, multi-platform, accurate, well behaved, fully functional, easy to use, well documented, accompanied by tools etc) physics engine will be nothing at all to do with maths or physics. So yes definitely study maths/physics/CS, but concentrating on developing a new simulation algorithm will probably only give you a marginal improvement in real-world use. There are loads of problems (as well as great things!) with all the existing physics engines, but the underlying algorithms aren't the bottleneck these days, I think, at least for normal use.
Studying existing experiments in your field is a vital part of any development process. You need to know what went right and what went wrong. When you get into school they're called case studies, and everyone will agree they're extremely valuable.

To put it frank, no one will want to use your engine if you haven't considered the features and design of an engine that people will want to use. There are also very few new features to be added to gaming. We already have fluids, cloths, vehicles, character, and rigid-bodies. The most important aspect of physics to develop is the performance and actual integration into the user's application.

I'm not trying to discourage you from doing what ever it is you're dreaming of, i'm just trying to give you practical guidance.

Also if you "dont see how you can do anything" without being force fed a bunch of theoretical and analytically mumbo jumbo then i think you're going to have a hard time "doing anything" after you have. The lessons you learn from experimenting yourself and trying and failing are going to be far more valuable then anything you learn in a class room.

So you should download havok, box 2d, physx, ODE, and put them all into a simple demo and see what it is you actually want to fix about them. For all you know at this point they're already perfect and your efforts will be completely wasted.

Edit: Alright I can't really say what the most important feature of a physics engine is. You may be only interested in developing cloths or fluids or the edgier stuff. You may need some pretty bizarre math for that. But you'll need an extremely sound foundation in computation also. You're going to want to start mucking with just about everything you can get your hands on. Matlab, processing, cuda.

Hey,

Atm I am studying game development


If you already have solid background on all the fundamental CS stuff (OS, Computer Architecture, Compiler theory, DB, Networking algorithms, etc...) i think you can skip a "formal" CS degree and go directly for the physics while you improve your CS Skills by yourself.

If not, i suggest you better go for the CS option first, an read/practice A LOT by yourself.

I'm not a mathematician (just yesterday i had a hard time with a simple problem), but i do know the theory and I love and can recommend you this book:

http://www.amazon.com/Calculus-Early-Transcendentals-Stewarts/dp/0495011665/ref=sr_1_6?ie=UTF8&qid=1326692828&sr=8-6




Its not a physics book, and has more math that you would learn in any standard CS degree, but is "basic" math you will need for physics and cool effects in computer graphics.

Also this book is great:
http://www.amazon.com/Game-Physics-Second-David-Eberly/dp/0123749034/ref=sr_1_1?ie=UTF8&qid=1326692810&sr=8-1

Finally, you can get some graphics books like real time rendering and/or the GPU Pro series, and compare the math needed vs the math in the previous books vs the math in the physics degree (or get help from a proffesor) and then make the conclusion if it is worth or not studying physics for this purpose.

Now, if you will study physics just because you like it, but you also like CS, i would go for the path CS - > Physics -> xxx ... Because in that order, when you get into physics, you will already have the knowledge to implement everything in a computer program. Otherwise...probably you wont (or not in a proper way --stable, fast, etc..)

This topic is closed to new replies.

Advertisement