Identifying the mesh, material, animation controller, animation clip containers within the .cab file and their Path ID
We are now ready to edit, delete, replace and copy all the necessary resource files within the original .cab file for the Car 3D mate. It is important to note that for the intended purposes I’ll be working with a rigged character that has around 100+ bones. If you read the forewarning at the beginning of this article, you should have an easy time doing your first model using only 4 or 6-bones character rig. Once you dominate this modding process, you can effectively add more complexity and game objects as you wish.
The first step is opening UABEA, and file>open>(target your lvel0 file). A pop-up window will open. I want you to focus on the information on this window, it’s crucial to understand what we are looking for and how we’re going to change/edit the data inside this resource file. Notice the “path id”, the “GameObject” type, and the name itself “GameoObject Burstinatrix_v01” which is inherited on how we named our Empty Parent Object in Unity:
Further down the list, we need to recognize more information. Namely the “Transform” type game object (“Unnamed asset” that has a transform gizmo axis), the “Animator” and the “SkinnedMeshRenderer”.
Those will become relevant in the process ahead, when we replace assets in the original .cab Car 3D mate file (b19b6ccf). Leave this first window of UABEA open.
In your Windows explorer, locate the original Car 3D mate in the Master Duel game folder. In my case is: C:\Program Files(x86)\Steam\steamapps\common\Yu-Gi-Oh! Master Duel\LocalData\ba53bff0\0000\b1\b19b6ccf
Copy that file, into another folder, so you have a backup and don’t mess up the original one. I will copy this file to the same Unity Build project folder I made before > E:\YGO_Car_Mod_UniBuild\b19b6ccf
Open a second instance of UABEA. Open the .b19b6ccf file. Go to UABEA, File>Open, Open in Memory then click “Info”.
You’ll be presented with a list of the game objects. DELETE everything except these types: shader, animation controller, animator, skinned mesh renderer, and the AssetBundle objects, as you can see in the reference below:
Leave this second UABEA window open.
Let’s return to the FIRST UABEA window containing the Burstinatrix Animation resources. Select all GameObjects (just the GameObject types), you’ll notice the Path ID starts from number 2 to 132. The data to the right side of the window also shows “132”. So we effectively have 130 selected GameObjects.
If you also only select “Unnamed asset” starting from Path ID number 133 to 263, again we have 130 selected Transforms. This is the total number of bones and their transforms in the resource file, aka: those are all the bones of your 3D model. In our case 130 game objects and 130 transforms correspond to the Burstinatrix 3D pal.
The next step is to select all GameObjects and Transforms; and click on the “Export DUMP” button.
Create a new folder. I will create it under E:\YGO_Car_Mod_UniBuild\Burstinatrix_Animations\Burstinatrix_Animations_Dump, so that all the data from those objects and transforms will be dumped into this folder. A pop-up window should open. Select “Text Dump”
What those files do is to inform the position of the bones to recreate the bone hierarchy in-game and also how all the transform object names are located concerning the Animator Controller. In Addition: This information is what transforms, rotates, and scales the bones in our 3d pal in space if the animation clip inside the animation controller requires it.
Switch to the second instance of UABEA (the one with the original Car GameObjects which we deleted) and you’re going to recreate all those 130 empty GameObjects using UABEA’s file menu, starting from number 2 to 132, one at a time. This is a lengthy and repetitive process, so separate 15 to 30 minutes to this task.
This is a full list of what the Type name/ID numbers create>>
In UABEA’s car GameObject’s window, go to File> ADD (ctrl+n)> Add Asset.
Set Path ID =2 (We start on 2 as we saw in the Burstinatrix GameObject list, and finish on 132)
Set Type Name/ID =1 (leave as is, no variation)
Mono class ID = 1 (This automatically identifies it as a GameObject)
So we repeat this process 130 more times, in sequence. We create a new asset. Continue to add the next number to the Path ID (2…3…4….5… until we reach 132), and use the Mono class ID “1” which is a “GameObject” representation in UABEA for Unity (in our case, it will represent the 3d mesh, each bone in the rig, and objects like camera or lights).
Your list of empty game objects should be like this:
After you complete assigning the sequential Path ID numbers to the GameObjects, we need to do the same for their Transforms. In UABEA go to File>Add (ctrl+n). We want to start numbering the Transform objects with Path ID 133 and finish at 263, and now we use the Type name/ID “4” which represents the Transform type.
You can also go to FILE>Save, so you don’t lose progress, or continue later, with this repetitive task. When you save in the floating list window, UABEA alerts you to also save in the previous floating window corresponding to that .cab file. Again, go to File>Save in the original .cab window to save your file. I will name this file “b19b6ccf – BURSTINATRIX GRT v01 – Copied GSRT“
🔔 Empty data objects have been generated!
Perfect! You’ve successfully recreated all of the data containers for your custom 3D mate mesh and bones, as Master Duel requires.
We have all the GameObjects and Transforms ready with their Path ID numbered sequence (from 2 to 263). Next, we need to IMPORT DUMP text data that we created in the folder
E:\YGO_Car_Mod_UniBuild\Burstinatrix_Animations\Burstinatrix_Animations_Dump to fill the empty data transforms and game object’s SRT (scale, rotate, and translate) that we created when we dumped as text when we opened.
At this point, I will save the copy of b19b6ccf file that we are modifying, and I will rename it “b19b6ccf_-_BURSTINATRIX_GRT_v01” just so we don’t confuse the original car .cab file (b19b6ccf), with the Unity Built project file of Burstinatrix (level0).
To the right, the UABEA window has a button: “IMPORT DUMP”. We want to target the Burstinatrix_Animations_Dump folder with all those text files, feed them to the GameObject and Transforms, and import them to the empty GameObject values in the list.
Once we select the Dumped Text folder from “Burstinatrix_Animation_Dump” that we previously created to export the Dump from the original Unity Build Burstinatrix project (.res0), select “Uabe Text Dump”.
A new pop-up screen will open to BATCH IMPORT, we want to target the “Import selected folder” button.
⚠WARNING: If you import the TEXT DUMP folder, but it shows a blank screen (empty data), we need to fix it.
Copy the name from the original Burstinatrix lv0 .cab file and rename the file with the .cab name “CAB-21238061c23ca5d88c65d4d3bcb56046”. Press “Rename” to access the text selection for the name.
Let’s switch to the UABEA window, where we have our empty GameObjects and Transforms (the original Car 3D pal that we deleted and rebuild the list of game objects and transforms). Save the changes. It will prompt you to save in the previously opened window and save. Close this UABEA window.
With the copied .cab name, go to the Burstinatrix_Animations folder. In Windows Explorer, select the level0. file.
Rename “level0” to “CAB-21238061c23ca5d88c65d4d3bcb56046”.
We changed the name of this file, to the .cab in-game filename so when we import it, it will automatically re-assign the ID paths from the original Unity Build export. This way, all the names will match one-to-one in the correct LISTING ORDER.
Open a new UABEA window. Re-open the file “b19b6ccf – BURSTINATRIX GRT v01 – Copied GSRT“. Click on “Import”.
Target the “CAB-21238061c23ca5d88c65d4d3bcb56046” file. It will ask you: “Is this asset serialized“? – Click: Yes.
The first name appears with an asterisk (*). Select it. And then click File>Save. Close the file. Reopen UABEA, and re-open that file (b19b6ccf – BURSTINATRIX GRT v01 – Copied GSRT). You should see all the objects and transform listing:
In Windows Explorer, locate the
E:\YGO_Car_Mod_UniBuild\Burstinatrix_Animations\Burstinatrix_Animations_Dump folder and delete everything we previously exported. So there are no .txt files.
Back in UABEA, select all the objects in this list (game objects, transforms, and everything else), and click EXPORT DUMP (so we will correctly create all the .txt files in the dump with their correct Path IDs).
This time the export should work by exporting the correct listing names of the objects.
THE REASON WHY THEY DIDN’T WORK THE FIRST TIME HAS TO DO WITH THE TEXT DUMP OF THE UNITY FILE DOES NOT CONTAIN CAMERA LIGHT OR OTHER THINGS THAT HAVE DIFFERENT NAMES IN THE 4 OR 5 FILES THAT WE LEFT REMAINING IN THE CAR. SO, WE OPEN THE ORIGINAL CAR FILE, CREATE NEW GAMEOBJECTS AND TRANSFORMS. SAVE. CLOSE. OPEN THE SAME FILE (ONLY THIS WAY THE UABEA IS REFRESHED, REMEMBER THAT EVERYTHING IS LOADED IN MEMORY, NOT ON DISK, UNTIL YOU SAVE). THEN WE OPEN THE OTHER ORIGINAL UNITY DUMP FILE, WE EXPORT ALL THE DUMP TEXT OF GAMEOBJECTS AND TRANSFORMS. CLOSE THIS FILE. WE REOPEN THE FILE WE WERE MODIFYING OF THE ORIGINAL CAR WITH THE NEW GAME OBJECTS AND TRANSFORMS. IN WINDOWS EXPLORER, WE RENAME THE LV0 FILE (WHICH WE EXPORTED FROM UNITY WITH THE BURSTINATRIX) WITH THE ORIGINAL NAME OF THE GAME’S .CAB. /// WE OPEN THE MODIFIED CAR FILE WITH THE NEW EMPTY GAMEOBJECTS AND TRANSFORMS, WE CLICK UABEA’s “IMPORT” BUTTON, WE ADD THE NEW .CAB FILE. THEN, WE SELECT THE NAME FROM UABEA DROP DOWN, THE FILENAME IN THE DROPDOWN NOW HAS AN ASTERISK (WHICH MEANS IT HAD CHANGES BUT HAS NOT BEEN SAVED). SAVE. CLOSE, RE-OPEN. AND NOW YES (FINALLY), CLICK ON “IMPORT TEXT DUMP” AND POINT TO THE FOLDER WE EXPORTED THE TRANSFORMATIONS IN DUMP WHEN WE DID THE PROJECT IN UNITY. //// NOW FINALLY, ALL THE OBJECTS SHOULD BE SEEN WITH THEIR IDS, TRANSFORMS, AND POPULATED PROPERTIES IN THE IMPORT BULK DUMP WINDOW.
(Please scroll all the way down the page until you find the pages numbers. Click NEXT. This is a long post)