As far as I’m aware, there are 2* relatively straight-forward ways of making that possible.
Option 1 (Not released as of March, 2023)*
It was recently announced that we’ll soon be able to scale models via Scripts by using :ScaleTo(Number) on a Model, like so:
local ScaleFactor = 2 -- This would make the model twice its current size
Model:ScaleTo(ScaleFactor)
---
local ScaleFactor = 0.5 -- This would make the model half its current size
Model:ScaleTo(ScaleFactor)
Based on the feature’s announcement thread, there will be support for Character models so it seems like that will become the easiest way of achieving that in real-time for Character models of any type (R6, R15, Rthro, etc.)
As of writing this post, it’s currently in Beta so you could opt-into it in Roblox Studio via File → Beta Features → Check the box for “Scale Factor for Models” if you’d like to start using it but keep in mind that it wouldn’t work in live games until the feature has been released.
Option #2 (Not supported for R6 Characters, unfortunately)
For R15 Character models, there are several objects contained within the Humanoid (example shown in the screenshot below) that make it possible to update specific scale values of the Character (based on the same options that are provided in the Avatar customization page on the Roblox site).
Updating those via scripts would involve selecting the correct Character model, then the Humanoid, and then the specific object you want to update. Here’s an example:
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
player.CharacterAppearanceLoaded:Connect(function(Character) -- We're using "CharacterAppearanceLoaded" instead of CharacterAdded here to make sure that the entire Character model is there before the values are updated
local Humanoid = Character:WaitForChild("Humanoid")
if Humanoid and Humanoid.RigType == Enum.HumanoidRigType.R15 then -- Checks if the Humanoid exists, then makes sure its RigType is R15 since we know R15 Characters have those value objects.
-- There are other ways of approaching this instead of using ":WaitForChild()" each time but we'll keep it simple for this example
local BodyDepthScale = Humanoid:WaitForChild("BodyDepthScale")
local BodyHeightScale = Humanoid:WaitForChild("BodyHeightScale")
local BodyProportionScale = Humanoid:WaitForChild("BodyProportionScale")
BodyDepthScale.Value = 1
BodyHeightScale.Value = 2
BodyProportionScale.Value = 0.5
-- etc.
end
end)
end)
Updating those value objects will scale the Accessories with the Character model but it’ll be a bit more difficult to make everything uniform in comparison to the first option.
As I mentioned in my post, it’s currently in Beta (it’s not fully complete yet), which means that it’d only work in Roblox Studio until the feature has been released.
Ahh good idea! My 4 AM brain could not think of that lol, thanks for pointing that out.
The amount of time it takes for different features to exit Beta likely varies depending on the feedback they receive from developers along with the technical limitations that might be involved with its rollout.
For that specific feature (the Scale API), it seems like it might be several months until it’s fully released based on this post from a Roblox Staff member: