New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

wc3maptranslator

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

wc3maptranslator

Module to translate between `war3map` and `json` formats for WarCraft III .w3x maps

latest
Source
npmnpm
Version
5.0.0
Version published
Weekly downloads
58
-4.92%
Maintainers
1
Weekly downloads
 
Created
Source

WC3MapTranslator
Translate war3mapjson formats for WarCraft III .w3x maps

Quality

Known Vulnerabilities

Overview · Install · Usage · File Support · Specification · Contributing · Special Thanks

Overview

WC3MapTranslator is a TypeScript module and CLI 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

# Global install recommended for CLI usage; for local install drop the -g flag
npm install -g wc3maptranslator

Requires Node ≥ 24

Usage (CLI)

# wc3maptranslator <input> [output]

# Usage (individual files, same directory)
wc3maptranslator terrain.json  # outputs war3map.w3e in CWD
wc3maptranslator war3map.w3i  # outputs info.json in CWD

# Usage (translate an entire folder)
wc3maptranslator ./path/to/war3mapFiles --toJson
wc3maptranslator ./path/to/jsonFiles --toWar

# See list of available translators and standard file names
wc3maptranslator --list

# See help
wc3maptranslator --help

# Useful flags
--force / -f Overwrite existing files (by default, translation is skipped if it would overwrite an existing file)
--silent / -s Silence success output messages (errors will still be shown)

Usage (programmatic)

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
Terrainwar3map.w3e
Unitswar3mapUnits.doo
Doodadswar3map.doo
Regionswar3map.w3r
Cameraswar3map.w3c

Object data files

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

Map files

TypeJson → WarWar → JsonFile
Info Filewar3map.w3i
Imported Fileswar3map.imp
Sounds (definitions)war3map.w3s
Strings (triggers)war3map.wts
Pathingwar3map.wpm
Shadow mapwar3map.shd

Not relevant

➖ Triggers (war3map.j, war3map.lua)
➖ 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.

🔗 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:

  • Fork this repo
  • Develop your changes on a new branch
  • Submit a pull request to master

Your code should:

  • run (your code needs to work, of course)
  • include tests (run npm run test and include 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 master. 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.

Your pull request may update package.json to include your username under the contributors field.

If you are updating the CLI, remember to run npm link during local development prior to testing out changes, so the wc3maptranslator command reflects your latest changes.

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).

Keywords

wc3

FAQs

Package last updated on 21 Dec 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts