can enyone enlighten...hm?
can enyone enlighten...hm?
You can probably find a module online to read the file, otherwise you will need to understand how the .tcm file is structured and what data needs to be read.
That's correct. If there's no existing .tcm file reader made in any programming language, you will need to understand the .tcm file's data structure.
I recommend 010 Editor for such things. You can do binary templates and structure the data by data types. And you also need a lot of patience.
I'm no expert on making that kind of tool, I will do some research about 010 editor so I can read the file that contains the data of terrain. and replicate it to unity
By "logic", if you mean "Why they did this?", I think it's a common practice to pack or encrypt these files. Probably the developer's logic is to not let the end-users use them or access them.
Sometimes a texture database could contain more information than needed but vital for the texture alignment, such as vectors/polygons used in the map terrain, so my opinion would be, for security reasons, to encrypt such a database to prevent users altering them because not every game server is actually having the geodata of the terrain loaded into the memory.
An old MMO from 2003 named A3 Online (https://forum.ragezone.com/f98/). There was a TDB tool released built using C++ but source was never shared and hence was wondering if there was some standard way. The only downside of the tool was that, in order to repack the extracted DDS files, the files had to be of same size which is sometimes hard to retain after it was updated.
I found the encrypt keys for TDBs.
Seems like TDBs are containing only .DDS(Textures) files?
https://ibb.co/Lt4WFk6
And also the C# source code for decoding/encoding:
https://www.mediafire.com/file/1xoll...r_GUI.zip/file
Code:private static void DecodeULL(ref byte[] buffer, int size) { for (int i = 1, j = size - 1; i < size; i++, j--) buffer[j] = (byte)(i ^ (size ^ (cryptTable[buffer[j - 1]] ^ buffer[j]))); } private static void EncodeULL(ref byte[] buffer, int size) // It's not used in the source { for (int i = 1, j = size - 1 ; i < size; i++, j--) { buffer[i] = (byte)((((j & 0xff) ^ buffer[i]) ^ (size & 0xff)) ^ cryptTable[buffer[i - 1]]); } }
Last edited by zipper20032; 23-07-22 at 12:12 AM.
If you're creating a map for Tantra Online in Unity, would it save you a lot of time just to remake it in Unity ?
Try to re-make tantra online in UNITY , as what master_unknown said.