PhysX SDK by Nvidia Corporation

PhysX is a middleware to simulate physics in render engines. How does that work? Imagine a catapult shooting a rock into the sky. It will fly along a trajectory with not so
difficult physics. You could code it yourself using wikipedia equations. You would take the start position of the rock and its start speed, then the gravity, and then take the physics equations and
calculate its position during each frame until it hits ground again. Something like this can be done on a little TI-83 during a long train ride (and was many many years ago by BBS) to code a simple
Worms clone.

But how would the rock bounce off the ground after hitting it? Now wikipedia equations would already run out of juice a bit. What if the rock has a complex shape? In what
direction would it bounce off? All this is what PhysX takes off your chest. If you code something with PhysX in your render engine, you do not set positions and rotations of objects
directly, but you assign them start positions, impulses, forces and weights. You basically assign them what your physics needs to be solved and then PhysX calculates its
behaviour and tells the render engine where to draw the object in each frame.

The other nice thing are PhysX joints, which can be used to build ragdolls, and that can be driven by motors to create powered ragdolls.

R.C. Bot Inc. has gameplay 100% powered by PhysX. Every gamepad input is used to set forces, impulses and motors. Every object that is actively moving is moved by
forces, impulses and motors in some way. The carrier and robot in the game are fully assembled by rigid bodies and PhysX joints, and robotics algorithms are used to move them around. The result
is behaviour like in real life, with all its unpredictable outcome. Such an approach makes sure that no game session is the same as before, and that things can be done in many different ways.

In addition, PhysX also provides a large number of effects like destrcution, clothing, particles and others.