Jump to content

DerPopo

Members
  • Posts

    172
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by DerPopo

  1. It's the assets file format by the Unity game engine (version 5.5.0p1). To export multiple textures, you can use click+shift-click to select multiple entries, then press Plugins and select export to .tga (or .png, which is slower due to compression). Does it actually fail while importing the file, or is the file slightly broken so UABE can still open it but it doesn't work in game, or is the file completely broken so neither UABE can open it anymore? I don't know of any such issues regarding the import itself. If the second case applies, make sure you properly updated the 4 byte long length field right before the modified string (without counting the additional alignment 00 bytes). If the file is completely broken, could you send me a "clean" unmodded .assets/bundle file and the asset you want to import? It's a compressed mesh which isn't supported at the moment.
  2. We've been talking via PM but I'll explain it here for the record. GameObjects contain one or more components, in this case we're looking for the MeshRenderer of that specific object. If the same mesh and/or texture is used in multiple instances, basically every related asset that is used by multiple objects needs to be cloned (e.g. MeshRenderer, Material, Mesh, Texture2D) and the references to these assets have to be updated, starting with the GameObject's components and going down the dependencies of the cloned assets. In modderdude's case, the issue is finding the MeshRenderer or any other reference to the Mesh. My guess is that it's simply located in another .assets or levelX file. Possibly some changes for Unity 5.5 broke the batch commands, I'll take a look at it. I have also noticed that the installer doesn't always completely close but so far it has always worked as soon as I tried to see why it hangs. The main thread waits for the installer dialog to free up its resources but for some reason it never exits that wait. I do agree that it should (at least try to) delete the AssetsTools.dll before closing.
  3. Could you send me the file (or in case it's too large just one raw Texture2D and a dump of it) via pm?
  4. Does UABE itself export the correct file before and after modifying it (export to tga/png)? Possibly the texture asset format is slightly different in the Unity version that game uses. It looks like it does indeed store audio files in a TextAsset (it's not unusual to store binary data in TextAssets). At least in an earlier version, Gwent used Wwise instead of Unity's builtin FMOD. It uses wav-like files (usually named .wem) with a custom codec that most players don't support. There are some tools to convert .wem files like ww2ogg but I haven't checked if they work in this case. You can select multiple assets at the same time. Sort for the type, select all Meshes (click on the first one, press shift, click on the last one) and export with the plugin. Then do the same for the other formats except Material. Materials usually refer to multiple textures but there is no plugin to directly extract the material. You can create your own material in Unity and use the different textures. The only thing missing is the shader that isn't easy to extract, at least in current Unity versions.
  5. Which texture compression format is used? You may try changing it to another one supported by whatever phone you target (EAC, ETC, PVRTC, ASTC) or even DXT (which is usually not directly supported on mobile chips and is uncompressed by Unity first). You can export the textures referenced to by that Sprite. Press View Data to look which textures it uses. I don't own that game. What does the file header look like? The first 128 bytes should be enough to see what's going wrong (use a hex editor and copy out the first 0x80 bytes or make a screenshot of it). It can't directly overwrite the opened file, you need to save it to another file name and rename it after closing UABE. Other than that, you can easily create an installer with the imported files from within UABE that does all the renaming automatically.
  6. I'll look into it. The bundle files have a custom encryption and are decrypted by the game code. You'll need to look in the game's Assembly-CSharp.dll or Assembly-UnityScript.dll how the game decrypts the files with a decompiler such as ILSpy.
  7. Download 2.1 first and overwrite the 2.1 AssetsTools.dll with the 2.1c one.
  8. In case you're trying to overwrite the opened .assets file, try another file name. It won't work otherwise.
  9. No, I'm fine I'm relatively busy at the moment so it can sometimes take a bit longer for me to respond. .resS and .resource files only contain raw data used by the .assets file, such as for Texture2D and AudioClip assets. The data from these files can be exported with plugins from the opened .assets file. UABE is written in native C++ so Mono doesn't work. Maybe it works with the Win32 compatibility layer Wine (at least older versions of UABE work on Linux with Wine). There are some well-written instructions on how to install Wine on OSX. A native Linux version (maybe also OSX) is on my long ToDo-list, even if it becomes a console version. If you use View Data on the TerrainData asset, you can look for texture references in m_SplatDatabase->m_Splats and m_DetailDatabase->m_DetailPrototypes. Note down the File ID in brackets and the Path ID for each of the textures you want to export and locate the textures to export them as with other textures. I'm not completely sure what you mean. In an opened .assets file, you can select multiple assets of the same type (e.g. all Texture2Ds) by sorting for the type first and export them like you would do with a single asset. You can't export all Texture2Ds and AudioClips at the same time If you need to export from multiple .assets files at the same time, you can easily select multiple .assets files in the file open dialog.
  10. UABE 2.1 is out with Unity 5.5 support and various smaller improvements. Both files are bundle files, one is compressed and the other one is decompressed. UABE can't compress the bundle file but it should still be usable in game. I actually haven't created mods for quite a while (except dummy mods to test UABE releases). UABE has started as an "extension" to grimreefer's UAE to modify .assets in bundles and grown into a general .assets and bundle modification tool with over 30000 own lines of code utilizing 14 third-party-libraries (8 of which are only used for textures). The time I'd otherwise spend making mods is mostly used up by UABE development.
  11. Sorry for the late responses. UABE usually doesn't really hang but it could indeed take some time to complete. More console commands definitely are a todo but I can't tell when I get to it. My French writing skills aren't much better than Google's. - I'll note that down on my todo list. - Shaders in newer Unity versions are compiled and compressed, so they would have to be decompiled. I'll add support for the old shader format in the TextAsset plugin though. Will do. In case you are adding the assets to an existing sharedresourcesX.assets file, they should be visible instantly. If you want to add a path, you need to set it in the m_Container Array in ResourceManager. mainData should have dependencies on all the sharedresources files, the file id can't be directly seen in UABE though. If you count the file id starting with 0 in View->Go to asset, excluding "unity default resources" and "unity_builtin_extra", you usually have the actual file id from what mainData sees. In case the sharedresources file isn't listed in the Go to asset window, UABE doesn't allow adding new dependencies but I'll definitely add that feature.
  12. The minibike is created from the GameObject "entities/vehicles/minibike_prefab" (if you open globalgamemanagers through UABE, you can search for that path without " of course). It contains a Transform component (in View Data, expand m_Component, Array, 0, data, second and view asset) that has all minibike parts linked as children Transform (they contain a reference to the according GameObject). There are two options : 1) Extending one of the minibike's part meshes by the whip antenna, which requires adding your texture to an existing one (I'm not sure if that's easily doable). You can find the mesh location in GameObject->m_Component->Array->(usually 1)->data->second->view asset->Base->m_Mesh, the file id in brackets is the one you're looking for. You can find the texture location in GameObject->m_Component->Array->(usually 1)->data->second->view asset->Base->m_Materials->Array->0->data->view asset->Base->m_SavedProperties->m_TexEnvs->Array->5->data->second->m_Texture. UABE can't export rigged meshes and can't import meshes at all so far. As far as I know, all the minibike parts have bones though so it likely won't work good. The only way to import a mesh is through the .assets of a built custom Unity project with that mesh in a scene. 2) Adding another part to the minibike. While it should work in theory, I haven't found a way not crashing the game even though I have created a new Transform, GameObject and SkinnedMeshRenderer and added all necessary dependencies to the ResourceManager assets. The game crashes because it somehow doesn't load my assets properly but tries to access them, so either the assets themselves are wrong or I am missing another dependency tree. I'll report back if I find a way to fix it. In case you store your texture in a bundle file, there should be an unnamed asset of type AssetBundle (path id always is 1 afaik) in at least one of the bundle's .assets that contains the names in the m_Container array. Export a dump, copy the last entry in m_PreloadTable and adjust it so it e.g. looks like this : 0 Array Array (144 items) [b][size=3]0 int size = 145[/size][/b] ... (entries 0-142) [143] 0 PPtr<Object> data 0 int m_FileID = 0 0 SInt64 m_PathID = 45 [b][size=3][144][/size] [size=3]0 PPtr<Object> data[/size] [size=3]0 int m_FileID = 0[/size] [size=3]0 SInt64 m_PathID = 46[/size][/b] The changed lines are marked in bold font. You don't need to fix the index in the brackets. It's important that the new entry is at the end and that you fix the size. Adjust the file id and path id to match your asset. Perform similarly on m_Container. Copy one item (you can use any in this case), increase the size, enter the new name, set preloadIndex to the index of the entry in m_PreloadTable, preloadSize to 1 and also modify the PPtr to match your asset. In .assets files, the ResourceManager asset in the mainData or globalgamemanagers file (depends on the Unity version of the game) has all the names. Copy the first entry (or any other entry) in m_Container, set your name and file/path ID and adjust the size. The file id here isn't the same one as in the list UABE shows, you need to look for other named assets in the same .assets file to find the correct one.
  13. I'll see if I can reproduce it. Removing sounds should work by setting the resource size to 0 in the AudioClip (Export Dump/Import Dump), I'm not sure if it throws errors in the log though. UABE can't import sounds so far. You could add one or more manually by creating an empty Unity project, dragging the sound file(s) in the assets tab, attaching one Audio Source Component per sound to the Main Camera (select the camera in the list, select Audio Source in the Component menu) and select each audio file in the Inspector tab. Build the project for one of the desktop platforms, open mainData/globalgamemanagers (the one without .assets) in UABE, export dumps of all AudioClips, change the resource file name so it doesn't conflict with the game (also in the dumps), copy over the renamed .resource file and replace the existing AudioClip assets using Import Dump. I'll work on direct AudioClip import options in UABE, I think it should be relatively easy with the FMOD API.
  14. FBX support is definitely something I'll look into. The .bep plugin files actually are renamed .dlls (compiled with MSVC++ 2010). They contain a function that returns a structure with the import/export options, and the functions for the actual asset import/export. UABE passes some interface classes to the plugin but they are not (yet) contained in the API.
  15. Thanks, I will look into it! It can't open the split files directly. There surely are some tools that can merge split binary files directly but the "dirty" way of merging the files manually with a hex editor (such as HxD ) works for sure. You have to open the .split0 file in the hex editor, then open the .split1 file and copy+paste its contents to the end of the .split0 file. Repeat that for the remaining split files, in numerical order of course. The resulting file should then be openable with UABE. For bundle files, there's a batch extract feature in the command line. It's further described in Usage.txt. Mipmaps should be doable, dds import shouldn't be too much of a problem either.
  16. So far, it only opens .split files as references from another opened file. If it's not a levelx file, you can open mainData or globalgamemanagers (the one without the .assets extension), and you can go to the split file in the default sorting with View->Go to asset, select the .assets file and type 1 for path id. ASTC support is already in if the 32/64bit version (depending on the used UABE release) of VC++ 2013 is installed. If that doesn't change it, it's a bug (or they changed the texture type numbers).
  17. The .sbsasm file can be copied out of the SubstanceArchive. Export it raw and delete everything before "SBAM" in a hex editor. The only issue is the .xml file that needs to be next to the .sbsasm file (both are packed in a .7z renamed to .sbsar). The information converted from the xml is stored in ProceduralMaterial and ProceduralTexture assets but I don't know the specifics of how the sbsar xml files are built.
  18. That's the plan. The FMOD API seems to have the proper tools to create sound banks supported by Unity. The only special case to handle is WebGL. Unity uses m4a there (if I remember correctly).
  19. The success message will be removed for the next release. UABE doesn't load or create mip maps. As it seems like Unity doesn't do that at runtime, I'll look into adding such functionality to UABE. The file you mention also is an assets file, it just doesn't have the .assets file name extension. When saving, it won't actually add .assets to the file name. UABE can't directly replace an opened file, so you'd need to rename the files anyway (e.g. rename "8e60b31b1672f415c92f32507253f1b6" to "8e60b31b1672f415c92f32507253f1b6-old", open the renamed file in UABE and save as "8e60b31b1672f415c92f32507253f1b6").
  20. I have no idea about obb files, but it seems like they aren't directly bundle files.
  21. If I understand you correctly, you are trying to find the byte offset to the Texture2D asset with the raw texture data in an .assets file, to refer to from another Texture2D asset? UABE doesn't show the offsets to the single assets, you'd have to search for the bytes in it with a hex editor. If you need the offset of the raw data inside the Texture2D asset, it's constant for a specific Unity version except the asset name. If you look at a dump, you can add up the 4-byte variable sizes and the 4-byte aligned string length. If you want to put the data stored in a .resS into a Texture2D asset, you'd have to export the raw Texture2D asset, copy-and-paste the referenced data from the .resS with a hex editor to the location in the Texture2D as mentioned above, and correct the array length (should be 4x 00s before the mentioned texture data offset). 00 the rest after the texture data, which is the .resS reference. You can copy your data to the end of the existing .resource file with a hex editor (export it from the bundle, note the file size, paste the data at the end, import the modified file). If you only have one AudioClip in your custom Unity project, use the original .resource file size as the modified AudioClip offset and the size of the .resource file from your custom project as the modified size. If you have more than one AudioClip, you have to add the according offsets from your .assets file (and use the size from there).
  22. You probably downloaded the API, which is only for others to write tools that use Unity's file format. Download the normal 2.0 release. You can also apply the small 2.0b hotfix in case it crashes on some files.
  23. NavMesh likely has very large arrays that aren't marked as TypelessData, so it needs ~30+ bytes for every single variable instance. On top of that, the tree view isn't too efficient for such large amounts of data. I might look into making it dynamically add the fields when expanding an item, but it isn't really a solution to the problem as it makes the list less responsive and still takes the same memory when everything is expanded.
  24. You'll most likely have to add the path in the PathId 1 asset (type AssetBundle) using export/import dump so it can find it properly. Make sure to update the array size properly before importing the dump (it doesn't matter if the indices are wrong though). Game updates will most likely require a new installer (even if it could find the updated pathIds automatically, changes to e.g. terrainxml would still break it). It stores exactly the changes you did to the bundle/.assets file (with or without saving before), it also lists the modifications. Maybe I'll create a C# wrapper for the API (no guarantee for now though). I tried to answer your PM, but it says your storage is full.
  25. Enter 0x1C for the type (you can see that number when you select any Texture and look in the Type field). Mono Class ID can stay -1 as long as you don't create any MonoBehaviours. After you press Ok, it will add the new item at the top of the asset list. You can use the texture plugin as you're used to. The files aren't compressed back after saving. I may look into adding a compress option (but disable it by default because it would need to be decompressed again when editing). Textures in .resS won't be touched, it will be stored in the Texture2D asset directly. Else, the whole file would need to be recompiled once the texture is bigger than before.
×
×
  • Create New...