Rthro Rig Height Scale Normalizer

Rthro has added a wide array of choice for players when dressing up avatars. It’s something that myself and I think a lot of other devs strive to support in games.

UNFORTUNATELY there’s a huge problem with Rthro avatars. They don’t scale consistently at all.

For example: See these two avatars. They both have the same scaling values, but result in wildly different avatar sizes.

You might say, well that’s the artists intent, it’s supposed to be big. I’m sure that’s true, but it’s detrimental to a lot of games to not be able make basic assumptions about character size.

For example, look at hit game Piggy where I’m unable to crawl through a vent because of my avatar size.

Alas! This causes many developers to either disable the use of Rthro or selectively disable certain packages. :sad:

As a result of this problem I wrote a script (which I’m sharing here) that re-scales avatars to have their height scale match the default R15 height (5 studs).

Here are some example results.

Each image includes the unscaled model, the scaled model and a default R15 model for scale.

RobloxStudioBeta_2021-03-16_16-37-27 RobloxStudioBeta_2021-03-16_16-38-04 RobloxStudioBeta_2021-03-16_16-38-35 RobloxStudioBeta_2021-03-16_16-38-55

Things to note:

1 - HeightScale is maintained in the rescaling process. That means if your height scale is say 2 when you rescale then it will remain as 2 after the rescaling.

For example in the above image the height scale of the package is 1.05. That means it’s actually a little bit taller than the base R15 rig in this case.

2 - Some packages have upper torsos that go above their heads. In these cases the top of the upper torso is used to measure the height of the avatar instead of the top of the head.

3 - The size of the parts change and a result so does their mass. If your game relies on players being able to push things (as an example) then you may want to adjust the parts physical properties so they maintain their old mass (or match a default rigs).

4 - This only normalizes height. If you tried to normalize everything (depth, width, etc) then the character would come out looking like a mess. You may still find a character is too wide or thin depending on your game.

I hope you get use out of this b/c it’s certainly helped me a lot! Enjoy!


Here’s the placefile I used for the screenshots if you want it
AvatarScale.rbxl (24.3 KB)

163 Likes

Seems useful for games that allow rthro!

6 Likes

Very nice and unique. Saves everyone a lot of pain and time

3 Likes

You’re a lifesaver, thanks! Wild that this sort of thing isn’t available by default. The massive scale difference you can have with Rthro assets can often be game-breaking.

10 Likes

Thanks,it can stop players troll people with weirdly large character in my game.

3 Likes

Yeah, more games should be taking this into consideration. I normalize all players to 5.25 studs tall in Frogge so that I didn’t have to make the navigable ventilation ducts huge, and just for general fairness so that everyone can hide behind the same things equally well. I agree that normalizing for height and scaling uniformly is a good compromise between gameplay and keeping players how they want to look. I hate it when I have an Rthro avatar and a game makes me have R15 classic proportions. It just looks wrong.

I do it a bit differently than this example. I measure height of the character in PlatformStand, from the bottom of the foot mesh parts to the top of the head part (the invisible, collidable Head), and then multiply the 3 BodyScale and HeadScale value objects by (5.25 / measuredHeight).

8 Likes

Rthro IS the future and this is a perfect way to adapt to it! Thanks @EgoMoose

3 Likes

I’m convinced at this point that you’re a god amongst men. Thanks for yet another amazing open source system. :0

4 Likes

I have a showcase in which the entire premise is built around being claustrophobic to a degree; I had built many small passageways throughout the game and when I tested it, everything worked out fine. I fit into every entrance I built.

There’s your problem: I tested it with my avatar, which uses almost the default height of avatars. When I invited some of my friends, or really anyone over to visit the showcase who used Rthro (or even just a taller character), they legitimately could not navigate anywhere.

So, as a person without previous scripting knowledge, I thought to myself: How could I fix this issue? A-ha! When I went to Game Settings > Avatar, there was the solution, a way to standardize avatar height.

This was a false hope. The avatars were not, in fact, the same height; some avatars were just- built taller. Furthermore, I tried standardizing body type to 0- the smallest you can go- and they were irritatingly, still higher than their counterparts.

Even with the above solution, the avatars also looked so silly! They looked so messed up. I began writing a feature request- but gave up. I thought that the only compromise was to mess up the body type. Looking back now, I should have finished the feature quest… but whatever. I stumbled upon this topic just now.

You are amazing. The resource you have just made and open-sourced will allow me, a user with no scripting experience, to add such a height scale normalizer to my game! I no longer have to hire another user nor try to figure it out myself.

To conclude, this solved an issue that had bothered me since October. My showcase will finally hit that sweet spot between avatars not fitting, or making corridors wider, or making players look extremely distorted.

How do you manage to solve the most essential problems? That is beyond me. I would like to conclude this long semi-rant, semi-praise with a nice, big,

Thank you.

10 Likes

Glad to hear it’s helpful for you!

On that note, for any non-scripters, this is a simple piece of code which will emulate the default spawning behaviour but apply the height scale normalizer.

local Players = game:GetService("Players")
local RthroScaleFix = require(script.RthroScaleFix)

local function addCharacter(player)
	player:LoadCharacter()
	RthroScaleFix(player.Character)
	player.Character.Humanoid.Died:Connect(function()
		wait(Players.RespawnTime)
		addCharacter(player)
	end)
end

Players.CharacterAutoLoads = false
Players.PlayerAdded:Connect(function(player)
	addCharacter(player)
end)

Enjoy! Good luck!

12 Likes

Oh, wow. This actually came in at the perfect time-- my fighting game has trouble with ‘minmaxers’ (the type of people who make their avatars as small as possible in order to make their hitbox tiny), and we were trying to think of some way to mitigate it-- and then you came in and saved the day! This is gonna save me a lot of trouble, thanks man!

4 Likes

This is an extremely usefull script!

1 Like

This should now work with the new head mesh update:

3 Likes

Yeah, I honestly think that this is a huge issue in some games like jailbreak, because people would pick the magma rthro, and become way harder to see or hit.

This has broken today, as Roblox just changed Heads to use MeshParts instead of SpecialMeshes. Just a heads-up, would love if you’d do an official fix.

2 Likes

I thought i had preemptively fixed this already? Are you using the new code? Ill take a look again as soon as i can.

2 Likes

Heres the fix that @EgoMoose has done Adjusts Roblox Rthro avatars so that their height scales match a 5 stud high R15 rig · GitHub

Yes I can confirm the newest version does work w/ the new head mesh parts.

Mesh based characters are now more accurately height scaled w/ this update as we can get a precise measurement of their height with mesh parts.

3 Likes