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
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 -
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!