Update: Feb 10 - 9:40am This is now live!
Update: Feb 2 - 11:38am We are pushing the date back to Feb 10th to give people more time to migrate and test their games. Please let me know if you experience any issues.
Update: Feb 1 - 12:09pm We are investigating some potentially interesting behavior with high-mass ratios introduced by the changes to density. Currently investigating, but based on our findings we may delay the roll out of making this feature default. Keep checking for updates.
Troubleshooting If Your Game Behaves Unexpectedly
https://devforum.roblox.com/uploads/default/original/2X/6/6f20950b2a9dae3f47ba10837d9679dd43240d5d.png-
Your characters feel like they have too much momentum, and take a while to speed up and slow down:
Check what materials you are using on your floor objects. Are they slippery like Glass or Ice? You may want to modify the frictional properties of these objects to make them more sticky (higher number). -
Your Zero-Gravity parts or missiles propelled by BodyForces, BodyVelocities, or BodyGyro’s behaving incorrectly:
Verify what material they are now, as these objects are likely to have different masses. You may need to re-tune BodyForces. -
Some of your mechanisms have gained a weird vibration and erratic behavior:
Are your mechanisms combining heavy materials with lighter materials? Hinges and Motors joining objects with huge mass differences may have behavioral issues. If you have a metal-chassis car with small plastic wheels you may experience some problems. Try to decrease the density of the car!
IF ALL ELSE FAILS TRY THE FOLLOWING SCRIPTS:
Copy and paste one of these scripts into the “Command” window of your Studio. They will recursively crawl through your game (including all the storage containers) and convert your Physical Properties.
Script 1: Set ALL Densities to 1 (does not include things you load it from assets dynamically)
function recursiveSetAllDensityToOne(instance)
if instance:IsA("BasePart") then
-- See if this is a CUSTOM Physics part already
if instance.CustomPhysicalProperties then
local oldProp = instance.CustomPhysicalProperties
local physicalProp = PhysicalProperties.new(1, oldProp.Friction,
oldProp.Elasticity,
oldProp.FrictionWeight,
oldProp.ElasticityWeight)
instance.CustomPhysicalProperties = physicalProp
else
local oldProp = PhysicalProperties.new(instance.Material)
local physicalProp = PhysicalProperties.new(1, oldProp.Friction,
oldProp.Elasticity,
oldProp.FrictionWeight,
oldProp.ElasticityWeight)
instance.CustomPhysicalProperties = physicalProp
end
end
for i,v in pairs(instance:GetChildren()) do
pcall( function()recursiveSetAllDensityToOne(v) end)
end
end
recursiveSetAllDensityToOne(game)
Script 2: Set any non-Custom parts to OLD defaults.
function recursiveSetDefaultsToDefault(instance)
if instance:IsA("BasePart") then
-- See if this is a CUSTOM Physics part already
if instance.CustomPhysicalProperties then
local oldProp = instance.CustomPhysicalProperties
local physicalProp = PhysicalProperties.new(1, oldProp.Friction,
oldProp.Elasticity,
oldProp.FrictionWeight,
oldProp.ElasticityWeight)
instance.CustomPhysicalProperties = physicalProp
else
local physicalProp = PhysicalProperties.new(1, 0.3,
0.5,
1,
1)
instance.CustomPhysicalProperties = physicalProp
end
end
for i,v in pairs(instance:GetChildren()) do
pcall( function()recursiveSetDefaultsToDefault(v) end)
end
end
recursiveSetDefaultsToDefault(game)
See thread for feature description: LIVE - Upcoming Physical Properties and PartMaterial Changes
Starting Wednesday morning (around 9:00 am PST), Feburary 10th, 2016 the new Physical Properties mode will be considered default. This means that people who haven’t already converted their Workspace.PhysicalPropertiesMode to New or Legacy may experience slight changes in part mass, friction and elasticity. We expect most games to be unaffected, but want our developers to be aware.
If physics is an important feature of your game, please test your games ahead of time by switching to “New” on this Workspace property. If you find that this mode causes problems, please switch the mode to “Legacy” to avoid problems and immediately notify us (in this thread if you have access!).
FURTHER READING
Details
- Humanoid to Object friction used to be calculated completely based on the Object the humanoid was standing on. Now, humanoid feet are treated as plastic, making slippery surfaces less slippery, and stick surfaces less sticky.
- We attempt to migrate any parts that have non-default friction and elasticity to behave the same away in the new system (see Migration Logic for more info).
- Buoyancy is now less extreme, the old system had a math bug which was now corrected.
Migration Details
- We attempt to migrate all parts when the new Physical Properties system is enabled.
- If your part had Friction that wasn’t 0.3, or Elasticity that wasn’t 0.5 we attempt to migrate this part.
- If your part already has CustomPhysicalMaterials enabled, we assume that you migrated manually and do not migrate this part again.
- Migration entails taking your Friction and Elasticity values and applying them into the new system, but keeping the Material’s default density.
- Any parts that had default Friction and Elasticity values (0.3, and 0.5 respectively) will assume the physical properties of the material.
Please Note: Switching to “Legacy” should not be considered a final solution, as “Legacy” mode will become unavailable within the next few months once this feature reaches Phase 3.