Jump to content

DerPopo

Members
  • Posts

    172
  • Joined

  • Last visited

  • Days Won

    7

Posts posted by DerPopo

  1. Due to the lack of proper streaming support compatible with the bundle format, LZ4 is not supported for compression. I don't want to load the complete file into memory either since it would cause a RAM footprint of ~1.5x the uncompressed file size, and bundle files can be 4GB+. It was already quite an endeavour to rewrite the original LZ4 decompression routine LZ4_decompress_generic for file streaming, and the compressor is way more complex.

    For this reason, UABE only supports LZMA compression, which is much slower than LZ4.

  2. I think I will create a plugin for asset tables since tinkering around with asset dumps isn't very convenient. Directly editing assets in the asset view, navigating to a PPtr reference and having a modeless view dialog (similar to the container list) also are things I'd like to add.

     

    By the way, I've created a Collada exporter for the Mesh plugin along with skeleton and blend shape support for SkinnedMeshRenderer assets using the assimp library (and modifications). It works fine so far, so it might be in the next beta release. Since I've got lots of other things to do, I can't tell when that release is ready though.

     

    Hi, I downloaded recently this tool, and I've a problem, because when I try to export a model, it appears me a screen that says "Invalid shader channels (vertex position doesn't have 3 floats)!".

    How can I solve it?

     

    The game possibly uses 2D meshes, while the mesh plugin only supports 3D meshes.

     

    Hello, I'm the other one unityGame player Please allow me to express gratitude to your tools.It helped me a lot. But now I have a problem. When I use it export dump the *.txt It's perfect. But I'm right now import dump this *.txt and save.When you open it again and export the obj It said "Unable to read the mesh asset!(unknown asset format)" I don't know what's going on ,Please help me Please allow me to thank you again for what you have done And forgive my grammar I'm using translation software This is a document https://pan.baidu.com/s/1kWTZRNL

     

    Thanks for the sample file! I've identified the issues with .txt and .json dump import and it will be fixed in the next release.

     

    Hi there,

     

    I use this wonderfull tool since june 2017, the best so far !

     

    But since a new update, I can't mod anymore (the game has changed to version 2017.3.0p3). I wonder : Does the tool (beta 2.2) support this version ?

     

    By the way, I found a bug while exporting 2Dtextures. Exporting in TGA format : the texture name is pre-loaded with CAB name file when saving. Exporting in PNG : the texture name isn't pre-loaded when saving.

     

    Thx DerPopo for your amazing work ;)

     

    Have fun all !

     

    Which problems occur when you try to mod the game? I haven't found any issues with a 2017.3.1f1 project.

     

    The other critical bug you've mentioned will be fixed in the next release. ;)

  3. 2.2 beta 2 (Happy New Year edition) is out with Unity 2017.3 support and bug fixes!

     

    ______

     

     

     

    Is there any way to add "int_plastic_brown" into container "materials\int_plastic_brown (Base)" like others assets on this pic?

     

    Currently, the best way is to edit the json dump of the ResourceManager asset (Export Dump, select json instead of txt). Locate the ResourceManager_Dependency that belongs to the asset with (Base) by searching for the Path ID (make sure it also appears under m_Container with the same m_FileID and the correct name), and add your asset to the container by inserting a new entry to m_Dependencies with your asset's Path ID and the proper File ID.

    You can look up the File ID of your asset by looking at the View->Dependencies dialog. The drop down list lists absolute File IDs (matching those in the main dialog) and the matching .assets files. Then look up the relative File ID by selecting globalgamemanagers and adding 1 to the number next to the .assets file name you looked up. Use the relative File ID for the entry in ResourceManager.

     

    Hmmm....do work properly feature of loading textures with MIP-map now ?

     

    PS: If i understand correctly, enabling this checkbox causes the generation of MIP-levels from the UABE?

    that is - i don't have to load a texture with contains MIP levels?

     

    There was an issue with crunched texture mip maps. They should be working now.

    UABE generates the mip maps on its own from a single texture, always combining four pixels to one for each mip map level. Crunch uses a different filter, I haven't touched the settings for it.

     

    So... Der. Can we get the ability to extract animations? Also, what are the .dat files for? Thanks!

     

    Not yet, but .fbx Mesh & AnimationClip export is on my TODO list.

    The .dat files contain the asset data in one of Unity's own asset formats. They are only useful with a hex editor or when copying some assets to another project built with the same Unity version, since they don't have any indication which file format and version they have.

  4. When I export a 100KB MonoBehaviour (contains UI strings), edit anything, then attempt to import it, I get a massive memory leak. Causes my system to lock up before the process is killed entirely.

     

    Have you also tried .json export/import? Anyway, could you send me a dump that causes the issue so I can reproduce it?

  5. Hello

     

    How can i export materiel type ? ps: i can export texture 2d but materiel no :upset:

     

    You can export a dump of materials, and the textures belonging to it. Exporting the materials to a compatible format (which?) would require a new plugin and support for exporting the shader linked to that material (and there are three or more different shader formats across the Unity versions supported by UABE).

     

    Is there a way to add more new file into asset?

     

    for example, if my asset file have File ID 0, 1 and 2.

    then if i use "File -> Add" and set File ID 3, the app will crash.

     

    any help? :x

     

    That crash is a bug and will be fixed.

    It automatically assigns a Path ID for the new asset (which you can change), and you can enter the File ID from the drop-down list in View->Dependencies.

    Note that you can only add a single asset through File->Add, not a new .assets file.

     

    This file

    How to use UABE unzip?

     

    can't open this file

     

    version 2.2

     

    In case you are not the same person, please refer to https://github.com/DerPopo/UABE/issues/169#issuecomment-352243453 .

     

    [ATTACH=CONFIG]23562[/ATTACH]

     

    Is there a way to add more file into this list?

    I try to edit its binary but not work, any idea? :'(

     

    Currently there is no option to do that in UABE. You could do it with a hex editor (though you need to resize the dependencies list, manually insert the new dependency entry, apply 4-byte alignment for the first asset, then update the metadata size, total file size and first asset offset in the file header) or through the UABE 2.1 API (which still has a bug saving .assets files that might be an issue in some cases). I'll get 2.2 API ready when I find time for it.

     

    One more question: I search for specific keywords (using total commander) and it shows that it's contained in globalmanagers file. I try to extract the resources, but is there any way how can I search for that specific resource? also still not clear is there any chance I can edit monobehaviour script?

     

    You could select all assets in globalgamemanagers (i.e. if you open globalgamemanagers in UABE, select all assets with File ID 0) and do a raw or dump export, and find out which exported asset the search term is in.

    I'm not sure what you mean, since there are MonoBehaviour assets and MonoBehaviour type classes. The first one is listed in .assets files and can be edited with UABE (export dump, allow UABE to extract script information or use "Tools->Get script information" first, do whatever you want to the dump file, import dump). The second one is in assembly files which you can edit with tools like dnSpy or ILSpy+Reflexil, or compiled il2cpp on some restrictive platforms such as iOS afaik, which probably are far more complicated to edit.

     

    Hi Dude... I just found your great tool...

    i was trying to edit the image and save them.. ( use 2.2 betta version)

    but the result of new file is missing..

     

    this before saved / original file

     

    and this after saved / after edit texture2D

     

    thanks You... and sorry for bad english :(

     

    Could you be more specific? Which files did you open for the screenshots (if possible, upload it somewhere and send me a link via PM), which texture did you replace (name, file id, path id)? The file in the second screenshot looks like a single .assets file without dependencies, and it doesn't look like anything is missing. The first file looks like a different one.

  6. Thank you very much for your hard work DerPopo!

     

    I hope you will continue with this project for a long time. I might as well donate some money to support the project!

     

    You're welcome!

    I do consider UABE to be a long term project. However, I don't want to make myself feel obliged to it by accepting donations since it's hard to predict how much time I will have for it in the future. Still, thank you for the offer!

     

    Hello! Thanks for that great tool, but I've got a couple of questions here.

    It was easy to figure out how export Texture2D as png as well as replace this with my own graphics.

    But is there any way how I can easily export all images in a batch? e.g. if I dont know the name of resource and just trying to find him among all the rest of assets. Also, is there any chance to decompile/change monobehaviour script inside asset?

    Thanks in advance!

     

    You can select multiple assets either by dragging with the mouse or through ctrl+click / shift+click.

     

    If you're referring to the game assemblies such as Assembly-CSharp, you can either use dnSpy or tools such as ILSpy or JustDecompile with the Reflexil plugin. If you've got a bundle file with .dlls embedded (e.g. some older web builds), you can export and import these files as well.

     

    In case you mean MonoBehaviour assets (these contain default values used to instantiate a MonoBehaviour object), you can export a dump, allow UABE to extract the script information, modify the dump and import it back.

  7. UABE 2.2 beta1 is out with support for 2017.1/2, batch import, MonoBehaviour dumps for non-bundled assets, massive performance improvements and almost 101% of the changelog.

    Sadly, I had to cancel lootboxes due to the Battlefront II disaster.

     

     

     

    I'm no expert, but...

    Your QR-code seems non-standard, it makes sense ? :)

     

    It's actually just there to hide a space invader on the 7dtd forums.

  8. 2.2 is mostly finished and only needs a final bit of polishing and testing. I'll probably release it as beta first and remove that tag once it has proved stable and major-bug-free for long enough.

     

    It'll be by far the biggest update with 34467 changed lines of code in 40 commits (vs. 19 for UABE 2.0) so far. I don't want to imagine how long it will take to write the changelog :p

  9. Hey DerPopo, nice utility here, thanks. I have some questions regarding a situation I have where I regularly acquire new assets and need to convert them to PNG when I do.

     

    1. The assets seem to mostly be dxt5, but I'm unsure. I assume the utility can determine this from the asset itself and doesn't rely on filename extension?
    2. Apparently batch extraction can be done through the command line, with a list of file names (or a file, with a list of filenames). Similarly, can batch conversion to PNG be done?
    3. Ideally I'd like to be able to do the conversion straight from asset file to PNG directly in my program. Do you have any shareable code for this? I'd be doing it in Java, but I know C/C++ as well, so I can easily translate if necessary.

     

    Texture assets have a field that specifies which compression type/pixel format is used.

     

    Currently, the command line is only able to export/import .assets files from/to bundles. Enhanced command line support is planned, but it won't be in UABE 2.2.

     

     

    You can take a look at the API (Visual C++ 2010 Release mode only). You need to open a FILE* using fopen or similar functions, create an AssetsFile instance with AssetsReaderFromFile and (LPARAM)pFile, create an AssetsFileTable, locate the asset you want with curFileType==28 (you'll need absolutePos and curFileSize members of AssetFileInfoEx), create an AssetTypeInstance and then call ReadTextureFile and GetTextureData.

     

    For the AssetTypeInstance, you'll either need a class database (for most separate .assets files) or just the type tree inside (for most bundled .assets files).

    You can use the menu entry Options->Edit Type Package in UABE and export the type database you need from the classdata.tpk file. Then use the ClassDatabaseFile class to read it, locate the class you need using the classId, and then create an AssetTypeTemplateField and call FromClassDatabase with fieldIndex 0. Create an array of AssetTypeTemplateField* (or just pass a pointer to a AssetTypeTemplateField* and set baseFieldCount to 1) and use that on the AssetTypeInstance constructor.

    If the .assets file has a proper TypeTree (hasTypeTree == true), you can enumerate through AssetsFile::typeTree.pTypes_Unity5 or 4 (header.format >= 0x0D for 5) with fieldCount entries. If an entry exists for classId==28, you can create an AssetTypeTemplateField with From0D (pass the type pointer and fieldIndex 0) or From07 (pass a pointer to the Type_07::base field), and use it the same way as explained above to create an AssetTypeInstance.

     

    If you're reading bundles, create an Asset(s)BundleFile instance with the FILE*, locate the entry or entries you're looking for and call MakeAssetsFileReader, which you can then use to create an AssetsFile. To find out whether you have to look in assetsLists3 or bundleInf6 (different type pointers stored in the same union), just check if bundleHeader3.fileVersion is 3 or 6.

     

    Note that if TextureFile::m_StreamData.size is not 0, you probably have a reference to a streamed asset. If it's in a bundle file, the m_StreamData.path string should start with "archive:/". The first part of the archive path is a bundle file name, derived from one of the bundle entry names. The second part (separated with a "/") is the actual bundle entry name you're looking for. You can open a reader through Asset(s)BundleFile::MakeAssetsFileReader as above.

    Otherwise, the m_StreamData.path string is just a file name relative to the .assets file.

    The texture data starts at m_StreamData.offset and has m_StreamData.size bytes. Read it into a memory buffer, set TextureFile::pPictureData and _pictureDataSize accordingly and call GetTextureData.

     

    GetTextureData converts any supported texture format to RGBA32, so make sure your output buffer has m_Width*m_Height*4 bytes. Also make sure you have TexToolWrap.dll and PVRTexLib.dll next to the AssetsTools.dll if you want to decompress EAC, ETC, ETC2, PVRTC and/or ASTC textures.

    I'm using lodepng (lodepng_encode32 function) to create a PNG out of the uncompressed data.

    If you want to use Java for your main programm, I recommend creating a wrapper library in C++ that can only export textures using this procedure since it'd be quite a lot work to make a full wrapper of AssetsTools.dll.

     

    In 2.2, the file callback/LPARAM parameter pairs will be replaced by proper virtual classes.

  10. hi.

    first thank you for developing this tool. it is really usefull and I think it is great.

    but in some cases i faced an error.

     

    some meshes cant be extracted and the error text was:

    Compressed Meshes does not supported!

     

    and in some texture extraction.error text:

    Unable convert texture to data!

     

    and some audio files.

     

    after all of mentioned cases i face "windows force stop application".

     

    i think this problems are in unity 2017 biults extraction.

     

    Unity 2017.1 is not supported in the current release. Both compressed meshes and 2017.1 textures will be supported in the next release.

     

    I'm always Here, quietly waiting for a new version with support for Mip-map :)

     

     

    Meanwhile, i use the method of displacement (shifting) of data in assets to load my content into resources 7dtd.

    I have a question regarding compiling a project in Unity:

     

    - if the content becomes a lot - i get the file ".resS". I'd like to avoid this, and to always get the ".assets", which would then do a "Dump" and export it to an assets 7dtd with through the UABE.

     

    Are there any settings that would cause that would it not create asset with the extension ".resS" and put everything in the main-asset ?

    (I want to get a bundle like BlockTextureAtlases)

     

    I have no idea if such a setting exists. In case it's only textures, exporting and then importing them through UABE will copy the .resS data to the asset itself. I don't know whether that's feasible in your case since there is no batch import. I might add this feature (move the resource to the asset) as a batch plugin option for UABE 2.2.

     

    Does it support 5.6.3p2?

    UABE crashed when I view the ParticleSystem data.

    pAssetTypeValueField->GetType() is null

    [ATTACH=CONFIG]22957[/ATTACH]

     

    Is the asset in a bundle file? If so, the error probably occurs because Unity's global string table has new entries (which, in fact, are "Gradient" and "Type*"). It should be possible to work around that by exporting the .assets file from the bundle with the type tree stripped since UABE's 5.6.0f3 database doesn't refer to the global string table.

     

    I cannot export some Texture2D, but, UABE is work.:miserable:

    Failed decompressing from texture format 34!

    Failed decompressing from texture format 47!

     

    ReadTextureFile is successed, GetTextureData failed.

    TextureFile stTextureFile;
    memset(&stTextureFile, 0, sizeof(stTextureFile));
    if (!ReadTextureFile(&stTextureFile, m_pAssetTypeValueField)) return FALSE;
    
    vector<BYTE> vBuffer(stTextureFile.m_Width * stTextureFile.m_Height * 4);
    if (!GetTextureData(&stTextureFile, &vBuffer[0])) return FALSE;
    

     

    Since these file formats require the PowerVR texture library, you need TexToolWrap.dll and PVRTexLib.dll in the same path as the tool. AssetsTools automatically tries to load the library.

     

    I want to say thank you for this wonderfull tool. Past week was hell trying to extract a stupid texture from a dumb mobile game of a smug soldier.

     

    This is THE unity asset extractor. Tried 3 or so, this one was the only one that worked.

     

    Thank you again.

     

    :)

  11. The header is strange. Please have a look at the picture.

    [ATTACH=CONFIG]22809[/ATTACH]

    Why does UABE work?

    Can I put the download url of the file here?

    Thank you for you answer.

     

    You'll have to use AssetsFile to read this, constructed with the file reader. Then, you can construct an AssetsFileTable to get a list of assets.

     

    I have an issue with assets where any attempt to use the Export Sound plugin returns the following error:

     

    Unable to open the streamed data file!

     

    Exporting texture files works fine, and I can view and export data for most files in the game. It's just the AudioClips that seem to give me issues thus far. Anything that can fix this?

    Let me know if there's any other information you might need, or if you need a *.asset or *.resource file.

     

    Could you give me the values of m_Source, m_Offset and m_Size of the AudioClip? Alternatively, you can also export a dump and upload it here or to pastebin (PM me with a link in that case).

  12. Yes, I have.

    It does not work too.

     

    The error you're getting shouldn't happen with any supported bundle file, especially if UABE can open it.

    Is the file we're talking about a bundle file (AssetsBundleFileFormat) or a .assets, mainData, globalgamemangers or levelX file (AssetsFile)? If the header starts with a string (UnityRaw, UnityWeb, UnityFS, UnityArchive), it's a bundle file.

    Also, make sure you are using Visual C++ 2010 in Release mode since different standard libraries aren't compatible to each other.

     

    I'd like to thank you for helping me a quite while back, DerPopo.

     

    I've seem to hit an issue with extracting assets for one of the games that I play with the error stating "Unknown Texture2D asset format!" If I'm looking at this correctly, it looks like they went from 5.5.sf1 to 2017.1.1p2

     

    Is there a way to extract this? I can provide a sample file if needed.

     

    The texture format has changed slightly in 2017.1. The next UABE version will support it but I can't tell when it will be ready.

  13. The version 5.2.2f1 of the assets file cannot be read.

    AssetsBundleFile->Read(AssetsReaderFromFile, (LPARAM)pFile, MyLogger, true) return false,

    and I get "AssetsBundleFile.Read : Unknown file version!"

    But, UABE is working.

    UABE & API v2.0

     

    Have you tried the 2.1d API?

     

    Hello there!

     

    First I would like to thank "DerPopo" (^^) for this amazing tool! Very well done!

     

    I happen to have an asset file here Ver 5.6.3p3 (Classtree 17 if that's needed) - is there any way to properly load it in the current version? It does load and when I manually select the last Version (5.6.3p3 is not included) I can see the whole list. Sadly the Plugins do not show up.

     

    Is there a small fix or woraround for this?

     

    Thanks a lot and keep up the good work!

     

    Critney

     

    Did you copy the 2.1 files that aren't in the hotfix into the 2.1d folder? The plugins will always be listed once they're in the Plugins folder, it doesn't matter whether it can find class information.

    Also make sure you are only selecting assets of one type, since it tries to find plugins supporting all selected assets.

    Edit : You can use the type package updated for 5.6.0f3 from the main post, it'll be more compatible to 5.6.3p3 than the 5.5 one.

     

     

    I haven't done that much work on UABE so far this month but I've at least finalized the new plugin system and fixed some major bugs so .assets files created by UABE will be better and bundle files with large lz4 blocks will be read properly. Batch import for assets and progress indicators are the next big things to do.

  14. Is there a way to view or extract files that are stored in a .assets.resS file? If I try to open the resS file itself I get an invalid file error, and while I can open and view the contents of the .assets file that's linked to it, when I extract them they just come out as .dat files referencing the .resS file.

     

    Only plugins (Texture2D and AudioClip) use the .resS/.resource files. Raw or dump export won't export the resource data since that's not included in the selected assets.

    If it doesn't show any plugins when Texture2D or AudioClip assets are selected, you probably are starting the 2.1d bugfix files without having copied the 2.1 files.

     

     

    after reading this does not look promising ... im trying to add a custom wav file for a secret chest code i put in the block.xml file..

     

    what can use/do to bring this into the game so when the secret chest is opened, the custom sound is played..

     

    thanx for reading

     

    me

     

    The info you've quoted is outdated. UABE does support editing .assets files.

    Adding custom sounds is complicated but possible :

    https://7daystodie.com/forums/showthread.php?32600-Overriding-vanilla-files-(assets-)&p=314195&viewfull=1#post314195

    You'll also need to add an entry to the ResourceManager (globalgamemanagers) or AssetBundle file table including the AudioClip asset path for the .xml. You can do that by exporting it as a dump, modifying it to add the new entry and reimporting it.

     

    Hey Depopo, got a question.

     

    Is it possible to extract an .obj (mesh) file out, edit it in Unity and then import it back in the game with UABE?

     

    It depends on the mesh. If the mesh has a skeleton, the skeleton data will be lost when exporting to .obj.

    You'll need to add the modified mesh to the scene (drag&drop) and build the project. The project's .assets file(s) will contain the Mesh asset which you can export to a raw file and import back to the original .assets file.

    I do want to add .fbx support at some point but I haven't had the time to study the FBX SDK.

     

    I'm looking forward to it! Especially the mipmaps.

    Any idea when you might be able to release it?

     

    I can't tell when it'll be finished. I'm actively working on it but there's still a lot to be done.

  15. The next update will have lots of additions, such as extracting MonoBehaviour types, compressing bundles, generating mip maps, multithreaded DXT compression, JSON dumps, massive performance improvements for big files, compressed mesh support, support for more than 2048 files and bug fixes.

    I'm currently reworking the file methods and the plugin system and am planning to add batch import, progress indicators as well as some command line improvements.

  16. I'm currently working on reverse engineering and translating an Android Unity game. I've been able to translate interface textures fine, but I need to access some data in MonoBehaviours, and I can't increase the filesize of those at all without the game crashing. I noticed on GitHub that support was planned for the next release, but when will this be?

     

    I'm also looking into compressed UnityFS bundles that are downloaded on the fly. UABE can decompress these and export modified uncompressed versions, but will the next release support re-compressing them?

     

    Thank you, UABE has been a fantastic tool for working on this project.

     

    I don't know when the next version will be released but I'm working on it at the moment. MonoBehaviour dump support looks good so far and will make it into the next release.

    Recompressing bundle files will also be in the next release. Slow LZMA compression works already but I'm trying to implement LZ4 compression too.

     

    Hi, i been looking on internet all day, and the only working tool for my project is this, BUT im completely lost in the most crucial part: this is what i've done so far

     

    1.- open the UABE

     

    2.- look for the file i want to open (this file: https://drive.google.com/open?id=0B_tjdC4kakD8ZjM2NUJmdUc3Z2s )

     

    3.- i got this message: This bundle file is compressed! Do you wish to unpack it? --> yes

     

    4.- i save the file (and i got this file: https://drive.google.com/open?id=0B_tjdC4kakD8RW9TY0M2ZHNWMFU )

     

    5.- NOW... how can i got all the animations meshes and textures? i can open the file, yes, but i cant export the animations, the meshes and textures i can do it, but when i try to open the last file, on the Unity Asset Editor, the Editor crash every time, as i said your UABE is the only tool that actually work on the apk extracted files, im sry to bother you but im really ignorant on this programming thing, this pny thing i need is the, animations, skeleton/bones/biped or whatever file is attached to the mesh, im sry for my bad english since is not my native language and thank you in advance.

     

    Amestrisx

     

    Animations and skeleton data aren't supported by UABE so far.

    If you have a file that makes UABE crash, could you send me one via PM (and upload it to a file sharing service such as dropbox)?

     

    I tried to do batch export but theres a problem with my CMD.

     

    It said "AssetsBundleExtractor is not recognized as an internal or external command, operable program or batch file"

    I've tried google and set the correct path for System32 but it still not working. Any tips?

     

    The file is called AssetBundleExtractor in newer versions. I'll update the Usage.txt for that.

     

    Hi. I just want to say, first of all, this is a great tool. It's the only tool that allows me to exact what I need. I exacted a bunch of images file from a game, awesome. Point is there are 300+ of them, and I need to replace them...Like replacing any image having the same name as ones in the asset package already...

    Is there nay feasible way to do this.

    cxlUpQx.png

     

    Batch import isn't supported right now but since I'm doing some plugin system improvements, I'll take a look at it.

     

    okay i managed to open and extract a dump file, and edit some text, it has 22 megabytes, but when i import it, it doesnt import the whole file, the original has like 630 000 lines, when i import it, it ends with like 6 000 lines :\

     

    any fix for this?

     

    I tried to extract raw but cant edit the file with a text editor.

     

    Could you send me the .assets or bundle file you created the dump from via PM?

  17. Hi. I've read the Usage file already, and also consulted the above posts. However, I'm still unable to do my batch export.

     

    • My batch file. (It's encoded in UTF-8-BOM, as UTF-8 didn't seem to work. It's also located in the same folder as UABE, in the Downloads folder of my comp.)
       
    • The error I get from the command prompt when attempting batch export: Image1 and Image 2
       
    • Proof that my batch file has the correct directory path to the bundles: Image
       
    • I don't believe there's anything wrong with the bundle files named 00a1bde4, etc. since I can export them individually just fine. (Proof: Image1 and Image2) Other than those 4 files at the top (which I've attempted to exclude in my batch file), I don't believe there are any "invalid" bundle files there.

     

    I assume there's a simple error(s) I'm making somewhere, so I'd really appreciate if someone could point it out to me.

     

     

    However, while making this post, I decided to extensively comb through the 3a folder of these bundle files (the files were originally each divided into subfolders corresponding to the first two characters in their file names), and I came across at least 1 file that yielded the message "Unable to read the bundle file! (Invalid file or unknown version?)". Is it unreadable files like these that are blocking the batch export I'm attempting? (The unreadable file in question: Here, though understandable if wary of viruses.)

     

    The package file error likely is because the current directory doesn't contain the classdata.tpk file. Either use cd in cmd to go to the path of UABE or copy the .tpk file to the current directory.

    That error isn't the cause for the missing exports though, but it could cause issues attaching to the cmd window simply because of the delay until the message is closed. Alternatively, if it doesn't show any program output, it should be possible to redirect the output to a log file through "AssetBundleExtractor batchexport batchfile > logfile.txt".

     

    The unreadable file is no bundle file (probably game specific) or it's a compressed / encrypted one. The only thing that could reveal more to that is the game code.

     

    DerPopo,

     

    I want to know more about the way unity assets are formatted.

    I am modding a different game (terratech) and want to manipulate the assets so I can change the prefabs such that the classes originate from a DLL of my choosing.

     

    So far I have been working to translate the code from ata4/disunity and making it compatible with 5.0 and onwards. My code is to the point where it can parse the file with some meaning but there still are things not entirely clear to me.

     

    Would you be willing to help me understand the unity file formats?

    Not to give you the burden of writing it all down, I can write down the format as far as I understand it and you could help clear up some details.

    If not, I want to ask if you have some advice on finding out the format further.

     

    Sorry for the late response. I've put your repo on my watch list so you can ask me through issues. You can also ask me via forum PMs.

     

    I think you forgot to apply endian swaps when reading TypeField_0D 'depth' and 'isarray' fields.

     

    These are one byte fields so endian swapping is not required in this case.

     

    Hi, thank you for the tool. I've noticed that since updating to 2.1d, the program crashes when trying to export multiple textures at once with the plugins. It'll export the first file selected, but not the rest. Everything else works as usual.

     

    I couldn't reproduce that issue (at least with my current internal version) but I'll definitely see if I can find files it crashes on. Thanks for the report!

     

    hey guys

    i have a problem is when I replace a texture which uses a sprite, it cuts if its bigger (tho both original and custom textures are 256x256)

    i've tried editing sprite dump, it worked in the first asset bundle, but when I've edited the other one, the game didn't load texture at all (well it did but it didn't show it) and as log file states, sprite wasn't loaded because of mismatched serilization. How can I solve this problem?

     

    Probably the type information UABE chose isn't accurate for the second bundle's Unity version. Could you tell me the Unity version of that file? It can be looked up with a hex editor or simply with notepad, searching for version names such as "5.5.0f3" at the beginning of the file.

     

    thanks to your api, i can export textures from assets now. very good! :peaceful:

    btw, how can i export meshs like your mesh plugin?

     

    Meshes are more complicated to export due to format changes and undocumented behaviour regarding offsets in the raw mesh data and the meaning of some important values.

    The mesh has multiple channels (from 0 to 4 : position, normal, color, uv1, uv2) that may be located in different streams (in the same data buffer but at separate offsets). Each vertex is described through these channels which have a stream index, an offset value (describing the relative position of that channel for each vertex), a format value (0 = 32bit float, 1 = 16bit float, not sure whether 2 is 32bit int) and a dimension count (amount of floats/ints).

    In newer Unity versions, the stream info is in another field but for older files, the stream location has to be calculated through the stride of each vertex in a stream (i.e. the amount of bytes of the stream's channels) multiplied by the amount of vertices. In some cases, the offset of the last stream is the size of the buffer minus the byte size of that stream.

    I don't know much of compressed meshes though.

     

    Hi,

     

    I'm trying to get textures from a unity 5.6.0f3 game.

     

    What I do:

    File>open>select the asset>select the texture>Plugins, nothing apears in the Plugins window...

     

    When I launch the program, I have an error message saying that it's "unable to load the PVR tex lib [...] may be fixed by installing the Visual C++2013 redistributable".

     

    I've installed it but it still doesn't work.

     

    Any idea?

     

    Thanks!

     

    Did you download UABE 2.1 first and then copy the 2.1d files in the 2.1 folder (overwriting existing ones)?

     

    Hello,

    I want to extract some .ogg files from a .unity3d file

    So I opened it and clicked on info.

    Now, when I select the AudioClip (Ogg file) and select Plugins and select Export sound, the program stops working and crashes.

    Do you know how I can extract these Audiofiles without crashing :/…?

     

    Could you send me the .unity3d file via PM (or any file with an AudioClip it fails to extract)?

  18. There's a game that contains approximately 600 assetbundle files which must all be decompressed before opening, which is quite a bit to decompress one by one. I looked in the Usage.txt to see the method for batch extracting, but is there a way to batch decompress the compressed assetbundle files?

     

    Batch extraction should automatically decompress the files. If it doesn't, could you give me one of the bundle files where it fails?

     

     

    Hello,

    I'm Hieu.

     

    I gave error crash program when i try extract Texture2D from file sharedassets1.assets (Link file location: https://drive.google.com/open?id=0BytDNugGrh9iaTlsM3lzejJlVFE)

     

    Environment

    + Windows 8 32 bit

    + Unity Assets Bundle Extractor version 2.1d

    + New type package with 5.6.0f3

     

    Steps:

    1. Open file asset sharedassets1.assets (Link file location: https://drive.google.com/open?id=0BytDNugGrh9iaTlsM3lzejJlVFE)

    2. Select all type Texture2D

    3. Chosen Plugin button > Choice to .PNG then press OK to extract resource

    4. Crash program

     

    Please help for fix this error

     

    Thanks.

     

    It looks like some of the textures use ASTC_RGB, which is not supported at the moment. I'll see if I can change that but so far I can't decode it properly, even though it should be equivalent to ASTC_RGBA from what I've heard.

    I couldn't reproduce that crash (at least on my current development version) but I've added some buffer length checks that I should have put there before.

     

    Hi! Big thanks for your tool!

    Try it, to extract the data I needed (terrain & animation)

    But I found you annoying bugs... :(

    - No ability to copy (or save to file), the contents of the View Data (Asset Data)...

    - Export Dump does not work correctly! Sohrae NOT the complete data. Save file and no reference to the texture.

    I beg you, fix this if you will not be difficult.

    And one more request - is it possible your utility, in the language of C#?!

    This is very important! Maybe then, I can Supplement it ( extract animations, terrain, structures, prefab and scene).

     

    The View Data dialog allows directly showing other assets referenced through PPtrs. If you need the dump of an asset "inside" a PPtr, you can use the m_FileID and the m_PathID fields.

    m_FileID is relative to the .assets file where the dumped asset is located. To find the "absolute" file ID of a PPtr (as shown in UABE's list) with a m_FileID value bigger than 0, use "View->Dependencies", select the absolute file ID of the dumped asset in the upper list and look up the name of the targeted .assets file where the number is m_FileID-1. The number left to this file name in the upper list is the absolute file ID.

    If the m_FileID value is 0, the PPtr refers to the same .assets file with the same absolute ID as the dumped asset.

    The reference is valid if m_PathID is not 0, in which case the m_PathID value is equal to the path ID as shown in the asset list.

    With both the absolute ID of the targeted asset and the m_PathID, you can find the referenced asset in the list (using "View->Go to asset" if necessary).

     

    The dump doesn't resolve the references because it would easily cause issues reimporting because it would either have to discard the changes to referenced assets or change assets that the user didn't select. More problems would arise when the same asset is referenced twice or when an endless recursion occurs. The only workaround to that is ignoring any additional reference to an asset already shown but that isn't a good solution either because it worsens the readability of the dump (as exporting references recursively does in either case).

     

    There currently is no C# wrapper for AssetsTools and it's not easily possible to create one without writing an intermediate wrapper library in C++ (Visual C++ 2010 in Release mode).

  19. I'm not sure if it has to do with UABE or not. Basically, I opened the resources.assets file in the game's data folder and exported the burnt zombie's textures in .tga, then I opened the file with Photoshop and scribbled a couple of lines with the brush tool to test if the changes show up in the game.

     

    After saving the file, I selected the texture in UABE and imported the .tga file raw; basically swapping the textures. I then made a mod installer and ran it; everything worked as intended, but when I got in the game and spawned a burnt zombie it looked white.

     

    And now for some odd reason the game just crashes after doing it again. I honestly don't know what I'm doing wrong.

     

    The .tga has to be imported through the texture plugin (Plugins -> Edit). .tga is not the file format Unity uses, the plugin only converts it to/from .tga and decompresses/compresses the texture, which usually is DXT1 or DXT5 on PC.

  20. Is the MIPmap issue what makes things turn white when swapping their textures with UBAE?

     

    It just causes more aliasing on textures and flickering of details when moving around. Mipmapping just stores several downscaled variants of the texture that simply don't longer contain these details.

     

    Some textures have their alpha value set to 0 and some image tools either display it as a white image or discard all non-white pixels but keep the transparency. I don't know of any issues in UABE causing such behaviour.

  21. Is it possible to automatically create folders based on the asset's path when using "Export to ___" plugin?

     

    e.g. The asset name is "assets/folder/subfolder/image.png". After using the plugin, the app creates "assets/folder/subfolder" folder if it doesn't exist and put the image.png file into it.

     

    While that's certainly possible with batch extraction, it would cause issues in the file save dialog as it shouldn't create the folder before the user presses save (and it doesn't allow slashes in the file name.

     

    thanks for this useful tool @DerPopo, ive been using for a while now. I have however question, some assets are compressed and when you decompress them with UABE you can make your edits however not able to recompress them back. Would it be possible to add recompressing function?

     

    many thanks and keep up good work

     

    I'll look into it.

     

    hi how update this tool DerPopo?

    7205b8542975012.jpg

     

    I've just not changed that text since 1.0. If you downloaded the newest version, it's not 1.0 no matter what that text says.

     

    DerPopo, please help with view linked data for MonoBehaviours variables changed in inspector.

    What a make this?

     

    https://7daystodie.com/forums/showthread.php?22675-Unity-Assets-Bundle-Extractor&p=477413&viewfull=1#post477413

     

    You can create the type database as described in the github issue and use the order as shown in the inspector.

    The next UABE release will be able to extract the information automatically so these steps won't be required anymore in that case (except if a special case is not handled properly).

  22. I'm working on a type information extraction tool for scripts. The tool itself works so far but I still need to integrate it into UABE and make sure it always produces "perfect" matches so the hashes are equal to Unity's. It will add many new options to modding by being able to modify all default variables stored in scripts instantiated with MonoBehaviour assets.

     

     

     

    Hi,

     

    Is there a feature to unpack multiple compressed files at a time? If not, is there a plan of adding it in the future? Or, is there another tool that can do that?

     

    There is a batch extraction command line option for bundles. It's described in Usage.txt. The bundles should be located in a separate folder so no other files could cause issues. If it successfully extracted the bundles, you can open them in UABE separately or all at the same time (the file dialog allows multiple selections).

  23. I've updated the type package to include a database for 5.6.0f3. You can find it on the main post.

    Edit : Another small bugfix, 2.1d, has been released.

     

    Hi,

    thank you for your great job.I think i found a bug.

    I'm using 2.1c to export and import mesh files in another game.

    When i export dump and then import it, the game always crashed.

    And do the same thing by raw, crash won't happen.

    So i export dump and then import it and then export it to raw,

    compare it with the original raw file by hex viewer, they are different.

    The raw file of dump seems like dislocation.I fixed dislocation and crash fixed too.

     

    Probably the Unity version that game uses has a slightly different Mesh format than the class database used by UABE. Except creating a type database for each and every Unity release, there's not much I can do about it. UABE already has class databases for all semi-major Unity releases from 3.4 to 5.6, for each of which I had to manually update my type extractor tool.

     

    Hello, DerPopo. After using your tool for almost a year, I am impressed by the versatility for modding that this tool presents. Editing locations of objects, textures, and if they exist in the game or not. However, there is one issue that I couldn't wrap my head around, and I hope you have advice for doing this:

     

    How does one edit the components of a GameObject?

     

    By that I mean editing the initial public or private variables a GameObject has when the scene loads or when the prefab is instantiated. An example could be an enemy having a health variable, and and using UABE to change the health of the enemy to a different number. If you can provide a solution to this dilemma I have, that would be greatly appreciated.

     

    Thanks for making this in the first place, it has been very useful.

     

    Stuff like object properties specific to the game is usually located in MonoBehaviour assets linked to the GameObject through the component list. These contain the values of local variables in script classes that are most often located in Assembly-CSharp.dll. Except for bundles where all the type information is already located in the .assets files, UABE can only show the common properties of all MonoBehaviours such as the MonoScript reference. Tools like ILSpy may help finding the variables and their order. If you need to look at batches of MonoBehaviours, maybe this github issue can help you. For single files, it's likely easier to view the raw asset in a hex editor. Note that all variables are aligned at 4 bytes.

  24. Hi, thank you and great job.

    May I ask if there is a way to make sense of the materials asset in the .unity3d files?

    Currently there is no plugins for materials. I'm just wondering if the information contained within the .unity3d file is sufficient to reproduce (or extract) the materials such that we can use it in unity?

    [ATTACH=CONFIG]19424[/ATTACH]

     

    The textures referenced by the material can be extracted (View Data should show all references) but the shaders are stored in a binary format, at least in newer Unity versions. Theoretically it should be possible to reproduce the materials but decoding the shaders to shader code is an issue at the moment.

     

    Will this tool add and AnimationClip and more Animation featured plugins?

    Animations are mostly useless until the full models (including bones) can be extracted.

    In future, will you add feature that allow to export models to fbx with bones are supported and reimport fbx model?

     

     

    First of all, thank you, DerPopo, for the tool. It's been immensely useful in my work documenting games for Gamepedia. Even I have yet to figure out batch processing... Spent two days extracting Tyranny and Pillars of Eternity bundles with map images, fingers still think I'm crazy. :)

     

    I'd like to second the request for Tarkov support. I've taken the liberty of screenshotting the hex view:

     

    https://www.dropbox.com/s/xjxdzkgwx40xkg4/Hex%20View%20AK.png?dl=0

     

    And uploading the file in question (with the manifest).

     

    https://www.dropbox.com/s/6gxbnvbls2u5oeb/ak74.zip?dl=0

     

    The problem seems to be with this particular version, non-weapon bundles open normally.

     

    (the game's no longer under NDA)

     

    The files have a simple protection. Each byte in the file is the original byte XORed with 0x47.

    I've already sent this tool to some who have asked so I can just post it here as well :

    https://www.dropbox.com/s/b77kryvb9p0a9kb/xor47h.zip?dl=0

    Drag the protected file into xor47h.exe and it'll output the unprotected file with "-xor".

    If you want to batch export bundles, create a text file like '+DIR <full directory path of the bundles>' (Windows line ending), create a batch file containing 'AssetBundleExtractor batchexport <full batch file path, if it contains spaces start and end with ">' and start it. Make sure the folder only contains valid bundle files, so in case of Tarkov only the unprotected .bundle files.

     

    hello can i ask something .. how can i batch extract the files from .assets file ?

    i mean extract 3d object textures with multiple assets file.

     

    You can select multiple .assets files in the open dialog, sort by type, select all Meshes you want to extract and use the plugin as usual. Repeat the same thing for the textures.

×
×
  • Create New...