4.0.4 • Published 9 months ago

wc3maptranslator v4.0.4

Weekly downloads
23
License
MIT
Repository
github
Last release
9 months ago

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!

TranslationExample

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

TypeJson → WarWar → JsonFile
Terrainchecktimeswar3map.w3e
Unitscheckcheckwar3mapUnits.doo
Doodadscheckcheckwar3map.doo
Regionscheckcheckwar3map.w3r
Camerascheckcheckwar3map.w3c
Sounds (definitions)checkcheckwar3map.w3s

Object data files

TypeJson → WarWar → JsonFile
Units - Objectscheckcheckwar3map.w3u
Items - Objectscheckcheckwar3map.w3t
Abilities - Objectscheckcheckwar3map.w3a
Destructables - Objectscheckcheckwar3map.w3b
Doodads - Objectscheckcheckwar3map.w3d
Upgrades - Objectscheckcheckwar3map.w3q
Buffs - Objectscheckcheckwar3map.w3h

Trigger files

TypeJson → WarWar → JsonFile
LUAtimestimeswar3map.lua
JASStimestimeswar3map.j
Stringscheckcheckwar3map.wts

Map files

TypeJson → WarWar → JsonFile
Info Filecheckcheckwar3map.w3i
Imported Filescheckcheckwar3map.imp
Pathingtimestimeswar3map.wpm
Shadow maptimestimeswar3map.shd

Not relevant

minus-solid Custom Text Trigger File (war3map.wct)
minus-solid Trigger Names File (war3map.wtg)
minus-solid Menu Minimap (war3map.mmp)
minus-solid Minimap Image (war3mapMap.blp)
minus-solid Minimap Image (war3mapMap.b00
minus-solid Minimap Image (war3mapMap.tga)
minus-solid 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.

🔗 WC3MapTranslator format

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!

🔗 WC3MapSpecification

Contributing

We encourage contributions! Generally, the process of making a change is: 1. Fork this repo 2. Develop your changes on a new branch 3. 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).

4.0.4

9 months ago

4.0.1

9 months ago

4.0.3

9 months ago

4.0.2

9 months ago

4.0.0

3 years ago

3.0.3

4 years ago

3.0.2

4 years ago

3.0.1

4 years ago

3.0.0

4 years ago

2.0.0

5 years ago

1.1.0

6 years ago

1.0.0

6 years ago

0.5.5

6 years ago

0.5.4

7 years ago

0.5.3

7 years ago

0.5.2

7 years ago

0.5.1

7 years ago

0.5.0

7 years ago

0.4.0

7 years ago

0.3.0

7 years ago

0.2.0

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago