This is a short recap up to this point:
- Open the original Car .cab file for the 3D mate. Delete everything except the shaders, animator, animation controller and asset bundle (the asset bundle name and ID is how this file is referenced inside the game. In the data path ID, this file is pointed as “V00006_model”, which is why, later, we also need to change the file path inside the data path ID). Save.
- Create all GameObjects and Transforms that your model has, using UABEA’s “new”>property. Create all 236 (bonbe and transform) objects. Save. Close Uabea. Reopen.
- Open another instance of Uabea. Open lv0 (exported when we made the Unity Build). Select all GameObjects and transforms. Export Text Dump. Pick a folder and dump. In UABEA, click “rename”. Copy the name (ctrl+c) of the level0 .cab when the renaming window pop-up comes. Close that Uabea instance.
- Change the name of the file “level0” in the Windows Explorer with it’s original CAB name. (ctrl+v).
- Go back to the first UABEA (the one with the car + empty GameObjects and transforms), click “import”.
- Target the filename with the CAB name. Use the dropdown in UABEA, it should have an asterisk, select it. Click on INFO. You should be seeing all the game objects + transforms + original 5 files we left from the car with zero values.
- Save. Close. Reopen the file (remember, uabea loads in memory, there for it needs to update and refresh)
- Click on IMPORT, target the folder where we created the text Dump files with the data for all GameObjects and Transform.
- You should see an “import bulk” populated window with your object’s transform and bones CAB names. Click “import bulk dump”.
- Save Uabea. Close and re-open. Your file should now have been populated with numbers other than zero or ones for their ID Paths. If this is correct, proceed to the next steps.
An asterisk should also appear beside each of the newly replaced data, meaning, the container objects have received new information (from the dump text file). This is what we needed. Save in the floating windows. Save in Uabea.
Reuse and edit Path IDs, path data targets, and .cab properties from your 3D character to match the original .cab container properties and filenames.
Ok, now that all data (GameObjects’ names and Transforms) have been populated into the original .cab Car 3d mate container, we need to modify how the original file calls the objects and their animation clips. We need to make sure that the original animator controller will now target the new names we created for the prefab (Burstinatrix_v01). This is where it will be very helpful if the actual model and the prefab could have different names using an identification like “Burstinatrix_v01p” (parent object), “Burstinatrix_v01pr” (prefab). However, in my example, I had to identify the original “Burstinatrix_v01 prefab” by identifying the game object type.
First, open the “b19b6ccf – BURSTINATRIX GRT v01 – Copied GSRT” containing all GameObjects+Transforms+Car original files. Select the “b19b6ccf” Asset Bundle in the list. Click EDIT DATA.
We need to locate our MESH object which is called “Burstinatrix_v01” (prefab in Unity, remember? This is why it is convenient to name your prefabs accordingly). That GameObject has the Path ID of 4. So, in the EDIT DATA open window, scroll down until you locate the path to the file V0006_model.prefab, and change it to “4“. Also, change the name in 1 string first = “assets/reourceassetbundle/mate/v00006/(the name of your prefab).prefab
Save the changes. Close UABEA. Re-open it. Now the Path ID shows the correct number (4).
Now we need to modify the path data for the Animation Controller and the Animation clips that work with it. We also need to alter the ID data and path target file name for the Animation Controller property.
Copy the original Car ANIMATOR ID path. Open the original Car .cab file from the game. Look at the Animator ID path. In this case is the number “-4410459423979273359”
Select the .cab file we are editing with the Burstinatrix 3d pal. Open it in UABEA. Select “Burstinatrix_v01” in the GameObject list, but this time we will target the Parent Object (the one we created in Unity, which is the top parent of the prefab. This is why it is important to identify the objects, with the suffix “p” (parent) and “pr” (prefab), at the end of the name so that we can avoid having similar names in the listing). In this case, you can see it listed as the Path ID: #14. Click on “EDIT DATA”. Scroll down the data list, and change the SInt64 m_PathID = -4410459423979273359
This will tell the parent object (Burstinatrix_v01) to use the Animator object which the Car pal uses for all in-game animations. Further, we have modified what animations the new Animator will target (idle and damage, from our model).
After this is done, we want to add the NEW Animation Clips to the original modded car .cab file.
Using UABEA with the modded file (the original Car 3d pal file which we deleted all the GameObjects and Transforms, and now we have also added their Path IDs and transform values by importing the text dump from the original level0 Unity file…), we will create 2 new “empty” Animation containers.
File>New. Add asset. In Path ID (use any unique number), I’ll use 88888888 and 88888889 for both of the animations I previously created for Burstinatrix, (which were “idle” and “damage”). So I will only add those two animations. Use TYPE NAME/ID: 74. Leave the rest with default values. Press OK, and you should see a running man icon (Animation Clip) type created. It contains zero data information. Save in the floating window, save in UABEA main window. Close and re-open.
Now, we need to copy the original animations inside the Build file we produced with Unity: “sharedassets0.assets“. Open that file in UABEA. Select the “V00006 from the list. Click Edit data. Copy these values:
We copied the original animation trigger values correctly. Close that file. Close that UABEA.
Re-Open the “b19b6ccf – BURSTINATRIX GRT v01 – Copied GSRT” Modded file of the Car (where we are adding all the new objects, transforms, path IDs, Animation clips), and from the list, select “V00006_Controller”. Click on EDIT DATA. Scroll down until you see this section “0 vector m_AnimationClips” (start at “1 Array Array (10 items)” and end selection before “0 StateMachineBehaviorVectorDescription“; notice the animations are numbered 0-10), and PASTE the data we previously copied from the “sharedassets0.assets” file.
Since we created fewer animations, only 9 animations are pasted (0 – 8 ) from the data we copied from our original sharedassets0.assets Unity build file. But that’s ok. Just replace all those animation clips. Those will be the animations referencing all the Animation Clips we used in the behavior tree we modified in Unity for our Burstinatrix animations.
Save the floating Window. Save in UABEA.
Shaders and Textures
We can easily modify the textures that the Car 3d pal is using, by editing/swapping the 2048 x2048.png texture. The textures are used inside a material. The car has 3 different materials. We know which material and textures correspond to the car because we can see that in AssetStudio or AssetRipper. Currently, the MATERIAL that shades the car is called “V00006_MAT2” and it has a texture color, called “V00006_tex.png”. As long as we use this same Material Name and same Texture Name in Blender and Export it to Unity, it should be straightforward how to modify 1 material and its car texture.
If you did the AssetRipper extracting the Car 3d pal, the Unity project can be directly opened with the Unity Hub. Add>Add project from Disk, target the AssetRipper directory where you extracted the project; and Unity will read it and show every dependency with the Car pal: materials, names, textures, behavior tree, and animation clips. This is very useful since you can explore the hierarchy, the clip’s properties, the required trigger conditions, and other properties.
(TO BE CONTINUED – Month 7 of 5).