Roblox uses a rigid body physics engine. Parts are subject to physical forces as long as they are not anchored. You can create physical assemblies using attachments and constraints, and you can detect and control collisions between objects using events and collision filtering.
An assembly is one or more BaseParts connected by rigid constraints or motors (animated rigid joints). Assemblies can be set to an initial linear or angular velocity, or their behavior can be affected through constraints.
Object collisions or "touches" can be detected through the Touched event. You can globally stop a part from colliding with anything by changing its CanCollide property, and you can control which objects collide with others by setting up collision filtering.
Non-anchored assemblies react to force from gravity and collisions, but physical force can also be applied through mechanical constraints or mover constraints.
Mechanical constraints include familiar objects like hinges, springs, and ropes which can be used to build mechanisms. Each is covered in Mechanical Constraints.
Mover constraints apply force or torque to move one or more assemblies. Each is outlined in Mover Constraints.
The engine emphasizes best performance by automatically assigning assemblies to one of three simulation rates. For scenarios featuring complex mechanisms like tanks, you can improve stability by setting a fixed timestep. See Adaptive Timestepping for more information.