Slashdot stories can be listened to in audio form via an RSS feed, as read by our own robotic overlord.

 



Forgot your password?
typodupeerror
Games Books Media Book Reviews Entertainment

Physics For Game Developers 328

Posted by timothy
from the next-stop-geography dept.
Richard Jones writes: "In my opinion, the most difficult aspect of writing a good 3D game is coding complex physics. If you can take away all the flashy graphics, texture maps, light and shadows from a game, and it's still at least 75% as playable and addictive, then you have an excellent game. But too many programmers seem to be ready to concentrate on the graphics, neglecting the underlying physics which make the game playable. If you compare, say, Re-volt with its fabulously detailed models of remote-controlled cars, and Carmageddon which on the N64 at least has sucky physics, well I know which one I'm still playing." He's contributed his review (below) of a book intended to help game programmers make games that aren't sucky.
Physics For Game Developers
author David M. Bourg
pages 326
publisher O'Reilly
rating 8
reviewer Richard Jones
ISBN 0-596-00006-5
summary A good introduction to the difficult subject of writing 3D games and simulations with accurate physics, let down by a few minor snags.

Programmers who want to get serious about game physics will love David M. Bourg's Physics for Game Developers. As I've said, the subject is inherently very difficult, and the book assumes that you are already familiar with vector and matrix arithmetic up to college level, integration and differentiation, and at least you hazily recall your mechanics/physics lessons from school. You also won't be afraid to wade through Bourg's carefully documented derivations of formulae for various physical effects, and his well-commented source code.

The book starts off by recapping the basic concepts of mass, centre of gravity, moment of inertia and inertia tensors. Bourg assumes that you have a working grasp of these subjects, and I admit that I had to go back to some of my A-level mechanics text books. He then goes straight into kinematics, where he uses standard (but forgotten!) integration techniques to calculate velocities from accelerations and positions from velocities. His examples are excellent, although a few exercises wouldn't have gone amiss. The chapter on forces covers a great many different types of forces such as springs and buoyancy, but curiously omits the important subject of contact forces (the normal force that a table, for instance, exerts on your computer monitor to stop it falling through the floor). In fact contact forces don't appear until much later in the book. Particles, rigid bodies and impulses (forces from collisions) are introduced in chapters 4 and 5.

At this point I have to say I was a little bit confused. What did this have to do with game programming? Everyone knows that games spend most of their time running round a single big "main loop," working out the forces on each object, looking for collisions and working out which keys the user is pressing. It doesn't seem imaginable that a game programmer could completely solve all the equations of motion by pure integration at the beginning of the game, and then just run the positions of the players through the graphics engine like a movie!

I already knew a little about this from what I'd found from the web, but what most games actually do is calculate all the forces on all the objects (players, scenery, etc.) in the game, and then integrate them at each step. Some of these forces will be generated by human players pressing keys on the keyboard or wiggling the joystick, and that's how the objects end up moving. Pure integration isn't usually possible, so the physics engine performs numerical integration - a kind of fast approximation to the pure "closed form" solution. Numerical integration is itself a tricky subject, but it's the meat-and-veg of good game programming. Surprisingly, numerical integration and a realistic main loop doesn't appear until chapter 11 (172 pages into the book). I skipped straight to this section, and I suggest you do so too...

The chapter on numerical integration is excellent and contains the first realistic gaming (or at least simulation) code. Many games I've examined use simple numerical integration, like this:

// At each step ... A = acceleration, dt = time step
Vx += Ax * dt;
Vy += Ay * dt;
Sx += Vx * dt;
Sy += Vy * dt;

Unfortunately this method (Euler's method) is very inaccurate and unstable: if you tried to simulate planets orbiting around a sun using this method, they'd soon fly off into outer space unrealistically. Bourg gives an excellent introduction to better methods such as the "improved Euler" method and the popular Runge-Kutta method, and he covers them in a context which will make it clear how to use these methods in your own programs.

The book reaches a crescendo with three fully developed simulations: two hovercraft which you can drive around and jolt into each other like bumper cars -- they spin around realistically; a flight simulator; and a 3D car which can be crashed into blocks that bounce around. Again the source code is meticulously commented and generally well written. My only two reservations about the code are: It would be nice if Bourg had chosen to use OpenGL instead of Direct3D so that those of us without regular access to Windows could actually compile and run the examples. The book would make an ideal companion to the OpenGL Red Book. And coming firmly from the Windows camp, Bourg's examples are full of all the horrors of Win32 APIs and Hungarian Notation. But maybe that's just my personal preference :-)

So in summary: The Bad Points:

  • Measurement systems: Bourg moves uneasily between the English/US system and the European SI units. So we get examples which combine ft/s, meters, slugs and kilograms, uneasily converting between the two. He should have chosen one system and stuck with it.
  • A common complaint about computer books: I've just spent 25 quid on a book which will sit open on my desk for months. Is it too much to ask that it be ring bound?
  • Some subjects are not explained in enough depth. Particularly: moments, contact forces, impulse methods. Bourg should probably have written a chapter or three on collision detection.
  • The chapters are presented in a very strange order. Move chapters 6-10 until later, or introduce numerical integration earlier.
  • A few of the illustrations are inaccurate.

and The Good Points:

  • Considerably better than the usual round of maths/physics text books which make up this field. In fact, this is really one of only about 2 or 3 significant books in this area which are pitched for game developers as opposed to mathematicians, and it's certainly the best.
  • The areas which are covered are done well, in significant depth, with a good bibliography where you can find out more.
  • The commentary on the difficult equations is good, and Bourg resists the temptation to derive many of the formulae he presents, instead referring interested readers to other references.
  • Code is well documented and explained.

And now I suppose I have no excuse not to resurrect XRacer :-)


You can purchase Physics for Game Developers at Fatbrain

This discussion has been archived. No new comments can be posted.

Physics For Game Developers

Comments Filter:
  • by sam@caveman.org (13833) on Tuesday December 18, 2001 @10:35AM (#2719806) Homepage
    i've played a lot of games, and gone 'wow' at some of the eye candy, but if you've played baldur's gate for PS2 you know that the coolest thing that has ever been coded for a game is the WATER for this game. you leave a wake behind you when you walk through it, you splash when you jump in, and ripples interact and reflect from the shore. maybe the physics aren't 'perfect' or whatever, but the realism of the water was enough to really 'immerse' myself into the game.

    -sam
  • Physics in games (Score:2, Insightful)

    by shd99004 (317968)
    I remember a good old game called "4D Stunts Driving" or something... That had a pretty interesting physic. Often it was sufficient to just bump into another car and you would go up in flames and millions of pieces. Or, if you reached high enough speed in the jumps, you could get such an angle, you would fly right into the athmosphere, and if you changed the camera POV, you could maybe see the car as a few pixels high in the sky. I think that, though, is part of the charm with this game. That, and the music :)
  • by YouAreFatMan (470882) on Tuesday December 18, 2001 @10:38AM (#2719825) Homepage
    One idea might be to pair up a design-minded developer with a science-minded programmer. Kind of the right-brain/left-brain thing. Not that there isn't overlap, but usually someone is better at one than the other. And even if someone has both good design and scientific skills, it is hard to practice them at the same time. I know I have to take time to "switch" modes when going from creative stuff to more technical stuff.

    So pair up a couple of guys. One to worry about the artistic design, and another to worry about realistic physics.

    • I remember reading a couple years back that some game developer hired an actual physicist to help develop their Golf game. I can't for the life of me remember what company it was though.

      I'm with you on switching modes between creative stuff and technical though. Although I guess it depends on what you're doing. If all you're doing is coding, then since that's all logic, physics should fit right in there with it.

      My biggest problem is switching between programming and graphic design. Oh the headaches.
      • If all you're doing is coding, then since that's all logic, physics should fit right in there with it.

        Indeed it does. I am a senior programmer currently working at a web agency, but have no formal programming qualifications. My degree is in Physics and, while I did take some programming modules during the course of it, all of these stressed the numerical/physical aspects above the coding ones. In fact, the only language I have ever been taught is Fortran; I taught myself C, C++ and Java. (and BASIC, a smattering of assembler, perl, etc, of course)

        I can imagine that it would be just as easy for a CS graduate to pick up at least basic Physics on their own. There isn't really anything that tricky in the sort of mechanics that would be required for most games (fluid dynamics not withstanding, but I have yet to see really realistic water in a game anyway :-) ), and the maths is pretty straightforward too.

        Cheers,

        Tim
    • This is already going on between companies. For instance, think about John Carmack. He writes 3D engines and produces games with them. However, his last effort, Quake 3 is a bit mediocre. But after a few months games come out that are a lot better which use the Q3 engine.
      Actually, Half-Life is based upon the Q2 engine and is a lot better than Quake 2 itself.

      Maybe John Carmack should just focus on building 3D engines which game developers could than use to produce brilliant games.
      • HL (Score:2, Informative)

        by autopr0n (534291)
        Half life is based on a heavily modified quake 1 engine with some quake2 code thrown in for good mesure.
        • Troll? (Score:3, Informative)

          by autopr0n (534291)
          How is this a troll?

          Hrm. Seems my last five comments have each been modded down one point. Fortunetly for me, I could care less.
      • Maybe John Carmack should just focus on building 3D engines which game developers could than use to produce brilliant games.

        Isn't this what he does? He also has a quick&dirty design team to make a bare-bones engine demo (The Quake series) which is also fun.
  • by alen (225700) on Tuesday December 18, 2001 @10:39AM (#2719828)
    Some people aren't into super realistic physics. Some don't want to read a 300 page manual for a flight sim and spend weeks figuring out the flight model. They would rather just grab a joystick and start playing like in Wing Commander.
    • by arkanes (521690) <{moc.liamg} {ta} {senakra}> on Tuesday December 18, 2001 @10:47AM (#2719886) Homepage
      The space sim Terminus is great in this regard - when you start the game, you can select the level of reality in your physics - anywhere from (almost) 0, to full Newtonian. So if you just wanna blow stuff up, go for 0, and if you want to have to worry about carefully calculating your path so you take maximum advantage of gravity and don't waste fuel on course adjustments, you take full. Great stuff. I reccomend the game, BTW, fantastic gameplay even if the graphics lack by todays standards.
    • Some people aren't into super realistic physics. Some don't want to read a 300 page manual for a flight sim and spend weeks figuring out the flight model. They would rather just grab a joystick and start playing like in Wing Commander.

      Whether the physics model is realistic or not, every game has to have one. Even if you choose to calculate position, motion, and reaction and stuff in a way very different from the one that applies to the real world, you have to calculate those things somehow.

      That's the point of this book.
  • by FortKnox (169099) on Tuesday December 18, 2001 @10:39AM (#2719834) Homepage Journal
    Its called "Physics for Scientists and Engineers".

    Lets face it, the best physics is REAL physics.

    If you want your game to have good physics, then slap a good physics engine (based on real formulae) into it!
    • You can't use real physics. Real physics lives in the continuous time domain, with differential equations and such. Games, on the other hand, live in a strange land of discrete, variable-sized time-steps. You can't just throw your differential equation at it and say "Be realistic!"

      Sure, the formulas used are *based* on the regular "scientist" formulas, but they *have* to be approximations. The book tells you how to use do those approximations.

      If you give a coder a standard physics textbook and tell him to code a physics engine, he'll either implode or spend ages working out numerical methods for approximating real physics... exactly what is in this book.
      • "real" physics?! (Score:3, Insightful)

        by TopherC (412335)
        First, physics is inherently descriptive and approximate anyway, so if there is a "real" physics, it has yet to be discovered. Physicists are always working with approximations and numerical methods, but it's best to go as far as you can with "exact" solutions and generalities. Then, when you need to start doing numerical work, you have some place to start from. You can't do numerical integration unless you know what to integrate.

        Second, the usual 100-level undergrad textbook in physics tells you a lot of things that you probably don't need to know when designing games (like E&M and some quantum mechanics), but also leaves out the more practical aspects of classical mechanics when dealing with less-than-ideal objects. Once you work with the motion of objects that are not spherically symmetric, you need mechanics at the next level, and you need to work with matrices and vectors. This stuff isn't difficult, but it's not in the typical undergrad textbook. And it does require a bit of mathematics, like most things that are worthwhile.

        So it sounds to me like this book does have an important niche to fill, combining undergrad classical mechanics, a sampling of junior-level classical mechanics, and some numerical methods to boot.
    • Numerical Recipies I think would also be a good addition to a game programmer's library wanting to introduce more realistic physics. It covers a good deal of numerical computing algorithms from integration to simulation.

      Physics texts cover the physics behind the action, but a book like Numerical Recipies goes over the implementation and would be a very good complementary book.

      The other thing to keep in mind is that the more accurate the physics gets, the more computationally intensive the game becomes, so a game may not be able to achieve those 150 fps everybody seems to want when doing accurate physics simulations.
    • Yeah, let's have real physics! Your in-game character will be a 23-stone sweaty short-sighted nerd and the first time he falls off a platform the forces exerted on his body will destroy his spine in the game, so you'll only be able to die once in your game, ever.
  • I really doubt that your method of numeric integration is going to be that critical an influence on the quality of game play. In fact I think that you ability to simulate physics without really doing the math would be more important. I doubt anyone is going to be timing a car's drop off of a cliff in Carmegeddon to determine what gravitational constant is used in the game.

    I think it is more important to include as many effects as you can: gravity, linear momentum, angular momentum, elastic/inelastic collisions, friction (surface and wind), than it is to model the effects perfectly.

    In fact one could argue that it is to the game designer's benefit to use an innaccurate and exaggerated physics model. Most real world collisons with the guard rail on a race course are relatively unspectacular (by design) - but that would be oh so boring in a racing game now wouldn't it?

    -josh
    • I really doubt that your method of numeric integration is going to be that critical an influence on the quality of game play.

      If your game lacks a good physics model, players are going to find that it "feels funny." They don't mean that it isn't realistic, rather they mean that your game isn't consistent.

      People are incredibly good at figuring out their environment, even if it's a different environment from the one they grew up in. But if the environment isn't consistent (read, "the math is isn't very good") you can tell intuitively.

      That's why a good physics model is important.
    • by skoda (211470) on Tuesday December 18, 2001 @11:03AM (#2719967) Homepage
      There's a difference between "unrealistic" and "unstable".

      Unrealistic suggests that it doesn't behave as in the real world -- but that doesn't mean it isn't modeled on the same principles (acceleration, momentum, etc.) And you still want to simulate it consistently; it should "feel" right.

      But an unstable computation method can "blow up", regardless of realistic or unrealistic "physics."

      Consider:
      Jump pads in games like Quake or Unreal are "unrealistic". But they are modeled at least partially on physics. But to make them work right, in all their unrealistic glory, the computation method must be stable.

      If it wasn't stable, then you might something like:
      - Multiple, successive jumps on one would lead to a "blow up" where the player would be wildly, and unexpectedly shot through the roof and to the outer edge of the game universe.

      For both realistic and cartoon physics, you need accurate and stable computation methods.
    • No, the integration scheme is *very* important.
      My background is in physically based modeling
      in computer animation, so here is what I know:

      The integration scheme can have such a strong
      influence on the stability of the system that
      it can mean going from an integration timestep
      of a microsecond to a hundredth of a second.
      That's a speedup of 10,000. Generally, the
      finer the spatial resolution of you simulation
      (how fine your cloth mesh or fluid volume is),
      the faster a timestep you need.

      The brief description of the book cites the
      Runga-Kutta method as a preferred technique
      over basic Euler integration. The former
      is a fourth-order method, the latter a
      first-order method. Three orders of magnitude
      is nothing to laugh at.

      The big breakthrough in cloth deformations came
      because Witkin and Kass figured out how to
      simulate cloth with a large timestep (they use
      implicit integration techniques). Jos Stam
      did some nice work with real-time fluids that
      relied on a semi-Lagrangian integration scheme
      with a vorticity term to undo the artifical dissipation caused by the coarse numerical
      simulation.
  • If you can take away all the flashy graphics, texture maps, light and shadows from a game, and it's still at least 75% as playable and addictive, then you have an excellent game.

    Is it just me, or does that describe Pong perfectly?

    Note: Greatest game of all time referes to the classic version, 2 controls, 1 console, 1 tv, 1 wasted childhood.

  • Grand Prix Legends (Score:2, Interesting)

    by Anonymous Coward
    The game may be three years old, with (originally) dodgy graphics, but it had the best car physics engine of any PC driving game. You could actually get a feeling for what the car was doing, how it was sliding etc, and in a '67 F1 car, which slides a lot, that was a big help.
    It's still one of the most popular games in the driving sim community, with new mods and graphics appearing almost daily, but in the end it's the physics that draws people in. Yah it's hard to drive, but it should be hard to drive, and once you learn it, you'll never look back.
  • by Mr. Quick (35198) <tyler,weir&gmail,com> on Tuesday December 18, 2001 @10:47AM (#2719881) Homepage Journal
    ..although i picked the cheapest form of delivery so it won't be here for a bit more time...

    i read thru the sample chapter [here] [oreilly.com] it's all about particle physics. i was quite impressive, i enjoy the *conversational* style that most o'reilly books have.

    i implemented all of the examples in java using java3d. [j3d.org]

    i hope the book meets my expectations....
  • Maybe this book has an answer to a question that's been on my back burner for a while, and for which I've been unable to find a good answer for while surfing.

    Suppose you have a device that records lateral acceleration, longnitudnal acceleration, and forward velocity, with 100 samples per second, and stores them in a text file, one sample per line, one value per column.

    Given the file parsing routine is a gimme and thus provided the values for elapsed_time, LatG, LongG, and FwdV, produce a function that will return the current X and Y co-ordinates of the vehicle, so that its ground track can be represented in a diagram.

    Anybody got any good sources of information (or better yet, an existing library) for how to do this?

    No, this is not an exam question. ;)

    DG
    • There's a variant of that problem used for weapons systems and such... If you combine an intertial sensor with GPS, you get a very accurate version of GPS, without the accumulated integration error. Here's a random link to an intertial GPS system [applanix.com]. The algorithm is somewhat laid out on page 5, but you may be able to find more by looking into this topic.
  • Decision Making (Score:2, Interesting)

    by 3141 (468289)
    I agree, in some games, realistic physics can make a big difference. I remember when I first played Super Mario Bros. 1 on the NES, seeing how the fireball bounces along in a straight line until it gets to a hole, and actually falls down, I was rather impressed. (Small things, small minds, whatever. I liked it.)

    However, in modern 3D-type games, it's important to pick and choose where you spend your time coding in the physics. In a racing game, it's a lot more important to spend time making sure the cars handle correctly than how realistically the trees sway in the background.

    Unfortunately, there just isn't the time to make everything about the game perfect, and it's sad to see when a program has missed it's spot because of delays in implementing useless features.
    • In a racing game, it's a lot more important to spend time making sure the cars handle correctly than how realistically the trees sway in the background

      In my new game the exact opposite is true.. I really hope Ultra Mega Pine Sim is a success..

  • by thex23 (206256) on Tuesday December 18, 2001 @10:53AM (#2719914) Homepage
    Realistic physics? Yes, please!

    I want a FPS that lets you blow holes in walls, accurately representing physical damage from weapons. Imagine Counter-Strike with realistic bullet physics: ricochets, windage, and weapon recoil that isn't predefined.

    Hacking physics though, now that's a job and a half: figuring out a quick and dirty method of approximating the complexities of the real-world, and still have it look natural, making it look like a real environment filled with objects that have familiar properties and behaviours. And then blowing them up, REAL GOOD.

  • check out gamasutra [gamasutra.com] has a lot of feature [gamasutra.com] articles on many aspects of game design. Dig around them, they are good to read and usfull. I think they require a registraction now to read the articles...

  • Tribe 2 has the best game physics ever in my opinion. It's a shame that there arne't people playing it anymore. The only reason it went down the tubes is because there aren't enough non-mod servers. Just about every server runs some variant on the game. As soon as I get a new computer I'm setting up a non-mod Tribes 2 server and me and my friends will rock the house again.
    • The Shifter mod for Tribes 2 made the game not even worth bothering playing. All the weapons were way too powerful, negating any sort of weapons skill. There were also an excessive amount of classes that seemed to make little sense(Team Fortress Tribes?) and goofy items like the all-white jetpack made the game grossly unbalanced. One seasoned player could keep capping the flag over and over while everyone else was trying to figure out the weapons, classes, and strangely named items.
  • Some people are saying that games are meant to be unrealistic: jumping higher, unrealistic strength etc. This doesn't mean abandoning physics, it just means changing a few numbers. Lower the gravitational acceleration constant you're using and the player will jump higher while the jump will still look right. Most of the exagerations games use can be done in this way. One exception is being able to change direction while in mid air. In some games it works, in others it just looks really stupid.

    There was a good article a while back in one of the mags (Scientific American?) i get about a team putting even more physics into games. If you shoot someone in the shoulder, they spin a bit etc. They were trying to make bullet hits look more real (as in reaction not gore). Anyone have a link?

  • As fascinating as the book sounds, individual developers or teams that are writing (and debugging, and debugging, and debugging) code to calculate the acceleration of a mass on a curved path are not using their time productively.

    These functions are based on laws of physics, and should be the last thing to be reinvented.

    Game development as a whole will be of a far higher quality when games don't have to be developed one molecule at a time.
  • by Captain_Frisk (248297) <captain_frisk.bootless@org> on Tuesday December 18, 2001 @11:04AM (#2719974) Homepage
    I've noticed alot of comments here about realistic physics in games.

    I remember reading an article with a game developer a while back, who pointed out that the key for physics in a game wasn't realism, but consistancy.

    He was developing a racing game, and says in order to make the game more fun, he had to sink the center of gravity for all of the cars several feet below the pavement, so that the cars wouldn't tip over when making hi speed turns.

    As long as all the cars behaved the same way, it didn't matter that you were "cheating".

    When playing your game, the user is entering your world, and learns a new set of rules. As long as you present your set of rules as consitant, it doesn't matter if they don't correspond with how things behave in "real" life.

    Captain_Frisk - wannabe game designer.

    • Of course they're not about realistic physics.

      But, guess what - even if your computer game has a G that would crush humans, or elasticity that makes super balls look tame, or centers of gravity below the pavement, it still needs to be CONSISTENT.

      And being consistent means modeling real world physics. With tweaks.

      If you don't model real world physics properly though you're going to end up with erratic behavior that will either lead to frustrated players or exploitation by players (which often trivializes the game).

      And while I never thought about it, now I understand the purpose behind some of the abysmal math courses I took in college. I guess it's a good thing I don't do game coding, since I certainly don't recall much at all from those courses. (Another reason why math profs should come out of their theoretical world and mention real world uses for some of the stuff upon occasion).
    • The phyysics of a game should be playable; there's no need for them to be accurate. If Aristotelian physics work better, use them . . .


      I'm reminded of folks in high school who would get hot under the collar arguing that the Arduin rules for magic and hit points were more realistic than the D&D versions, or the realism of different types of dragons . . .


      hawk

    • Sure the game developer may have found that changing the physics model made the game more fun to play but one possibility is that (s)he had forgotten to model downforce. An F1 car produces a downforce higher than its own weight (cue comment about F1 cars being able to drive on the ceiling). Without downforce, a car would flip going around a corner at F1 speeds.

      A very simple (*) way to model downforce is to drop the centre of gravity of the model so that it is below the ground. Other variables such as tire grip also have to be changed as well but these are generally constants.

      (*) Downforce changes with vehicle speed so this is a very simple model.

  • by strags (209606) on Tuesday December 18, 2001 @11:05AM (#2719980)
    http://www.d6.com/users/checker/dynamics.htm [d6.com]

    provides an excellent, and free alternative to purchasing a weighty tome on the subject. Chris covers the details of rigid body mechanics in a thorough, but light manner.

    I went to a physics lecture at GDC, the most memorable part of which was Chris saying:

    "Here's how it's going to go... you're going to write your first rigid body dynamics simulator. You're going to simulate a cube dropping onto a plane. You'll run the program, the cube will drop, hit the plane... and disappear."

    So, so true.
  • Carmageddon (Score:3, Interesting)

    by CaseyB (1105) on Tuesday December 18, 2001 @11:06AM (#2719989)
    Carmageddon which on the N64 at least has sucky physics,

    Excepting the possibility that the N64 version is completely different from the PC version, you are completely clueless. Carmageddon, of ALL the games you could have chosen, was a pioneer in game physics. It was the very first game that I played that had a real rigid-body simulator built into the engine.

    Say what you will about the gameplay, or the physical settings (gravity was too low), but you can't say it had sucky physics. The cars and environmental objects interacted in an incredibly realistic manner. It was miles ahead of Re-Volt in that department.

  • by dreadpiratemark (450962) on Tuesday December 18, 2001 @11:06AM (#2719990)
    I don't know that I really agree with the idea that physics need to be wildly realistic in the 'games' that I play. Honestly, I don't want to know what kind of recoil the rocket launcher in Half-Life would inflict on my character. I'm happier just watching the rocket track nice and straight towards my target instead of attempting to pick myself up off of the ground where I slid to a stop from the highly realistic recoil.

    On the other hand, when I play a 'simulation' the physics are quite important. The best physics I've found in a sim are in a 3-year-old game: Grand Prix Legends. You're racing 1967-era Formula One cars, which means skinny tires, no downforce, high powered...which is a combination for difficult driving. But the physics engine is spectacular: you touch the gas when in neutral, you can feel the torque twist the body of the car; each wheel has its own model; touch the gas a bit to hard in a corner and be prepared to swap ends of the car, etc., etc.

    The graphics are what you'd expect for a 3 year old game, but a dedicated community has sprung up to support the sim with everything from replay analysers [bip.net], new tracks and graphics [sportplanet.com], and even a movie maker! [racesim.net]

    It seems that if you make a sim with good enough physics behind it, the fans of it can create new 'eye candy' to keep the sim looking good. But if you have crappy gameplay (see: Andretti Racing) and good graphics, the game will quickly be relegated to the bargin bin when something prettier comes along.

    -Mark
    • The new EA Sports F1 game (F1-2001) has excellent physics, much better than the 2000 edition, byt with modern high downforce 850-900hp cars. Its a blast, but very difficult to drive the cars right on the edge for an entire lap.
  • by Junta (36770) on Tuesday December 18, 2001 @11:07AM (#2719994)
    I'll bet that in at least 90% of the games out there realistic physics would completely ruin the whole fun. What is the point of interacting with a fake environment when the environment reacts the exact same way real life reacts? Racing games are a good example. People want cares to handle well, generally. They don't want realism, in real life operating cars at high speeds is a lot more difficult than most games.

    And in *any* game where people jump, realistic jumping becomes completely pointless. People want to be superhuman. Imagine quake with realistic physics....

    Realism is not the high mark of games in all aspects, that is the whole point of games, to escape reality...
    • This is a good point, and a valid one.

      It is true that in some games -- a combat flight simulator, for instance -- one design goal would be to achieve the most realistic physics possible. The average kid popping quarters into an arcade game isn't looking for realism, but some folks certainly will.

      However, I think the importance of _self-consistent_ physics is quite critical. You can invent your own set of "physical laws", which may be similar to those we are familiar with (ie, with moon gravity instead of Earth gravity) or completely and utterly different (ie, with Matrix-like time and space distortions or a Tolkien-like world replete with magic). However, the world you put forth should appear at once both plausible and self-consistent. Indeed, knowing real physics and the numerical methods to treat it would certainly help game programmers in their own constructions, if only by serving as an intricately balanced example which can serve as a launching point for their work.

      Bob
    • Well, I occasionally want realistic physics.

      It's been a long time since I've run a real R/C car, but I've played Re-Volt a lot. It's fun.

      You're getting to do something that you wouldn't normally be able to. This is especially true with Re-Volt. You get to race some nice cars, over some really wild race courses, with a point-of-view right over the car itself. No worries about charging batteries either.

      I think realistic physics adds a lot to the game. Learning how to handle the different surfaces. Learning how to bump off the wall just so without flipping your car. Learning how to power-slide. I would have ruined a dozen real cars just trying out jumping and stunts.

      It helps that the game uses R/C cars instead of real ones. Because of mass-scaling laws, they have a much greater power-to-weight ratio than full-size cars. That adds a lot to the fun factor.

      And maybe realistic physics would ruin other games, like Half-Life. Well, if you want super-jumps, fast running and so on, let's make a game with armored mechas instead of humans. You can have your rocket-jumps and realistic physics too.

  • Has anyone else seen the quake II secret level that has less gravity. Jumping, the remains of oponents, those bouncing gernades.. everything was like it was on the moon.. Lots of fun..

    Now thats physics
    • You could actually do that at pretty much any time you liked...just bring up the console and set sv_gravity to some number significantly lower than the default (the value of which escapes me at the moment). Also fun to turn the gravity up super-high...even the smallest falls hurt.
  • In my opinion, the most difficult aspect of writing a good 3D game is coding complex physics

    IMNSHO, getting good human motion is the hardest. Sure, EA does great motion capture for their sports sims, but where else do you see this in the industry? Download the Wolfenstien single player demo and see how stiff the models look (especially in the intro).

    I think getting realistic physics is important, but, since most of it can be reduced to math anyway, GHz machines and loads of memory, combined with good programming, should be able to get it right. Making motion look good is far more important to my enjoying the game, and much more difficult.

    On a side note....

    Has anyone else noticed how this seems to be what sets WETA's effect in LOTR apart from the rest? Instead of generating a digital army, they film a bunch of guys walking in armor, then copy/paste/randomize to make a realistic hoard of warriors.

    The cave troll, while the rendering was supurb, was entirly motion-captured. They had some actor plodding around with a big stick and ping-pong balls taped to his joints. They seem to understand that they can make everything look perfect in a still image, but the motion will still look fake.

  • Some of my all time favorite games are great because they move 'right'. Can you imagine playing Spindizzy or Marble Madness with crap physics? I can, on a dire MM ripoff. It was frankly painful. The unexpected coolness that can result from engines that do things properly is very nice - although they cheated on the amount of kickback to do it, rocket jumping would never exist if they hadn't used impulses and momentum to control movement rather than old style 'move forward if the player pushes forward' arcade method.
  • "Everyone knows that games spend most of their time running round a single big "main loop," working out the forces on each object, looking for collisions and working out which keys the user is pressing."

    Actually, the game is not working out the forces of each object. This is why most objects in 3d fps games are static. Beyond basic collision detection, there is no interaction with the objects. If there are interactive objects in your game, the math involved in calculating the physics of a 3d pack of cigarettes or a 3d can of cola would not only take an enormous ammount of coding to bring to light, but also put undo load on the CPU.
    When we worked on Ghost Recon, one of the big problems with physics involved calculating the way the trees swayed in the wind(believe it or not). Part of the solution involved going from multiple wind directions to a single one. The users wouldn't notice it. Heck, we could have made the trees static, thus relieving the system of about 40% of it's performance hit, but we wanted some level of realism in the background and atmosphere.

  • Is that it gives you all the important physics equations that I learned throughout freshman and sophomore years of college all in one place. They equations are easy to find (though the variables used aren't the traditional ones in physics).

    The book is a good reference to have. To me this would be good to have because I already "learned" all of this, but like most don't remember all of it. Having all these equations right in front of you will enable you to remember everything swiftly and apply what you need to.

    Like most O'Reilly books, this is a good reference to have, and I think it should be bought by people that already know most of the basic physics stuff.
  • by alephnull42 (202254)
    Quote: "A common complaint about computer books: I've just spent 25 quid on a book which will sit open on my desk for months. Is it too much to ask that it be ring bound?"

    The book is not ring bound because it costs 25 quid (= British Pounds).

    'Twould be far too easy to stick it through a photocopier or scanner if it were.
    • If it is done like most books today, it is simply glued. If color isn't a necessary component of the printing, you could "break" the spine, carefully remove the leaves (I think that is the term) or pages (if it is real cheap), from the book, photocopy them, and ring-bind or spiral bind it yourself.

      If it is well bound (ie, with sewing, cloth, hardback, etc), then cut the pages out and photocopy them, then ring-bind it.

      Now, I am not one for destroying books in this manner (or any manner - I love books), especially such an expensive one - but if you really need ring-bound books...
  • by devnullkac (223246) on Tuesday December 18, 2001 @11:30AM (#2720167) Homepage
    I'm still waiting for Physics for Cartoon Developers: just how long should a character remain suspended after realizing he's in mid-air? We'll need pure math computation methods for ordinary cartoons and numerical methods for interactive cartoon games.
    • Actually, some of the people I work with have been doing research on trying to simulate cartoon physics, it's VERY difficult! It's basically research into getting game characters to stretch or compact realistically when accelerating or colliding with walls/floors. In terms of "real" physics, this is close to soft-body dynamics, which is MUCH harder than the rigid-body dynamics presented in this book...
      • A couple of years ago, I stumbled across an old "Walt Disney Presents" from the 50's or early 60'sl with a discussion of this. They really spend time on the plausibility and the twist that makes it "believable"


        hawk

  • This is a refresher course in high school physics, sometimes freshman college physics, but the author does not have any kind of perspective on game development. It's easy to pick up a book about physics and implement what's in there. The equations are well known. But that kind of implementation is much, much, too hardcore for game use, where you need to devote 15% of each frame to physics calculations.

    The trick is coming up with a way to seem like you're doing much more than you really can. The book gives little help there, as trickery and non-traditional techniques can buy you a lot more than just implementing standard mechanics.
    • This is a very interesting point -- I imagine that a lot of modern game development has to do with squeezing as much as possible out of each frame....and for the same reasons that 3D graphics programming is more than just "calculate primative, raterize, clip scene, etc." but actually uses well-designed algorithms to make this process more efficient.

      Do you have any links/books/info on the "trickery and non-traditional techniques" that game developers might use?

      --Noah
  • I am a flight-sim junkie, and a former military pilot (before anybody asks, I am NPQ, not physically qualified to fly anymore). I have owned maybe two dozen different flight simulator programs over the past fifteen years.

    My favourite for a long time has been Austin Meyer's X-Plane. X-Plane uses an engineering process called "blade element theory" to approximate the true behaviour of an aircraft in flight. And it does this fairly well; I think X-Plane does the best job of any of the PC-based sims at mimicing the actual feel of the aircraft.

    X-Plane doesn't have the "eye candy" of MSFS-2002 or any of the Flight Unlimited series, but as far as accurately modeling flight physics, X-Plane is head and shoulders above the competetion.
  • by pclminion (145572) on Tuesday December 18, 2001 @11:55AM (#2720377)
    First of all, let me say that I will be getting my degree in physics in a few months, and I'm well versed in physical simulation. Not in the game arena, but in the applications arena.

    Runge-Kutta is a complex method for quickly and accurately solving differential equations by numerical means. It is used instead of simple Euler iteration because it is equivalent in speed and gives much more accurate results. It works by adjusting the timestep dynamically to skip over regions where the system is changing slowly, and to integrate more carefully when the system is changing quickly.

    This is all well and good when you are trying to do something important, like simulating heat flow within in a heatsink. But for simulating the orbits of planets around a star, for example? What a waste of time! The orbit is elliptical, so just simulate a freaking ellipse!

    What about space missiles? Do you need Euler integration? No! There is a closed-form solution to the linear acceleration problem -- it's a quadratic. This procedure does not give low error. It gives zero error.

    I read this guy's articles several months ago. I thought he was off his rocker then, and I still think so now.

    • This is all well and good when you are trying to do something important, like simulating heat flow within in a heatsink. But for simulating the orbits of planets around a star, for example? What a waste of time! The orbit is elliptical, so just simulate a freaking ellipse!

      That's only true in a two-body system.

      What about space missiles? Do you need Euler integration? No! There is a closed-form solution to the linear acceleration problem -- it's a quadratic. This procedure does not give low error. It gives zero error.

      Only if you assume a flat earth with constant acceleration at all altitudes - which is an incorrect assumption when you're trying to model intercontinental ballistics.

      I read this guy's articles several months ago. I thought he was off his rocker then, and I still think so now.

      Apparently, your soon-to-be degree in physics doesn't imply a degree in common sense.

  • So there I am trying to solve a ballistics problem for a game. I need to drop artillery shells on target, based on launch speed, required horizontal distance and gravity, but not, thankfully, air resistance or other accelerations. We need this to work right, but more than that, we need it to work quickly for an imminent product demo, so a co-worker is thrown at it as well. He has his Halliday and Resnick Fundamentals of Physics Extended Third Edition, and a couple of years of college maths.

    So we get to work. I do a quick napkin calculate and can solve for the range based on the speed, angle and gravity, but I can't figure out how to solve the equation for the angle. It's fairly easy, but I'm an absolute duffer at maths (it nearly dropped me out of college). My coworker has started right, trying to solve it for the angle.

    Five minutes later, I'm done, and I mean done. I'm dropping shells within spitting distance of the target. "Oh, you solved it then?" asks co-worker. Heh, not exactly. I'm pumping angles into my napkin equation and doing a bsearch until I get a distance that looks close enough.

    Coworker is outraged! It's inefficient, he claims, which is technically true, but it's a few iterations happening every few seconds at most, which isn't even worth our time profiling. It's not perfect, which is also true. But our engine is using cheap and nasty "X += dX * dt" anyway, so even a perfect calculation wouldn't be accurate.

    My points: it's hitting the target. We hit the time target. It's a game.

    Sure, physics has a place, and it's aesthetically appealing, but as long as you get the results that you need, the method isn't important. The games that you think have great physics? Probably fudged nine ways from Sunday to make them feel great.

  • Just because this book tells you how to program more realistic models, does NOT mean they have to be realistic. For example, you can set gravity to 9.8m/s^2, or hell set it to 4.9m/s^2 and have it be the moon. Or if you JUST want higher jumps, increase the force you apply when jumping.

    The important thing this book (I assume) lets you do is generate better MODELS. These models can be parameterized on all sorts of things. The outcome doesn't have to be more realistic, but the interactions will be more consistent and reliable. In this way, the interactions of the forces (even if gravity is half or what it is normally) can still be realistic.
  • by shaunak (304231)
    For those of you interested in the physics of motion (mechanics), I would suggest you pick up the books "Vector Mechanics for Engineers" by Prof. Beer and Prof. Johnston. It is easily the best book for mechanics I have personally read. And it is modular in the sense you can skip some chapters if they're not interesting without going "DUH" while reading the later ones. Although it says 'For engineers,' the books are understandable even if you haven't got too much math experience. If you're scared of vectors, they also have a "Mechanics for Engineers."
  • The main problem with realistic physics in video games is that it really isn't possible to do it.

    What's that you say? But this whole post is about how you can do it? Nope sorry, but I don't know of any games today that really model what is going on in terms of 3D solid mechanics. Once one body interacts with another the calculations get staggering complex. Likewise do you really think that the flight sim calculates the flow around the aircraft to get it to behave right? Of course not.

    What most games actually do is model everything as a point mass and then add a handful of other parameters to take into account solid body rotations. Collisions and other more complex events are handled with simple rules of thumb. Or in other words they are fudged. Provided they are fudged well it doesn't really matter. This is what many simulation games do (like Terminus). If you are very lucky they may actually calculate the stall of an aircraft using bernoulli's principle at a few key points. However it far easier to supply a stall angle and stick with that.

    So when we talk about "game physics" keep in mind that some of the best game physics of all is completely fictitious. It just has to look and feel right, it doesn't have to be right especially when being right would take way to much processor power.
  • Lara Croft (Score:5, Funny)

    by Stephen (20676) on Tuesday December 18, 2001 @01:05PM (#2720978) Homepage
    Realistic physics in games will never catch on. Lara Croft would keep falling over forwards.
  • by Animats (122034) on Tuesday December 18, 2001 @01:09PM (#2721017) Homepage
    I'll have to take a look at this new book, but from the description, it looks like the author doesn't address the hard problems. Alternatively, the reviewer may not know what to look for.

    As someone else pointed out, there's a straightforward way to approach game physics, based on what you learn in a first-year dynamics course, and it won't work. Free flight is easy. Contacts and collisions are hard.

    Detecting contacts between objects is complicated, but well-understood. There are several free collision-detection engines available, and many research papers. The time bounds are quite good; only slightly worse than O(N) with the better algorithms. Writing a collision detection system is a big job, but the theory is tractible.

    Taking appropriate action when you detect a contact is the hard part of the problem. Bouncing balls are easy. Multiple irregular objects with multiple contacts, slipping and sliding, are hard. Most current games simplify their collision geometry down to cubes or spheres and botch the hard cases ("But my sword went right through him and he didn't even notice!") The latest generation of games is just starting to get contact right. In another year, correct contact handling will be a "must-have" for commercial games.

    If you simulate contacts between objects with a spring and a damper, you run into numerical stiffness during integration. Soft objects at slow speeds will bounce fine. In a hard collision, the forces become huge for short periods. The simple integration algorithms will result in huge errors, and the objects will go flying off into space.

    If you simulate contacts between objects as impulses (an impulse is an infinite force applied for zero time, but with a finite energy transfer), two objects bouncing off each other will work great. More than one contact per object doesn't work too well. Resting contact doesn't work; objects may fall through each other. And everything bounces like it's a pool ball, because all collisions take zero time.

    If you try to do everything with constraints, resting contact works. But combinations of sliding and resting contact result in wierd corner cases that are hard to get right. Trying to solve contact, rather than simulate it, leads to static indeterminacy. (Think of a table with four legs, slightly different in length. How the table behaves is very sensitive to small changes in leg length. Numerical solutions of multipoint contact problems become similarly sensitive). This is the approach Baraff preaches at SIGGRAPH, but few others have been able to implement it.

    After a few years on the problem, I developed Falling Bodies [animats.com], which successfully solves this problem well enough to simulate a human figure falling down a circular staircase. It can be done. I hammered through the spring-damper problem by using unusual and robust integration techniques. This is computationally expensive, but sound.

    If you're developing a commercial game, and need working physics, go with the Havok [havok.com] engine. They have a rigid body engine, a soft-body system, and a specialized vehicle simulation engine. (Yes, vehicle physics in games typically has fake components. In most racing games, the tires are impossibly good and the vehicle CG is impossibly low. But you need a real physics engine to fake it properly.) It's not cheap, but you're not going to solve this problem in a few months. Major developers have blown years on this problem and failed. Trespasser, from Dreamworks, went down the drain that way.

  • I picked up this book just last night at Borders... flipped through it, and thought it was really interesting. I'm not particularly interested in programming games, but I am interested in doing simulations. Can anyone recommend any other books that would get one into this?
  • by Junks Jerzey (54586) on Tuesday December 18, 2001 @01:44PM (#2721261)
    Unfortunately this method (Euler's method) is very inaccurate and unstable

    This is only true if you're simulating a standalone system (like the orbiting planet example). In real games, the player is constantly pressing the controller, collisions are occurring, and the "AI" is making decisions. Stepwise integration makes perfect sense in that case. Calling it "inaccurate and unstable" shows a lack of game development experience.
  • Carmageddon is an addictive game not due to the physically simulated space but due to the simple fact of being able to crash someone's eye balls after you run them over with your truck over and over and over and over and over again! (the sound of crashing bones is what makes that game addictive)
  • This is a subject on which I am as close to a world expert as it's possible to get. If you are familiar with MMOG development, you may have heard of MUD-Dev [kanga.nu]. If you do a search [kanga.nu] for my name and "physmud" [kanga.nu] you'll turn up hundreds of articles on the simulation of physics in a game engine. I used to simulate multi-day trajectories of orbital and ballistic bodies for SDI purposes for a living. I know just about all there is to know about this kind of modeling, and where you can take a shortcut, how to do a numerical approximation in n or nlogn steps when possible, what the inaccuracies introduced by each approximation would be... sometimes, I know how to do an exact solution to a transformation in a far smaller amount of time, using a jacobian transformation on complex geometries with an angular integration... but the reason I know this is, I learned on the job, and I took a degree (plus a bit) in physics, and I read all the books I could find. So, it is with regret that I say this book was not terribly good. I've seen better in a text entitled "An Introduction to Computer Simulation Methods, Applications to Physical Systems", a not too well written textbook with source in BASIC, but at least featuring a fair breakdown in the nature of algorithms, numerical integration, efficiency and accuracy, etc. A much better choice, IMO, would be "Numerical Recipies in C", though it's a little more advanced... "Numerical Methods for Physics" is hard to find, but very good. "Numerical Methods for Scientists and Engineers" is not the same book, and while very good for numerical analysis, it isn't an ideal book for learning simulation techniques. If you're interested in related fields, try looking on Amazon under Books/Subjects/Science/Mathematics/Applied/Compute r Mathematics. There's stuff on 3D graphics algorithms, signal processing, crypto, genetic algorithms, organic and physical chemistry sims, and more... just be aware that there are a lot of books on using Matlab/Mathematica/Maple/etc.
  • .. that the physics-based formulas are just *one* part of a physics engine.

    Collision Detection (CD), and more importantly Collision Response (CR) determine the "feel" for your game. You can have the most accurate physics in the world, but if your CD/CR sucks, chances are, you're bringing the game down too.

    Check the archives of Game Dev Algorithms [sourceforge.net] if you want more info.

I am not now, nor have I ever been, a member of the demigodic party. -- Dennis Ritchie

Working...