scmJS docs

Checking, testing and saving

Before a map is played, it can be checked for common mistakes, tried in the game, and saved in the form you want to release.

Check Map#

Check Map on a new map: eight players and no start locations yet

Tools ▸ Check Map looks for what the game would refuse or silently drop: start locations that do not match the player table, the unit limit (1700), off-map units, a missing or moved Anywhere, triggers pointing at unused locations or strings past the end of the table, unit and player values the game does not have, AI scripts it does not ship, Play WAV actions with no file in the archive, switches tested but never set, and the file's own health — missing sections, player types where StarEdit's copy disagrees with the game's, the isometric record. A map with triggers is a scenario, and gets the scenario checks too: a human player no trigger ever gives Victory or Defeat (in a scenario nobody wins or loses unless a trigger says so), a missing Set Mission Objectives, and — when hyper triggers are present — a Wait in another preserved trigger, which stalls that player's whole trigger queue. Double-click an issue to go to it. The same check runs inside the Save dialog.

Test Map#

The Test Map dialog

Tools ▸ Test Map (Ctrl+F5) hands the map to the game. Neither StarCraft build opens a map from the outside, so the editor writes it into a scmJS folder under the game's Maps folder, where Single Player ▸ Custom Game lists it. The desktop app finds the installation (or takes a folder you pick) and starts the game as well; in Chrome and Edge the map goes into a folder you pick once, and other browsers download it.

Saving#

Ctrl+S writes the map back where it came from. In Chrome, Edge and the desktop app the editor keeps a handle to the file it opened, so Save writes in place once the browser has asked for permission. Firefox and Safari give the editor a file's contents but no way to write it back, so there every save is a download, and the notice at the bottom right says so. Save As (Ctrl+Shift+S) and Save Copy As open the Save dialog; a copy is written without the open map changing its name or file.

The Save dialog

The Save dialog asks for a file name, a format and what to keep. Everything else is folded away underneath and can be left alone:

If Check Map finds problems, the dialog says how many beside a button that opens it; the map saves either way.

The options confirmed here are what Ctrl+S reuses for that map from then on.

A save that writes over a file keeps what it replaced. The desktop app copies the old file to a .bak beside it first (Lagoon.scx to Lagoon.scx.bak, replacing an older .bak), however the map was opened: File ▸ Open, Open Recent, a drop onto the window or a double-click. If the .bak cannot be written (a read-only folder, say), the save still goes through, a notice says why, and the old file goes to Previous Versions instead. A browser cannot put a file beside another, so there the version replaced is kept in the browser's storage, the last three of each file name, and File ▸ Previous Versions… lists them: Open puts one in its own tab with "(previous)" added to its name, and Save As writes it out as it was. A download replaces nothing, so Firefox and Safari have nothing to keep. Preferences ▸ General ▸ Saving turns this off.

A plugin that compiles something into the map, as the eudplib plugin does for scripts that need Remastered, does it while the file is written. The file you save is the one the game plays, and it carries the map as you see it in the editor inside, which is what comes back when you open it again. A notice shows while the build runs, with a button to save without waiting for it. If the build fails, the map is still saved and the notice says what went wrong; the file then lacks the built part until a later save succeeds. Test Map builds the same way and stops on a failure instead.

Save to scmjs.dev…, under File and under Account, keeps a copy of the map on your scmjs.dev account as a numbered revision with a note — a backup with a history, and the way to reach the same map from another machine. It does not change where Ctrl+S writes. See Keeping maps on scmjs.dev.

Recovery copies#

While a map has unsaved changes, the editor keeps a copy of it in the browser's storage (the app's own storage in the desktop app): every two minutes, and whenever the editor goes to the background — another tab, the window minimised. The copy is removed as soon as the map is saved or closed, so a copy only survives when the editor closed with work unsaved: a crash, a closed tab, a power cut.

At the next start the Recover Maps dialog lists what was left, with the map's name, its file, its size and when it was copied. Restore opens the map in its own tab with its changes unsaved, under its old file name, so Ctrl+S writes back to the same file (after the browser asks again for permission). Later keeps the copies for the next start, and File ▸ Recover Maps… lists them at any time. Maps still open in another tab or window are never listed there.

Quitting the desktop app and answering Don't Save removes the copies, since that was the answer. A copy only covers changes up to its time, and it lives in this browser: it is not a backup of the file, and clearing the site's data removes it. Preferences ▸ General ▸ Recovery turns the copies off or changes how often they are made.

Export an image#

The Export Image dialog

File ▸ Export ▸ Image renders the whole map to a PNG, with one dial that decides what the picture is: at 32 pixels per tile it is the full game art, at 8 or 16 the same smaller, at 4 and 2 the mean tile colours with units as minimap dots, and at 1 pixel per tile it is the game's minimap. Units, locations, fog and the grid are each a tick.

To show how a map was made rather than how it ended up, the Timelapse plugin (Plugins ▸ Browse Plugins…) records the map one change at a time and exports the recording as a GIF or a WebM video; see Plugins.

Tools ▸ Statistics counts what the map holds — units per player, resources, doodads, triggers, strings — and Ctrl+F finds a unit, location, sprite, string or trigger by name.

scmJS 0.6.2 + main@dd79a77 · Generated from the repository. The source is under the MIT license, which does not cover what ATTRIBUTION.md lists. StarCraft and Brood War are trademarks of Blizzard Entertainment; this project ships none of their data.