Anaminus/rbxmk

Converting rbxm to rbxmx using linux tool corrupts unions

Closed this issue · 16 comments

The title says it all, I'm downloading a .rbxm file from roblox and then I'm converting it and when the model gets uploaded again the meshes in the model break.

I think you meant 'Converting rbxm to rbxmx', RBXMK is a tool name

using rbxmk run

  • What version of rbxmk are you using? You can use the rbxmk version command to display the version.
  • Can you provide steps that will reproduce the issue? Include a sample .rbxm file, if possible.

We are using version 0.8.0 and the first image is what it should look like and the second one is what it looks like at the end. A sample file is also bellow

image

image

Bellow is the RBXM file before converted.
https://www.mediafire.com/file/1qnb7fkom7aim7d/HPD.rbxm/file

And to reproduce I am just converting from rbxm to rbxmx

One of the problems here is that the MeshIds aren't loading. They aren't loading because, without a descriptor, any property of the Content type can't properly be converted from rbxm to rbxmx. Supplying an up-to-date descriptor will resolve this part of the issue. The easiest way is to include the --desc-latest flag, which will download and use the latest API dump from Roblox.

Still unresolved are the wheels, which are made out of unions. I'll look into this part.

Ok thanks!

I tried with --desc-latest and the mesh still corrupts

echo 'the code' | ./rbxmk run - --desc-latest

I agree with this @iUnstable0

The flag needs to be added before the file name, or it will be treated as an argument passed to the script. It should look like this:

echo 'the code' | ./rbxmk run --desc-latest -

Screen Shot 2565-03-03 at 9 15 13 AM
It works now, thanks! but some part are missing I guess it's union

Ive renamed this issue to breaks unions because that is now the current bug

It turns out that the issue with unions is the same as with MeshParts. When a union is constructed, an asset is uploaded representing the mesh of the union. In this case, the ID is stored in the hidden "AssetId" property. Once again, the property is incorrectly converted to a string instead of the Content type, resulting in the mesh failing to load.

The problem is that this property is not included in Roblox's API dump. Fortunately, I've anticipated this sort of thing happening, with a system that allows descriptors to be patched with additional data.

Because this will be a common problem, I've produced a patch file that includes missing properties, along with instructions on how to apply it:

https://github.com/Anaminus/rbxmk/tree/imperative/doc/examples/dump-patch

I've confirmed on my end that this fixes the unions failing to load.

Thank you so much!