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.

1 assembly; 1 part
1 assembly; 18 parts
1 assembly; 179 parts


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

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

Mover constraints apply force or torque to move one or more assemblies. Each is outlined in Mover Constraints.


Collision events automatically occur when two BaseParts touch or stop touching in the 3D world. You can detect these collisions through the Touched and TouchEnded events which occur regardless of either part's CanCollide property value.

Through collision filtering techniques such as collision groups or part‑to‑part filtering, you can control which physical assemblies collide with others.

See Collisions for more details on detecting and filtering collisions.

Network Ownership

In order to support complex physical mechanisms while also aiming for a smooth and responsive experience for players, the Roblox physics engine utilizes a distributed physics system in which computations are distributed between the server and all connected clients. Within this system, the engine assigns network ownership of physically simulated BaseParts to either a client or server to divide the work of calculating physics. See Network Ownership for further details.

Adaptive Timestepping

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.