Deprecated "Hat" Class do not get affected by upcoming Accessory Adjustment, and can crash the Universal App

Description

I am aware that the Accessory Adjustment is a WIP feature. But I wanted to see the removed hardcoded accessory boundary constraints, and realized an issue with one of the Assets.

The reason this bug report was made, is because I have the strong belief that Roblox eventually doesn’t know about it. And that this issue may unawarely still persist when Roblox releases it, if it’s not addressed.

This is not about OriginalRotation not existing yet. I assume Roblox knows about that as well? If not, feel free to ask what I ment I guess

The Hat Instance is deprecated and really old, inherited by the Accoutrement Class (so :IsA is not excluded by it when filtering for “Accountrement”). But there seems to be left over accessories on the Catalog, that still use the Hat Instance. These unpredicted Instances could eventually cause an unexpected appearance. In this case, I encountered a problem for the Accessory Adjustment.

This Shield of the Sentinel - Roblox created by Roblox, seems to be a Hat instead of an Accessory. And there might be more.

It has no Attachment Logic, unlike Accessory.

Due to that

A few things occur.

On a newer version of the Accessory Refinement, with the XYZ on the 3D view. It crashes the Universal App. (DataModelPatch Asset Version 9383)

[FLog::Error] Error: CorePackages.Packages._Index.Scheduler.Scheduler.forks.SchedulerHostConfig.default:117: 
------ Error caught by React ------
attempt to index nil with 'Part1'
------ Error caught by React ------
CoreGui.RobloxGui.Modules.AvatarExperience.AccessoryAdjustment.Components.AdjustAccessoryView:220

The second thing, is that it has absolutely no effect on the Adjustment thing, due to the Accessory being a Hat Instance.

Re-production Steps

  1. Obtain DataModelPatch Version 9383, or a version that has Accessory Refinement with the XYZ 3D View and the Blue Selection Sphere.
  2. Obtain Shield of the Sentinel - Roblox and put it on your Avatar
  3. Enable Back Accessories on the API of the Avatar Rules accessoryRefinementTypes, either through Proxy Debugging or production… (idk why there’s unfinished thing on production API)
  4. Enable Accessory Adjustment and new Humanoid Flags.
  5. Play around with that specific shield in the accessory refinement

Note that you will crash, the version that doesn’t crash, is the version that doesn’t have that glowing ball.

Expected Result

Accessory moves. Accessory doesn’t cause a crash on the Universal App.

Actual Result

Old Hat Instances seem to cause unexpected problems.

 


Side note. Hat Catalog Instance conversion to Accessory when? Since there’s R6 to R15 conversions being worked on. I have the feeling that Hat may be part of this as well, but eventually has been gone forgotten.

13 Likes

How do you enable these features early?

2 Likes

I think it’s an easy step. I can’t guarantee that it will work on every Roblox Version without breaking or making adjustments to it.

 

I use Fast Flags, and turn them on every Roblox Update.

NOTE: This is a Roblox WIP Feature, expect unexpected results when enabling these flags unofficially. And make sure to turn them off when testing ur needs when playing games or working on things.

With that being said.

{
	"FFlagAccessoryAdjustmentEnabled2":"true",
	"FFlagHumanoidDescriptionUseInstances5":"true",
	"FFlagEnableNonUAPAccessoryAdjustment":"true",
	"FFlagAXAvatarFetchResultCamelCase": "true",
	"FFlagAXAccessoryAdjustment": "true",
	"FFlagAXAccessoryAdjustmentIXPEnabled": "true",
	"FFlagAXAccessoryAdjustmentIXPEnabledForAll": "true"
}

These are the Fast Flags. I will explain them all step by step.

AccessoryAdjustmentEnabled2

This Flag enables the Accessory Adjustment Menu in the Universal App. It also enables the new Attachment Points such as OriginalPosition. Note that currently OriginalRotation doesn’t exist, so there are some Accessories that are currently broken, in terms of their Rotation solely. Not to be compared with the Hat Instance issue in this bug report.

HumanoidDescriptionUseInstances5

This enables the new HumanoidDescription Instances, such as AccessoryDescription and BodyPartDescription

This is required or your Universal App will crash.

You may be familiar with AccessoryDescription if you’re familiar with this:
image

This flag used to be named HumanoidDescriptionUseInstances3 once. So, expect it to not work at any time.

HumanoidDescriptionFallback

Never bothered figuring out what this is for, I just have it on.
Don’t turn on.

EnableNonUAPAccessoryAdjustment

This is a new Fast Flag. I have no clue what it does. I was suspecting that it may be for RCC or the Thumbnail Generation thing that generates an Avatar when prompting to Save the Avatar using AvatarEditorService.

Since a few days ago, I tried to use AvatarEditorService on the new Accessory Adjustment, and it would crash my Roblox, and I’ve re-tried that multiple times.

After the next few days, this was fixed. No clue how. I only know that Roblox has Analytics for crashes (if the crash-reporter doesn’t crash as well). Eventually someone at Roblox has fixed that because of it, don’t really know. I’d get the clue if someone would come here and say “Hello”.

 

To use these flags, you have to use ClientSettings Folder and ClientAppSettings.json, there’s a tons of resources on how you can achieve that.

Edit:

FFlagAXAvatarFetchResultCamelCase - needs to be set to true as well for a later update.
FFlagAXAccessoryAdjustmentIXPEnabledForAll - needs to be set to true as well for a later update.

 

 

With that being said…

Note that since you asked “How to enable these features early”. There’s no early in this. It’s still unfinished. There’s bugs in the API that bug out my outfit due to meta version 1 solely. The avatar-rules now has the wrong accessory boundary rules compared to what they were aiming for temporarily for testing.

If you’re an UGC Creator, looking to experiment around on how people will be able to modify Accessories, give it some time.

 

From my observation, I think Roblox will allow full 360° Rotation on the Hat, Face and Neck Accessories, based on their hardcoded defined rules, which they removed in another version.

24 Likes

Thanks for your report. You are correct that this is an oversight on our part and not just one of the things we know about that has not been implemented yet!

We do know about the OriginalRotation issue and have a fix for that in an upcoming release.

Btw you shouldn’t be turning this one on, it is not necessary and might lead to bugs :slight_smile:

7 Likes

Is it also known that when clicking on “Apply”, the Transformation ends up to get “rounded up” compared and you don’t get that what you see while in the Preview.

It’s like as if in the Edit Mode, the Attachment itself is being moved.

2 Likes

Yeah, we know about this inconsistency between the preview and the applied adjustment. We plan to fix this soon.

Thanks for the report though!

To give an update on the legacy hat issue, we have identified that there are 94 accessories still using the legacy Hat instance and we will be updating them to use Accessory instance. We are also going to harden our code to gracefully fail in this case rather than crash.

6 Likes

Well crash would be Roblox closing, that’s not the case.

It’s just a “grey screen”, it’s just a regular error, but the user is actually locked out from the App and is forced to re-open.

This is how it looks like when crashed, for instance.

1 Like

“Crash” refers to a React/React-lua crash. I made a bug report regarding the lack of error feedback here:

1 Like

Thank you. I’m glad to see that the legacy hat accessories are being updated. I want to also say that some internal files on some accessories still use the legacy hat object so whenever new gift card item retextures get uploaded some of them use the hat instance instead of the accessory instance. Should rectify this if it hasn’t already in order to make sure it doesn’t happen again.

1 Like

They’re probably going to automatically auto convert them as well.

Perhaps they’ll even introduce it in the R6 to R15 Migration Tools, since it’s a Legacy thing. Well, if that team knows about the Hat Instance as well.

I don’t think it’d be auto converted because they still need to give the accessories proper attachment points based on where they go.

Pretty sure they’ll find a way to auto convert them. Roblox creates tools for their internal needs and I’ve seen the AvLab Experiences which are public, you can like visit them and explore.

They have scaling based on boundaries and stuff, which is math, I am pretty sure they’ll find a solution.

But they probably don’t need to do a lot, I don’t know if Legacy Hat is just a Mesh. Because if it is, there isn’t probably a lot to do. I wouldn’t think too much about it.

1 Like

how do you even discover new fflags ?

2 Likes

I’d be derailing away from this topic.

I am not using the Fast Flag Tracker. Also, some part at Roblox made it harder to figure out very very very new feature Flags earlier, yesterday. :confused:

I don’t know if it was intentional, mostly because I wonder if it will break a part of the Client for doing it.

There’s multiple ways. I avoided to create a Resource Thread for one of the methods, in order to give the opportunity for someone to figure it out, as a great way to meet people. I am also afraid of Roblox trying to ruin these methods. A few of the ways are extremely technical.

4 Likes

this update requires FFlagAccessoryAdjustmentEnabled3 to be set to true now

FFlagAccessoryAdjustmentEnabled2 and FFlagAccessoryAdjustmentEnabled also got removed

edit again: this update requires FFlagAXAccessoryAdjustmentIXPEnabledForAll to be set to true, other FFlagAccessoryAdjustmentEnabled5 is now set by default
image

9 Likes

I noticed that now you can’t easily crash anymore.

Whenever I click on that Shield now I receive this message:

image

Now, I am not sure if it means that there was a React Error, but just suppressed.

1 Like

The accessory adjustment feature should no longer throw errors when legacy hats are equipped.

We have been somewhat delayed in converting these legacy Hats to Accessories, but this change is still planned and should happen soon.

4 Likes

Since this is the perfect Bug Report to add onto an additional issue with the Hat Instance.

Unlike Accessories:

  • Hat Instances create a HeadWeld under a Player’s Weld! This is a consistency issue with bad effects.
    • Any game that makes use of Cloning the Head without much sanitization, could land up getting an unexpected Weld, that will cause unexpected results.

This is something I experienced in a game.

Normal Accessories have the Weld under the Accessory’s Handle Instance, and not the other way around. The Hat Instance has the HeadWeld as a dependency and is involving other Instances (the Head in this case), instead of it being isolated at where the MedivalShield Hat is.