How to extract game assets from unity android game

How to extract game assets from unity android game


I recently came across our ball in maze apk file. I was very eager to make some improvements but unfortunatelly somebody must have deleted my Unity project. So I asked my self how to extract an android game made with Unity to get most of the Unity projectfiles back. Essepecially the .assets files as they took the most time to create. This is also a commonly asked question on the internet. Though I could not find a helpful answer.

It’s actually much easier than you’d expect. πŸ˜€ In the following article I’ll show you how to do it.

During my research I came across a script that allows you to retrieve mesh data from .apk files. That means you can partly restore your Unity-Project by using an .apk Android file as a basis. According to the developer the extraction scripts also works with Web, PC, iOS, Android, PS3, Xbox 360, OSX and Linux games. As I only have an .apk file, I wasn’t able to test out the compability of other platform types. But as long as the code is structred in a similar way, you should be able to obtain game assets like meshes and textures from PC-games etc as well. One thing to keep in mind is that the location where the assets can be found, may be different. Please read this article for extact information about your platform. Tell me about your experiences in the comments. πŸ˜€

It works with any Android game created with Unity.

Information: You could theoretically extract the 3d meshes and textures from well known titles like Templerun or Dead Trigger. But ripping games is (as far as I know) illegal, unless it’s your game or you were given the permission to do so. You only want to do it in cases like mine. Quaintproject assumes no liability!

What you need:

Step1: Downloading software

First you need to download the 3dsMax script from the website above. To activate or install the scripts it’s enough to simply drag the mzp file into the viewport of 3ds Max. The script is basically a set of scripts, as it includes a plugin to convert convert .pvr files (special kind of images, read about that later) to .dds files etc. You have to start 3ds Max in order to make it work.

To have some quick access to the import button click on “Customize”, switch to “Toolbar” and select “Game file import”. Then drag and drop the script to the left toolbar.

step0

Step2: Preparing the .apk for extraction

Next you have to change .apk file ending to .apk.zip the file will still be readable. Dispite that fact a warning might occur.

step1

step2

In the next step you have to extract the zipped folder. You can do this be right clicking on the selcted file and choosing “Extract all” (see screenshot).

step3

The newly created folder will contain many subfolders, which contain your app’s icon, the Android manifest, a bunch of other files which are not human readable and most importantly the .assets files. Sometimes the assets are split into several parts. The script will then automatically merge all the files into one.

step4

Importing the assets to 3ds Max

Start the importing process clicking on the Unity Importer Button. Choose open folder. Then navigate to the folder Data. Finally hit the open button.

step5 step6

The importer script will search the data folder. It displays all the files it was able to find. I’ m mostly interested in the file “Kugellabyrinth” (ball in maze game). Though I choose the option “Import all”. Objects like the camera or the sunlight will be imported as an Empty. We will later get rid of unnecessary objects so there’s no need to click through every single file. It’s a timesaver essepecially when it comes to larger projects. Importing textures worked im my case like a charme. The script will automatically create a folder called “Maps”. Some “.dds files” will be stored within this folder. Dds is an image format. Programms like Blender or Gimp can handle it.

step14

For professional mobile games an image format called .pvr is used. This format can store image information at a reasonable quality but with a very small size. This is the reason why this pvr converter is included in the script libary. It works pretty well but I’ve read that .pvr files couldn’t be converted to a different image format for various reasons. If this happens, use texturepacker to load .pvr image and save it to the image format you need. Of course you can keep the image format to rebuild your app. But if your original textures/ spritesheets don’t involve .pvr files this will be irrelevant.

But back to 3ds Max. As you can see my original textures are applied. Another positive aspect of this method is, that the UV’s of my mesh are still available.

step7 step8

Step 3: Exporting the meshes to Blender

As I only use 3ds Max rudimentary for my ArchViz stuff, so I decided to export my files to Blender. I choose .3ds as it worked best in my case. But all shown steps should be doable in 3ds Max as well. But why not checking out beautiful Blender just for fun? πŸ˜€

step9

I use the Blender 3ds. importer to load the meshes. What I get can be seen in the image below:

step10

step11

When using the .3ds importer it can be helpful to get rid of relations, unless they are really needed. Just press Ctrl P and either choose Clear Parent or clear Parent but keep Transformation.

step12

Next we want to delete the empties. These are beeing created for example for the sun light, the camera and other objects that basically have no geometry. Search for “Select by type”, select “Empty” and hit “X” to delete them. One optional step would be to clear the scale. Just search for “Clear Scale”.

step13

For testing I applied all the Textures. The meshes and the textures turned out quite nice. Dispite some colour issues on the obstacle parts. (See screenshot)

step15

Conclusion

All in all I think that the shown method can really be handy, if it comes to restoring lost mesh files including their textures from your Unity games. It’s also a proper method to make mesh-ups of your games, though your project files have been lost. Of course no shaders are included, nor the scripts.

Do you have any questions? – Feel free to post a comment then. πŸ˜€

Advertisements

38 thoughts on “How to extract game assets from unity android game

  1. Hi there, I recently got my unity work file removed, it was devastating! but I actually got to export my game file as an exe game before the work files were deleted! So, I hope you could assist me on retrieving what was lost from my game, is it possible to retrieve my scripts and prefabs assigned?

    Like

    1. Hi there, extracting the assets/ prefabs should work. But I guess you won’t be able to retrieve the scripts. Ask me, if yneed help! Cheers Markus PS click the link for the script to seethe process for a PC game.

      Like

    2. Argh, those scripts took me a week! But its good to know that I could retrieve the prefabs and assets. this means I get to retrieve the sound and gui graphics too right? I’ll try and let you know of the progress.

      Sorry I might have missed out on something which link exactly?

      Like

  2. pleas help me :
    “user interface icons could not be copied. Make sure you have write permissions in C:\……\ENU\usericons ”

    Help pleas….

    Like

    1. Hi there thank you for your comment. Sure we will help you. You seem to have a problem with permissions Please navigate to the usericons folder, right click to open the properties, then navigate to the security tab and set/ edit the permissions to full control or at least to read and write. This could fix your problem. If you need further help, you could send me your file as well. But I can’t go into more detail as I don’t know where in the pipeline you got stock, but I guess when extracting in 3ds Max. πŸ˜€ Hope this helps. Cheers Markus

      Like

  3. i have a obb file from a game that I wanted to rip for game porting. I found the .assets file that are parted like this.

    sharedassets.assets.split1
    sharedassets.assets.split2
    …split3
    …split4

    and so on. how to rip these?

    Like

    1. Hi there,
      the script will try to merge them automatically and delete the splits. Make sure none of the .split# files are open in other programs.
      You can also merge them yourself before you run the script, using the Windows Command Prompt.
      Code:
      copy /b sharedassets1.assets.split0 + sharedassets1.assets.split1 + sharedassets1.assets.split2 sharedassets1.assets But in most Casey the β€œout of the box” solution shiuld work. Thank you for your comment. Cheers Markus

      Like

  4. A good day quaintproject, i would like to have a conversation with you, it`s regarding how to copy button scripts in Unity Android Game. I will provide screenshots of what needed to be done. Is it okay with you? Thank you very much for your time. Please as much as possible, reply asap. Thanks again.

    Liked by 1 person

    1. Hi there, thanks for your comment. Yes, feel free to share your screenshots with us. Please note that we only extracted 3d assets. I highly doubt that you can extract compiled scripts, but I’d like have a glance at it. πŸ˜€ Cheers Markus

      Like

    1. Hi Toontown, sorry for my late reply, but I was on holiday. I am really sorry, but I no longer have a valid 3ds Max Installation on my computer. 😦 You could try to install a student version through the Facebook “Autodesk-Student” page, if you meet the criteria. Also the link you’ve shared with us isn’t valid. Cheers Markus

      Like

    1. Sai,

      Thanks for your comment.
      We would really like to help you extracting those particular assets. Though, for legal reasons we are not allowed to.
      Please feel free to reply if you have any further questions.

      Alex

      Like

    2. Hi,

      Thanks for replying. “blown away first try” is a 2d game. But your tutorial is for 3d and using 3ds max. I need those hero character and some effects sprites to surprise my sister on her birthday with a small game on her. Can you please tell how to extract those sprites. Waiting for your reply.

      Thanks & Regards,
      Sai Prakash

      Like

    3. Sai,

      Please apologise my late reply.

      I’d a closer look at the game you’d mentioned and it seems like it’s really only using sprites (no actual 3D geometry). AFAIK theres no way to get extract to the sprites. I am sorry. 😦

      Alex

      Like

  5. Hi quaintproject,

    Unity Importer 1.0 return empty despite having remark that says, ” 17 main files and 0 shared loaded in 0.8 seconds.”

    Help required. Thanks in advance.

    Cheers from Singapore πŸ™‚

    Like

    1. Hi there, thanks for your comment and sorry for my late reply. Unfortunately I don’t have a valid 3ds Max installation, so I can’t test it for you. 😦 What I’d try, is importing the 17 files piece by piece. This might help. Greetings to Singapore. Markus

      Like

  6. hi, I have a similar problem like Hitokiri, I opened the folder and in the bottom says 29 main files and 0 shared loaded in 0.2 seconds, but the importer is empty, nothing is showing.. what I miss?

    Cheers from Brazil πŸ˜‰

    Like

  7. I have 3ds Max 2018 but dont have the game file import option in the Customize User Interface menu. Any idea if it was moved in the latest version or how I can still use the script? Thanks for your help !

    Like

    1. Hi Natalie, thanks for your comment. To be honest I haven’t played around with 3ds Max for quite a while and therefore have no valid 3ds Max installation. If you find the options elsewhere, please let us know. Best, Markus

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s