Skip to content

Download file

d07RiV edited this page Mar 6, 2016 · 2 revisions

Download file contains the list of files that need to be downloaded in order to install the game. The only files not on this list (that end up being included in the CASC storage) are the [encoding](Encoding file), [install](Install file) and the download file itself.

To download this file, one has to get the file's content hash from the build-config file, use the [encoding](Encoding file) to find the corresponding CDN hash, and plug it into the data URL:

http://blzddist1-a.akamaihd.net/tpr/d3/data/04/a1/04a1fc384eab31bd3c0a58d55ce9b4e1

File format

Download files have the following structure:

  • Header
  • Entries
  • Tags

Data structures

  • Header (11 bytes)
Offset Type Name Description
0x00 char[2] Signature "DL"
0x02 char[3] Unknown ???
0x05 uint32 [BE] NumEntries Number of download entries in the file
0x09 uint16 [BE] NumTags Number of tags in the file
  • Entry (26 bytes)
Offset Type Name Description
0x00 char[16] Hash File CDN hash
0x10 char[10] Unknown ???
  • Tag (variable size)
Offset Type Name Description
0x00 string Name Tag name as a zero terminated string
0x?? uint16 [BE] Type Tag type
0x?? char[] Mask Bit mask of length ceil(NumEntries / 8); bit order is backwards (highest bit of the first byte corresponds to the first entry)

Build tags

Every build has a number of tags associated with it, that can be used to select the files required for download. For example, Windows clients do not need Mac files, and vice versa. Most common tags include platform and language.

Tags for all installed files can be found in the .build.info file as the Tags variable, for example:

Windows EU? enUS speech?:Windows EU? enUS text?

To get the list of required files, we need to combine (AND) masks for Windows, EU, enUS and speech tags (EU and speech tags are optional, and they are actually not present in the download file for Diablo III), then do the same for Windows+EU+enUS+text, and then add (OR) the two resulting masks together.

Clone this wiki locally