How to recover invisible / corrupt unions

Introduction

This tutorial will walk you through using GET v1/creations/get-assets to find and recover your unions if they get lost / corrupted / invisible.

This method relies on trial-and-error, and works best if tried immediately after you’ve lost a union.


When a union is created and (it, or its place) is saved to Roblox, a new SolidModel asset is created. The union instance in your place is then linked to this asset.

This tutorial is motivated by the sharp increase in “invisible unions” that I’ve been seeing lately. The invisible union issue appears to be caused by union instances becoming “un-linked” with their SolidModel assets, so the method in this tutorial attempts to “re-link” these unions.

Because SolidModels are not normally visible or accessible to developers, this is kind of tedious.

Requirements / Considerations

  • This method will only work if your union existed in a place saved to file, published to Roblox, or was published itself as a model.

  • This method will not work if you lost your union without saving it or your place.

  • This method may not be feasible if you’re trying to recover a very old union, or you created many unions after creating the one you’re trying to recover. This method relies on trial-and-error, so there may be too many results for you to look through.

Summary

  • We will use GET v1/creations/get-assets to get a list of SolidModel assets created on our account
  • We will try replacing the AssetID embedded in a dummy RBXMX union file with each SolidModel AssetID, and import the file into Roblox Studio until we find the desired union.
  • We can then separate and re-union the recovered union to fix its bounding-box and physical information.

Unfortunately, if you’ve already tried other recovery methods and this method fails for you, I don’t think there’s much else you can do to recover your work.

Instructions

1. Fetch a list of your created SolidModel assets

  • Visit https://itemconfiguration.roblox.com/docs#!/Item/get_v1_creations_get_assets.

  • Under Parameters:

    • Enter 39 as the AssetType.
      • This is SolidModel’s AssetTypeId, which is undocumented on the DevHub. This value can be found by inspecting web requests on the website.
    • Leave IsArchived blank.
    • Leave GroupId blank.
    • Leave SortOrder as “Asc”.
    • Set Limit however high you think you’ll need to find your union.
      • You likely won’t need to go higher than 25 if you’re trying this tutorial immediately after losing a union.
    • Leave cursor blank (for now).

  • Send the request and keep the results for Step 3.

  • If you need more results, the response will contain a cursor string
    (Eg. 10_1_c05f5a2de27925393fd9aaeba370f833).
    You can enter this string into the parameters list in the Cursor field and send another request to get the next page of results.

The results you get back from this request will be used to find your union.

2. Create a union to test SolidModel AssetIDs with

  • Open Roblox Studio and create a new Baseplate

  • Create a union, anything will work.

    image

  • Save this place to a file on your desktop

    • This step triggers Roblox to upload a SolidModel, and will set up the instance so we can easily implant the SolidModel AssetIDs we found from the previous step.
  • Right click on the union you created in the Explorer window and select Save to File.

  • Save this union as a RBXMX file on your desktop.

    • This is an XML format, and is human-readable.

    image

3. Test each SolidModel AssetID

  • Open the union RBXMX file you saved earlier in a text editor (Notepad should work, but I’m using Notepad++).

  • Find this line:

  • For each SolidModel AssetID returned in Step 1,

    • Change the AssetID in this line and save the RBXMX file.

      image

    • Drag the RBXMX file into Roblox Studio and see if it looks like the union you’re looking for.

Move onto the next step once you’ve found your union.

4. Regenerate the union to fix physics

Once you’ve found your union, you’ll notice that it does not behave physically in the way you’d expect, and even has an incorrect bounding box. This is because unions store their physical information with their instance, and not with the SolidModel.

Thankfully, unions remember what they’re made of, so you can fix this pretty easily.

  • Separate the union.
  • Re-combine the union.

You should have now recovered your lost union.


Let me know if you run into any trouble following these instructions so I can improve them.

44 Likes

Wonderful tutorial! I don’t use unions since I’ve moved onto Blender, but I have wanted to go back and view some of my older unions since there wasn’t a way to search through them… Or so I thought! Wasn’t even aware that this API was available.

I’d imagine with this info revealed that there’d be work put towards making something which could smooth the process a little. All the pieces seem to be here to write something which could take an entire list of IDs and create a .rbxmx file which has your unions lined up, allowing for us to go through batches of 100 rather than one by one.

2 Likes

Somehow I missed this when scrolling through the DevForum. Not only is this incredibly useful but I would dare it’s revolutionary. This type of fix for an issue so prevalent for many developers is amazing. Thank you for spreading this to the rest of us and I hope other developers will see this too.

1 Like