Mydayyy / ThisWarOfMineUnpacker

This application can unpack `This War of Mine` gamefiles.
The Unlicense
8 stars 1 forks source link

successfully compiled and unpacked the resources, but there is no information related to any formats #3

Closed bbsuuo closed 11 months ago

bbsuuo commented 11 months ago

Hello, I have successfully built the script and unpacked a bunch of game files. However, the issue is that apart from some audio OGG files and a few OGV video files, other files either have no extension or have a .texture extension. For some animations and mesh files, they also seem to lack any extension. Is there a way to infer their formats? Otherwise, I won't be able to use these resources. Additionally, .texture is a rather unusual file extension, and I've tried many methods but still can't open them.

Mydayyy commented 11 months ago

Greetings,

Yes. This is a limitation from the games file format. The packed files do not store any name, just a hash which is derived from the name. Therefore it's not trivial to reconstruct the name.

I did implement a workaround and did include a very basic map which maps some file hashes to names which is used during unpacking to reconstruct the name. That map was created during a gameplay session and logged every file which was accessed, but its far from exhaustive. You can read more about that on the blogpost towards the end here: https://blog.mydayyy.eu/2018/12/18/This-War-of-Mine-Unpacking-gamefiles.html

Regarding the format: The names are either the filehash or, if we were able to reconstruct them from the filemap, it is the actual name of the file as referenced by the game. If you're unsure about the format you can try to check the file headers which usually give away the format. You can read more about that here: https://en.wikipedia.org/wiki/List_of_file_signatures.

If you have any more questions please let me know.

Best Regards Mydayyy

bbsuuo commented 9 months ago

Greetings,

Yes. This is a limitation from the games file format. The packed files do not store any name, just a hash which is derived from the name. Therefore it's not trivial to reconstruct the name.

I did implement a workaround and did include a very basic map which maps some file hashes to names which is used during unpacking to reconstruct the name. That map was created during a gameplay session and logged every file which was accessed, but its far from exhaustive. You can read more about that on the blogpost towards the end here: https://blog.mydayyy.eu/2018/12/18/This-War-of-Mine-Unpacking-gamefiles.html

Regarding the format: The names are either the filehash or, if we were able to reconstruct them from the filemap, it is the actual name of the file as referenced by the game. If you're unsure about the format you can try to check the file headers which usually give away the format. You can read more about that here: https://en.wikipedia.org/wiki/List_of_file_signatures.

If you have any more questions please let me know.

Best Regards Mydayyy

Greetings, I previously attempted to parse these files but gave up. However, recently I've become interested in studying the art style of "This War of Mine," so I've started experimenting from scratch. Now, I've tried parsing the file header, but it seems that the resulting header does not correspond to any common file format, such as File header: b'\x00\x01\x00\x00\x00\x01\x00\x00DX'. Could this possibly be an internal engine resource package format? Is there any way to access usable resources from it? Strangely, I've also tried using tools like Ninja Ripper, but they seem unable to access these resources, as if they are not using the injected functions.

Mydayyy commented 9 months ago

Greetings,

Could this possibly be an internal engine resource package format

Sure, that is always possible although I haven't encountered it yet inside this war of mine.

A few bullet points tho:

Best Regards