/WC3MapSpecification

The specification of WC3 .w3x files as a living document

MIT LicenseMIT

WC3MapSpecification

The specification of WC3 .w3x files as a living document

File versions

WarCraft III 1.32.9.16589 Pre-reforged
Terrain 11 11
Units† 8_11 8_11
Doodads† 8_11 8_11
Regions 5 5
Cameras 0 0
Sounds 3 1
Objects 2 2
Strings†† 1 1
Info 31 25
Imports 1 1
GameConfiguration 1 1

† Units and Doodads files seem to have a version and subversion. Or it's possible the "11" integer is not part of the version and has just never changed or is unused by WC3.
†† Strings file does not have a version number; we have assigned v1

Files

  • Terrain (war3map.w3e)
  • Units (war3mapUnits.doo)
  • Doodads (war3map.doo)
  • Regions (war3map.w3r)
  • Cameras (war3map.w3c)
  • Sounds (war3map.w3s)
  • Objects (war3map.w3u war3map.w3t war3map.w3a war3map.w3b war3map.w3d war3map.w3q war3map.w3h)
  • Strings (war3map.wts)
  • Info (war3map.w3i)
  • Imports (war3map.imp)
  • GameConfiguration (.wgc)

Types

  • byte
  • short - 2 bytes, Little-Endian
  • int - 4 bytes, Little-Endian (usually unsigned)
  • float - IEEE 32-bit floating point, Little-Endian
  • char(X) - 1-byte ASCII character repeated X times
  • string - a stream of characters, usually UTF-8, zero-terminated Expect strings that are used in-game to support TRIGSTR_ placeholders.
  • string_max(X) - same as above but with a hard limit of X bytes, including \0
    • Generally, file/folder path strings are limited to 260 bytes (see Windows' MAX_PATH).
  • unknown(X) - treat as X bytes of binary data