Is there a way to find out from which TM game a map file is? #71
-
Hi 🙂 First things first: Huge thank you for maintaining this project! It clearly shows how much effort was put into it. Here is some context to my question: A few months back I suddenly had the urge to come back to some old TM story maps just to experience them again. I quickly noticed though that I was missing a lot of files and that pretty much all the locators lead to dead links. I tried various different tools for parsing and extracting the data I want, but since all of them only supported header parsing I started to look into GBX.NET (not a C# dev myself so I tried every other option first 😃). Now I was finally able to extract all file and locator information I needed so everything was good wasn't it? I found this playlist by fab'm who also, like me, is very nostalgic for these old story maps and tries recreate the media packs that are no longer easily findable. Now back to my initial question:
The problem arises when a TMU map is provided. The FileRef version of TMU files is Thanks for again for working on this library and for your time reading this post 🙂 |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 6 replies
-
There is unfortunately no consistent way of figuring out which game something originates from. I have the same issue with my gbx.js library (thaumictom/gbx-ts#4). You can see the specific code (https://github.com/thaumictom/gbx.js/blob/121c50aad85e871fac16c003f4c0d8c672ff992c/src/gbx.js#L489) the library uses. It's obviously not a rigid solution, there likely will never be one. At least I could not imagine it being natively provided by the library.
|
Beta Was this translation helpful? Give feedback.
-
There is a way. Currently, the most accurate one to differentiate games is to check for existence+nonexistence of data chunks. I've been implementing this aside on my Gbx Web Tools project and I will eventually port it to GBX.NET likely in 1.3. For example, the latest chunk of CGameCtnChallenge is 0x02A, so you can invalidate that the map is from TMF by checking if there's a chunk of a higher ID, and then you follow on with other conditions. At micro-update scenarios it gets harder and you will have to add chunk versioning and other specifics into the conditions, but when you take two sample replays for example and compare them on https://gbxexplorer.net, you can spot micro-differences quite easily. It can get a bit tricky to find the right condition combo but it does the job done well by then. |
Beta Was this translation helpful? Give feedback.
There is a way. Currently, the most accurate one to differentiate games is to check for existence+nonexistence of data chunks.
I've been implementing this aside on my Gbx Web Tools project and I will eventually port it to GBX.NET likely in 1.3.
For example, the latest chunk of CGameCtnChallenge is 0x02A, so you can invalidate that the map is from TMF by checking if there's a chunk of a higher ID, and then you follow on with other conditions.
At micro-update scenarios it gets harder and you will have to add chunk versioning and other specifics into the conditions, but when you take two sample replays for example and compare them on https://gbxexplorer.net, you can spot micro-differences qu…