WC3MapTranslator
Translate war3map
⇄ json
formats for WarCraft III .w3x maps
Overview · Install · Usage · File Support · Specification · Contributing · Special Thanks
WC3MapTranslator is a TypeScript module to convert between JSON and WarCraft III (.w3x) war3map
formats. This makes the map data readable and easily modifiable, a perfect format for storing WC3 maps in Git repositories and inspecting diffs!
npm install wc3maptranslator
Requires Node ≥ 14
import {
CamerasTranslator,
DoodadsTranslator,
ImportsTranslator,
InfoTranslator,
ObjectsTranslator,
RegionsTranslator,
SoundsTranslator,
StringsTranslator,
TerrainTranslator,
UnitsTranslator
} from 'wc3maptranslator';
// E.g. let's create a camera for the map
const cameras = [
{
"target": {
"x": -319.01,
"y": -90.18
},
"offsetZ": 0,
"rotation": 90,
"aoa": 304,
"distance": 2657.34,
"roll": 5,
"fov": 70,
"farClipping": 5000,
"name": "MyCamera1"
}
]
// Now translate the JSON into the WarCraft III format
// All translators have: `.jsonToWar` and `.warToJson` functions
const translatedResult = CamerasTranslator.jsonToWar(cameras);
// `translatedResult` contains a `buffer` which can be saved to disk
// This war3map.w3c file can now be placed inside a .w3x via an MPQ
// editor, and you should now see a camera in the Camera Palette!
fs.writeFileSync('war3map.w3c', translatedResult.buffer);
Type | Json → War | War → Json | File |
---|---|---|---|
Terrain | war3map.w3e | ||
Units | war3mapUnits.doo | ||
Doodads | war3map.doo | ||
Regions | war3map.w3r | ||
Cameras | war3map.w3c | ||
Sounds (definitions) | war3map.w3s |
Type | Json → War | War → Json | File |
---|---|---|---|
LUA | war3map.lua | ||
JASS | war3map.j | ||
Strings | war3map.wts |
Type | Json → War | War → Json | File |
---|---|---|---|
Info File | war3map.w3i | ||
Imported Files | war3map.imp | ||
Pathing | war3map.wpm | ||
Shadow map | war3map.shd |
Custom Text Trigger File (war3map.wct)
Trigger Names File (war3map.wtg)
Menu Minimap (war3map.mmp)
Minimap Image (war3mapMap.blp)
Minimap Image (war3mapMap.b00
Minimap Image (war3mapMap.tga)
Map Preview Image (war3mapPreview.tga)
We have a detailed explaining how to format a map in JSON. It explains everything from the high-level map object, all the way down to creating individual units, tiles, or custom objects.
The underlying WarCraft map files (e.g. war3map.doo) have been documented in a separate repository. If you are curious about how a .w3x file is composed, this is the place to learn!
We encourage contributions! Generally, the process of making a change is:
- Fork this repo
- Develop your changes on a new branch
- Submit a pull request to
dev
Your code should:
- run (your code needs to work, of course)
- include tests (write unit tests to demonstrate your code works under different conditions)
- be linted (run
npm run lint
and follow the project's coding standards) - pass CI (we enforce: ESLint, unit tests pass, code coverage)
A code review is required on your PR to be accepted into dev
. A project member will get back to you within one week. If you haven't heard from someone regarding your PR, feel free to ping @chiefofgxbxl.
We owe a lot of thanks to Chocobo on TheHelper for the detailed documentation of the files found in a .w3x archive. Two tutorials are here (1) and here (2).