Take the Separating Axis Theorem. Build a collision detection system based on it, with several primitives, like barrels, boxes, and all the stuff. Stick there a rigid body response module and a really really stable numerical integration algorithm.
Is it fun enough to try that monster with just a couple of barrels? I guess it´s not...
A more detailed explanation: