scmJS is a map editor for StarCraft and Brood War, written in TypeScript and modelled on StarEdit, SCMDraft 2 and StarForge. It runs in a browser tab or as a desktop app.
Plugins add to it. The plugins page lists the current ones, and you install them in the editor from Plugins ▸ Browse Plugins….
The editor is in English and Korean. The Korean translation was machine-generated, and we are looking for a native speaker to review it. The editor picks the language from your browser, and you can change it in Preferences.
The main site is scmjs.dev.
| Release | Link |
|---|---|
| Web editor (stable) | https://scmjs.dev/editor/ |
| Web editor (nightly) | https://scmjs.dev/nightly/ |
| Desktop app | Windows, Mac, Linux |
The editor does not include any of Blizzard's files. It needs StarDat.mpq and BrooDat.mpq
from StarCraft to draw tiles, units and doodads. The first time you open it, it offers to
download them from Blizzard, or you can give it your own copies. The desktop app also looks
for them in the usual StarCraft install folders.
Maps and game data stay on your computer. Nothing is uploaded unless you use the scmjs.dev or scmscx.com plugins.
A plugin is a JavaScript module that reads and edits the open map through the plugin API. To start:
- plugin-hello-world is a working example to copy.
- The plugin guide explains how plugins load and what they can do.
- The API reference lists every call.
While you work on it, the editor can load your plugin straight from your git repository. When it is ready for others, submit it to the registry.
Open a pull request against scm-js. These help:
- Map files, the format reference.
- Game data, what the editor reads from the game's archives.
- Development, how to build and run it.
| Repository | Description |
|---|---|
| scm-js | the editor itself, and the map maker's guide |
| plugin-api | @scm-js/plugin-api, the type definitions a plugin builds against |
| registry | the list behind Plugins ▸ Browse Plugins… |
| site | scmjs.dev, the landing page |
| docs | docs.scmjs.dev, built from the editor's own documents |
| nightly | last night's build of main, served at scmjs.dev/nightly |
| Plugin | Description |
|---|---|
| scm-scx | search scmscx.com and open a map straight from it |
| repair | checks a map as it opens and offers to rebuild what is missing or broken |
| walkability | where ground units can actually go, and how wide the chokes are |
| image-to-terrain | paints a picture into terrain |
| paint | lines, shapes, text and sprays made of units, sprites, doodads, terrain or fog |
| trigscript | a TypeScript-like language, and its editor, compiled to triggers |
| stamp-library | named terrain pieces kept across maps and shared as JSON |
| trigedit | SCMDraft 2's text trigger editor |
| scmjs-dev | a scmjs.dev account: maps kept online, shared editing, and the AI assistant |
| melee-wizard | symmetric start locations and mineral lines for a ladder map |
| section-explorer | an annotated hex editor over the map's own sections |
| trigger-map | the map's triggers as a graph: who sets and who reads each switch, counter and location |
| timelapse | records the map as you build it and exports the recording as a GIF or video |
| aftermath | plays a replay back over its map: heat maps, build orders, APM |
| magenta | a trigger editor where each trigger reads as a sentence, with Remastered EUD conditions and actions |
| scm-sim | lets other plugins use the game engine behind scmjs.dev/play, and adds Tools ▸ Test Map in Browser |
| api-playground | try the plugin API in a panel without writing a plugin |
| hello-world | the smallest plugin there is, to copy |
MIT. StarCraft and Brood War are trademarks of Blizzard Entertainment. This project is not affiliated with Blizzard and does not include any of the game's data.
ATTRIBUTION.md credits the algorithms and libraries the editor uses.