As a Roblox developer, it is currently too hard to apply accelerations to a part efficiently and cleanly.
If Roblox is able to address this issue, it would improve my development experience because it allows for an easy way to apply forces to parts, change the effects and direction of gravity on a specific part, and create much cleaner physics code.
Here is are some brief summaries of the reasons I think that Acceleration is an important addition to Roblox:
Exploration
With the introduction of an Acceleration property the forces applied by gravity, BodyMovers and the new Constraints system may become exposed. This allows for developers to explore how these forces act on their creations and perform calculations which would not be possible without knowing a part’s Acceleration.
Less clutter & lower performance costs
This property would also reduce the need to create, cleanup, and manage BodyForces for hundreds of parts. It would also make it needless for players to implement their own acceleration code in a Heartbeat event and would allow script performance to be improved when multiple scripts need to accelerate a part. This also comes with the added bonus of requiring slightly less memory usage for these instances.
More intuitive & welcoming
Newer developers arriving on the platform may take much longer to discover and learn BodyForces. With the introduction of an Acceleration property, new developers will be exposed much quicker when they first start learning about Position and Velocity. There’s no need for them to do Google searches to figure out how to apply force to an object and it’s not piled into the hundreds of instances that Roblox has to offer.
This also means that new developers can apply concepts they learn(ed) in school to Roblox much faster and come up with new and creative ideas while Roblox is still fresh to them.
Applications to anticheat development
When it comes to developing an anticheat, having this information exposed to the developer allows them to more accurately predict the movement of players. If a player’s acceleration is known, the developer can prevent them from modifying their velocity. Since it can be written to by the developer, the developer now has full control over the player’s movements from the server and can ensure the player does not perform unwanted movements such as jumping abnormally high, falling too fast, changing their gravity, and other things.
Smaller Code
When implementing physics in games which require acceleration like forces scripts often get cluttered. This allows developers to more cleanly write their code:
-- Without an Acceleration property
local RunService = game:GetService("RunService") -- Get the RunService to make sure a force is applied
local bodyForce = target:FindFirstChildOfClass("BodyForce") or Instance.new("BodyForce") -- Create a body force if there needs to be one
bodyForce.Force = bodyForce.Force + force -- Apply the force
bodyForce.Parent = target -- Parent it
RunService.Heartbeat:Wait() -- Make sure it's applied
bodyForce.Force = bodyForce.Force - force -- Cleanup
-- With an Acceleration property
target.Force = target.Force + force