Physics Modeling for Game Programmers (英語) ペーパーバック – 2004/8/17
Kindle 端末は必要ありません。無料 Kindle アプリのいずれかをダウンロードすると、スマートフォン、タブレットPCで Kindle 本をお読みいただけます。
Through masterful physics modeling, the action in your games can achieve an amazing level of reality. "Physics Modeling for Game Programmers" takes you beyond theories and techniques and shows you how to implement your new skills toward practical applications. Youll cover the basic math concepts that are essential to physics modeling, including Euclidean geometry. Then its on to motion and collision as you learn how to make the elements in your game move in a realistic way. Wrap things up with a study of hands-on 3D simulation and the physics of land and air vehicles.
Okay, now there are still 350 pages left that really deal with physics in this book. The good news is that the layout of the content for the physics chapters are a good selection. Even without any knowledge of mechanics the author guides you carefully from simple physical movement of point masses to the more complex behavior of rigid bodies. I really enjoyed how the whole topic is divided into single chapters to take them on one by one.
But then there are the drawbacks of this book. The biggest problem is that collision detection is nearly ignored at all. Okay, you have nice rigid bodies with realistic looking physics effects. But you cannot really use them in your programs because you need to read another book about collision detection first. Don't underestimate the need for a decent and *stable* collision detection system. Without that even the best physics implementation is lost. How do you want to let your body respond to a collision if you can't tell that there had been a collision? The author just uses static bounding spheres. That's a real pity because you would at least need collision detection for dynamic bounding boxes. You would also need this to calculate the points of collision needed for the physical collision response.
I'm stressing this point so much because with the what you learn from this book you are not able to have something as simple as a bunch of cubes falling down from the ceiling, colliding with platforms hovering in the air, and then resting on the floor. Obviously, you also can't have something more complex such as building a stack of two or more boxes piled on top of each other.
One thing that really annoyed me was the chapter about aircraft and spacecraft physics. Sounds like an interesting topic if you want to program your own flight sim, right? But you need to know that the demo of this chapter does not involve physics at all. Just a camera moving foward which can be rolled along the Z axis. But at least the author mentions the equations you can use to calculate lift and drag and strongly recommends that you do more research on aerodynamics if you want to implement a flight sim.
To conclude: Add 2 stars for a very good layout of the introduction from point masses to rigid bodies. But cut off three stars due to the lack of everything that would let you implement a simple but stable physics system you could use even in a simple 3D video game. In order to be able to do physics programming with this book you need to study another book about (dynamic) collision detection such as Ericson as well as a lot of papers you can find throughout the internet that discuss intermediate and advanced physics programming such as stacking and resting contact problems.
On the whole, I found this book to be a great read. The author doesn't treat you like some idiot. He also doesn't assume you live and breathe math and physics. Unlike the other books on game physics, this one isn't written like a textbook. It's really easy to understand. It also has the only discussion I've found on simulating flexible hair and ponytails. The author makes complex topics easy to understand.
The author, David Conger, starts out by introducing the common types of physics used in games. He then introduces Windows/DirectX programming. This book is part of the very popular Andre LaMoeth series on game programming and they all start out with an intro to Windows/DirectX programming. A lot of them also have intros to C++ programming either at the beginning or in an appendix. These intros seem to be one of the features that make the LaMoeth series so popular.
Next, Conger covers basic 3D concepts like coordinate systems and vectors. This is a great help if it's been a while since you had a math class. One of the best features about this book is that unlike other books on game physics, the author doesn't assume you're a math guru. He teaches you all the math you need to understand the book.
The author finishes the first part of the book by covering transformations in 2D and 3D, and showing how to create what is basically a 3D sprite.
The real meat of the book starts in part 2. It covers particle systems, collisions, rigid body dynamics, gravity, mass and spring systems, water, and waves. Juan Valdez's comments about the sample code being useless are totally wrong. Because collision detection isn't physics (it's a programming task), the author just uses basic collision detection. However, the methods Conger introduces are used in probably 90% of games. The code he gives in his physics framework classes can be used for all but the most high-end games without any problem. It gets you up and running fast. And anything else you want to know about collision detection is freely available on [...]. It was by looking on those sites that I found out how widely the author's methods of collision detection are used.
The last section of the book shows some really good simulations that apply all of the physics the book teaches. I especially liked the flight simulator.
I did find some typos, but they are all minor. All of the sample code runs and does what it's supposed to. In spite of the typos, I gave this book 5 stars our of 5.
This book explains things in almost every detail when it relates to its topic. The reader will still need to work out a few things on their own to gain a complete understanding of where the author gets his results at times, but it's nothing that persistance won't overcome.
I would definintely recoomend this book to anyone interested in this information! (I just wish I could find a way to contact the author.)