Maps and files

A folder you can read, one file you can send

While you work, a map is a folder of plain files: map.toml for the settings, text and compact binary files for terrain and objects, assets/, scripts/, shaders/. You can put it under git, diff the scripts, back it up with any tool and open any file in any editor. When you share it, Export packs everything into one encrypted .a4m file that the engine plays directly.

Warcraft III maps are .w3x MPQ archives: one file, easy to send and hard to keep in version control. Newer versions of the game can open a map as a folder too. Most files in it are the game's own binary formats, though, which only specialised tools read, and nothing migrates them when the game changes.

Never lose work

  • Atomic writes: a file is written beside the old one and swapped in, so a crash or a power cut leaves the old file whole.
  • Autosave a second after every change; no Save command to forget.
  • Crash save: unsaved changes are written, and the next start tells you.
  • History with a jump to any point, and an Activity log of every notice, kept in the map.
  • Local versions of a map are prepared in the file layer and come to the editor later.

Formats that grow up safely

Every map records the format number and the editor version that saved it. A newer W4 opens an older map by running one migration step per format, saves it in the current format and tells you what it filled in. A map from a newer W4 is refused with a clear message instead of being misread. Any change that an older program would misread bumps the format and comes with a migration and a test on a real old file. The aim is that a map you make today opens in ten years.

Imports that think

Two different textures with the same name? Both are kept, one under a fingerprint name, and the models are rewired. Rename a texture or move a model? Everything that names it is rewritten in one History entry. In Warcraft III's import manager these cases overwrite a file or break a path.

Open formats

TOML for settings, the usual model and texture formats, standard Go, WESL for shaders. You do not need W4 to open any of it, and the scripting API reference is generated from the source.