I know raycasting is used to get the properties of the ground, but not sure about anything else. I would guess you would create multiple parts and then set random body velocities to them? Not sure.
The BodyAngularVelocity is used to rotate the parts in a random direction, while the BodyForce randomly move the parts in different linear directions (A BodyVelocity would work too but it’d only be constant)