Watch_Dogs Modding/Toolkit WIP
Watch Dogs Research
So not to long ago watch_dogs came out, the game runs pretty poorly due to its unoptimized nature and Ubisoft did state they would release a patch for optimization however I’ve already beaten the game so I don’t think It really concerns me anymore. That being said I’d recommend it, has a nice single-player campaign.
So lets talk about watch_dogs modding/reverse engineering, firstly to give a little back-story info the engine it runs on titled the Disrupt engine it’s an engine derived and created from the previous Dunia Engine (Farcry3) by Ubisoft Montreal. Some aspects are the same as Dunia which helped in reversing the game assets however there are significant changes. Dunia was reversed originaly by others, one person I know who has worked on this engine’s structure or I should say has worked on reversing Farcry3 is Rick. You can find his research and info here and on Xentax. Watch_Dogs uses a sort of bizarre way of storing its assets, they are stored inside these .fat/dat archives heres what the structure looks like.
//--------------------------------------
// File: common.fat
// Author: EKey/Cra0kalo
// Revision: 1
// Purpose: WatchDogs
// ByteFormat - Little Endian
//--------------------------------------
struct
{
DWORD dwID; // 3TAF
DWORD dwVersion; // Always = 8
DWORD dwUnknown;
DWORD dwTotalFiles;
}FATHeader;
struct
{
DWORD dwHash;
DWORD dwSize;
DWORD dwZSize;
DWORD dwOffset;
}FATEntry;
At a first glance it looks pretty straight forward however the FATEntry structure needs to be modified a bit to work. Some pseudo code:
pEntry.dwSize := (pEntry.dwSize shr 3) and $1FFFFFFF;
pEntry.dwZSize := (pEntry.dwZSize shr 0) and $1FFFFFFF;
pEntry.dwOffset := (pEntry.dwOffset shl 3) or (pEntry.dwOffset shr 29) and 7;
Alright the rest is easy, the game uses Xmem compression which most xbox360 games use. Just download the library dll and use its export functions.
How about the geometry/textures ???!
Lets talk about textures first, very easy and I think the same as farcry3. They are stored in xbt files which are basically containers for DDS(DirectDraw Surface) textures.
Heres two quick tools I created to convert/view them
XBT2DDS.exe
Basically exports the dds inside the xbt container.
Download:
xbt2dds.zip Source CodeXBTView.exe
Extracts the dds to your temp folder and opens it with the Nvidia WTV, once the WTV window is closed the program disposes the extracted texture and WTV from temp.
Download:
xbtview.zipAs for geometry I’ll talk about it in another post heres a video to tease you for now 😀: