Page 2 of 2

Re: RESET Model Extraction Help

Posted: Tue Nov 23, 2021 6:44 pm
by frostbone25
Big wall of text warning, but just an update.

I didn't finish the hash converter app but after really intensive research I discovered basically that the current files that exist within the game, that being these .asset and .asset.user files which are human-readable, don't contain all of the corresponding hashes of the hashed files that exist within the game. To give a bit of context these .asset.user files are sorta like prefabs or materials, they seem multi-purpose in a way but most of these are meshes or materials, and a .asset.user file contains the hashes to the corresponding input files that the .asset uses (the .asset also shows in the "input" fields the original file name for the file). For reference also the hashing algorithm they use is SHA-1.

However, given that there are over 22814 hashed files in the game. Sadly there are only like a 1000 of these files that can be de-hashed through going through those .asset.user files. There aren't enough of those .asset.user files with their usually numerous instances of hashes that could cover 22814 files. I didn't want to stop there and tried to identify the majority of what these files were and after discovering that I sorta narrowed down about what half of the files actually are, but half are still unidentifiable.

This is a console output of the quick app I wrote to identify what was in the file (the rest of the files were unidentifiable, and some did have a clear header but I couldn't even track down what these could possibly be)

782 / 22814 - DDS Files
25 / 22814 - " xD" files
310 / 22814 - Mesh Files
14577 / 22814 - PhysX NXS Files
789 / 14577 - PhysX Mesh Files
13788 / 14577 - PhysX Convex Mesh Files
14577 / 14577 - PhysX Total Files Found (Found all PhysX NXS files)
15694 / 22814 - Total Files Found

So about 68% of the files could be identified. DDS are obviously texture files. " xD" files I'm not sure but they did share that 4 byte ASCII across the headers. 310 Mesh files I identified thanks to your code @Bigchillghost . A majority of the files I found were PhysX related, which makes sense as PhysX was utilized heavily in this game, so lots of traditional PhysX collision mesh files. The rest like I said have unidentifiable headers and contents and given also that they are hashed, and have no extension other than .bin that makes it really difficult to even figure out what the rest could be. Extracting the strings from the exe itself also doesn't help too much sadly. I would share a lot more here but this is now getting a bit off-topic of the 3D model extraction help.

Again lol the goal here was to basically find if the UV's were stored separately for whatever reason but there won't be a way for me to identify them, unfortunately. With also the intensive research I confirmed the fact that they did have UV sets when building the 3D content in this blog post - http://reset-game.net/?p=169 - They had 2 UV sets as a matter of fact. The first set was the main base material and often this was just a tiling texture and the second set was a dirt/moss mask for the object. Given their "limited" resources as an indie studio they did in fact go the mostly procedural route but they still had to paint per object textures, that being the dirt/moss masks. While also making the base material UVs tileable and seamless. There are also of course some textures that are related to the main GeoSuit model that are in fact layed out in some kind of UV configuration, just to note that they didn't fully commit to that full procedural texturing route for some of their "specialized" models.

So yeah, sadly I think the road stops there. I did de-hash 98% of all of the mesh files to their corresponding name by hand (there were only just 310) and extracted the majority of the 310 mesh files with a quick batch script using your app. I've zipped up and uploaded these models here - https://www.mediafire.com/file/w1dlgqjf ... j.zip/file - But yep, like I said the road sorta ends there, you helped achieve the goal I had of just needing to extract the meshes as I already extracted the music/sound, textures, and shaders from the game.