EDIT 24/01/2023: The rollout of this feature has now been completed. All unions on Roblox now scale nonuniformly. If you still need to migrate legacy content in the future use this plugin which has the same migration code switching the rollout flag originally did.
Overview
Currently, if you resize a Union and a MeshPart with similar contents, you will find that they have different scaling behavior. Specifically, Union scaling is letterboxed such that the union contents only scale uniformly.
With Nonuniform Unions, Unions will instead have identical scaling behavior to MeshParts, allowing non-uniform scaling of the contents.
This is a feature that has been in beta for some time and is now ready for full release.
The Changes
We are introducing a three-phase rollout property UnionsScaleNonuniformly
under Workspace
. This rollout property replaces the “Nonuniform Unions” beta feature.
If you were using that beta feature, enable the rollout property to continue using the functionality.
- If
UnionsScaleNonuniformly
is set to Disabled:- When you resize a Union and MeshPart with similar contents, you will find that they have different scaling behavior. Specifically, Union scaling is letterboxed such that the union contents only scale uniformly.
- Union visuals/collision geometry are clamped at 0.05 studs in size even when the union is smaller than that. This is due to a bug that we are currently aware of.
- If
UnionsScaleNonuniformly
is set to Enabled:- When you resize a Union and a MeshPart with similar contents, they will have identical scaling behavior, both expanding nonuniformly to fill their bounds.
- The bug with minimum part size has been fixed, and union visuals/collision geometry will exactly match the part size all the way down to 0.001 studs in size.
- If
UnionsScaleNonuniformly
is left as Default, then the scaling behavior will depend on what phase the rollout is in, initially being treated as Disabled and then later being treated as Enabled (see the Rollout Schedule below).
Auto-Migration Behavior
Many will recognize that this constitutes a breaking change.
While not all places use unions, and the vast majority of unions out there are uniformly scaled currently (so won’t be affected during the transition), any unions which were manually resized to proportions where letterbox scaling was applied to them (through the properties pane or community plugins) will be affected:
-
Any previously letterbox scaled unions will expand to fill their bounds rather than being letterboxed (compare the Disabled → Enabled transition in the above screenshots).
-
Any uniformly scaled union smaller than 0.05 studs on every axis will visually shrink to exactly match the part size instead of being limited to 0.05 studs in size.
To ease the transition, we have introduced an auto-migration behavior which will optionally resize the unions in your place for you when changing Workspace.UnionsScaleNonuniformly
from Disabled or Default to Enabled. When you do so, you’ll see the following popup offering you a chance to run the one-time migration:
As the popup suggests, the migration should only be run on old content created under the previous scaling behavior. If you’ve already been working on something under the Nonuniform Unions Beta you should decline to use the migration.
The auto migration cannot help with script interactions that depend on the size of particular unions or resize unions at runtime, so double-check your behaviors after setting UnionsScaleNonuniformly
to Enabled if you think you might be doing those things.
Rollout Schedule
1) Workspace Flag Available - August 15, 2022
The UnionsScaleNonuniformly
property is available under Workspace
, please set it to Enabled and run the migration as soon as possible if your place makes use of Unions! (Or Disabled if there’s something nontrivial in your code that you need time to adjust).
2) Workspace Flag Enabled by Default - August 29, 2022
On August 29th, 2022, any place which has not explicitly changed UnionsScaleNonuniformly
and still has it set to Default will automatically begin to have its unions scale nonuniformly. As mentioned above, this will constitute a breaking change for some places but can be resolved by performing the auto-migration in Studio in almost every case.
3) Workspace Flag Removed - January 24th, 2023
Eventually, once everyone who explicitly disabled the feature has had time to deal with the issues preventing them from migrating, the flag will be removed and unions will scale nonuniformly forevermore.
New Union Property MeshSize
In order for plugins to effectively operate on unions that have been scaled nonuniformly, the MeshSize
property which was previously only available on MeshParts
is now also available on unions and will be equal to the size that the union was when it was first created.
Plugins can set union.Size = union.MeshSize
before separating to have a guarantee that the union will separate cleanly. (The “Apply Scale” behavior will be used to resolve things in the case where a plugin uses Separate
on something that cannot be cleanly separated)
FAQ
Will my experience break?
- Most likely not. Even if you don’t run the migration, from our beta feedback and analytics, the vast majority of unions either won’t be affected or will only change slightly in ways that don’t impact gameplay. If you want to be safe, run the migration.
I’m not seeing the migration popup. Where is it?
- If you changed the property to Enabled and did not see the popup that means none of your unions required migration, nothing to worry about!
Why not automatically do the migration?
- This is a path we could have taken, however since the migration can actually do more harm than good in rare circumstances, and we do not expect many places to be negatively impacted in the first place, we opted for manual migration instead. A reasonable number of unintentionally letterbox scaled unions actually getting fixed by the change also played into the decision.
Can I use the migration more than once?
- Yes, if you set
UnionsScaleNonuniformly
back to Disabled, the migration will be offered again when you re-enable it.
What about migrating after the rollout goes away?
- Use this migrator plugin to migrate the selected content: Nonuniform Union Migrator [Official] - Roblox
Thanks to @tnavarts, @tnavarts, and also @tnavarts for their hard work on this feature! - Yes I’m thanking myself .