roblox-physics — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited roblox-physics (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Official sources (always check these for the latest):
This skill covers the modern constraint-based physics system, not deprecated BodyMover objects. It focuses on building correct, stable, multiplayer-safe mechanisms.
Activate when:
CFrame every frame.Cross-reference:
An assembly is one or more parts connected by rigid welds or movable joints, simulated as a single rigid body.
Key BasePart properties (same for any part in the assembly):
AssemblyLinearVelocity / AssemblyAngularVelocity — prefer constraints or ApplyImpulse over direct assignment for realistic motion.AssemblyCenterOfMass — force here produces pure linear acceleration.AssemblyMass — sum of all part masses; infinite if any part is anchored.AssemblyRootPart — automatically chosen root for replication and network ownership.Root-part priority: anchored > non-massless > higher RootPriority > size/name heuristics.
Use collision groups (PhysicsService:RegisterCollisionGroup, BasePart.CollisionGroup) or NoCollisionConstraint for part-to-part filtering. CanCollide, CanTouch, and CanQuery control different behaviors; see references/collisions-and-filtering.md.
All mechanical constraints connect one or two Attachments (or Bones), except WeldConstraint and NoCollisionConstraint which use Part0/Part1.
| Constraint | Use case |
|---|---|
WeldConstraint | Rigidly lock two parts together, same relative transform |
RigidConstraint | Same as WeldConstraint but attachment-based, supports bones |
HingeConstraint | Doors, levers, rotating parts; motor/servo optional |
PrismaticConstraint | Sliding doors, elevators, pistons |
CylindricalConstraint | Slides + rotates, like hydraulic rams or landing gear |
SpringConstraint | Springs, shocks, suspension |
TorsionSpringConstraint | Rotational springs |
BallSocketConstraint | Shoulders, ball joints |
UniversalConstraint | Drive shafts, constant-velocity joints |
RopeConstraint | Cables, winches, maximum length |
RodConstraint | Fixed separation distance |
PlaneConstraint | Constrain motion to a plane |
NoCollisionConstraint | Disable collisions between two specific parts |
See references/mechanical-constraints.md for creation, orientation, motor/servo tuning, and limits.
Modern replacements for deprecated BodyMovers:
| Legacy | Modern | Use case |
|---|---|---|
BodyPosition | AlignPosition | Move attachment to a position or another attachment |
BodyGyro | AlignOrientation | Align orientation; LookAtPosition for tracking |
BodyVelocity | LinearVelocity | Maintain constant velocity along vector/line/plane |
BodyAngularVelocity | AngularVelocity | Maintain constant angular velocity |
BodyForce/BodyThrust | VectorForce | Apply constant force |
RocketPropulsion | LineForce + AlignOrientation | Follow + face target |
| — | Torque | Apply constant torque |
| — | LineForce | Force along line between two attachments |
| — | AnimationConstraint | Constraint driven by animation/transform |
See references/mover-constraints.md for force modes (Magnitude vs PerAxis), relativity frames, rigidity, and reaction forces.
BasePart:SetNetworkOwner(player) (server only). Reset with SetNetworkOwnershipAuto().Security: clients can exploit owned parts (teleport, fake collisions). Validate gameplay-critical events server-side. See references/network-ownership.md.
Assemblies stop simulating when still to save performance. They wake on collisions, property changes, impulses, or gravity/wind changes.
Workspace.PhysicsSteppingMethod:
Use the MicroProfiler to check island distribution.
| Roblox | Metric |
|---|---|
| 1 stud | 28 cm |
| 1 RMU | 21.952 kg |
| 196.2 studs/s² | default "Classic" gravity |
| 35 studs/s² | "Realistic" gravity (≈ 9.8 m/s²) |
See references/units-and-physical-properties.md.
BodyMovers instead of modern constraints.CFrame every frame instead of using forces/constraints.Touched events from client-owned parts for damage/authority.scripts/VehicleController.lua — chassis setup with HingeConstraint steering and motor drive, with client ownership and server validation.scripts/DoorHinge.lua — motorized/servo door with limits and state machine.scripts/PlatformMover.lua — AlignPosition + AlignOrientation platform with configurable waypoints.scripts/Suspension.lua — spring-damper suspension using SpringConstraint.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.