wc3maptranslator
v4.0.4
Published
Module to translate between `war3map` and `json` formats for WarCraft III .w3x maps
Downloads
201
Maintainers
Readme
Overview
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!
Install
npm install wc3maptranslator
Requires Node ≥ 14
Usage
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);
File Support
World files
| 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 |
Object data files
| Type | Json → War | War → Json | File | |-------------------------|:-----------:|:-----------:|---------------| | Units - Objects | | | war3map.w3u | | Items - Objects | | | war3map.w3t | | Abilities - Objects | | | war3map.w3a | | Destructables - Objects | | | war3map.w3b | | Doodads - Objects | | | war3map.w3d | | Upgrades - Objects | | | war3map.w3q | | Buffs - Objects | | | war3map.w3h |
Trigger files
| Type | Json → War | War → Json | File | |-------------------------|:-----------:|:-----------:|---------------| | LUA | | | war3map.lua | | JASS | | | war3map.j | | Strings | | | war3map.wts |
Map files
| Type | Json → War | War → Json | File | |-------------------------|:-----------:|:-----------:|---------------| | Info File | | | war3map.w3i | | Imported Files | | | war3map.imp | | Pathing | | | war3map.wpm | | Shadow map | | | war3map.shd |
Not relevant
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)
Specification
WC3MapTranslator format
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.
war3map format
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!
Contributing
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.
Special Thanks
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).