Publishing puts a map in the Custom Games gallery, where anyone can find it and play it, and gives it a share link that works without an account.
You need a free account to publish. Everything before that, from building the map to test-playing it, works signed out.
Publishing from The Forge
- Save (
Ctrl+S). Signed in, this saves the map to your account as well as to your browser. - File → Publish to Custom Games…
- In the dialog, pick a Category (Melee / RTS, Tower Defense, Hero Arena, RPG / Adventure, Survival or Custom Rules) and write a Description, up to 2000 characters. The description is what people read in the gallery before they play, so say what the map is and how many players it wants.
- Read the Validation section. It runs the same check the server will run and shows the error and warning counts with the first issues.
- Press Publish. It is disabled while the map has errors, while the
Validation module (
F10) shows blocking problems, while no category is chosen, or while you are signed out. Signed out, the dialog tells you to save first, sign in (in a new tab), then check again.
Publishing saves the map to your account, then publishes it. When it succeeds the dialog shows the share link, a Copy Share Link button, and View on Custom Games.
Publishing also records how many players the map seats, which the gallery shows: its seat count, capped by its maximum players rule, and never more than eight.
Share links
A published map's link is:
https://www.shardsofstone.com/play?communityMap=<id>Anyone with it can play the map straight away, as a guest, with no account. File → Copy Share Link copies it again whenever the open map is published.
Two variations are useful:
- Add
&mod=<id>to play it with a mod hosted on the site (see Mods). - Add
&embed=1for a version that another website can put in an iframe (see Web APIs).
What blocks publishing
The server validates the map again when it receives the publish request, so a
hand-crafted request cannot skip the check. If anything is an error, nothing
is published and the dialog (or the API, as a 422 response) says why.
Every error below catches something that fails silently at runtime. None of them is a matter of taste.
| Rule | What it prevents |
|---|---|
| Too few spawn points: one per seat in the roster or, with no roster, the map's minimum players (two if it sets none) | Seats with nowhere to start |
| A spawn point outside the map | A seat that cannot be placed |
| Two spawn points on one tile | Two seats sharing a base |
| A one-seat map with standard victory on | The match declaring victory on tick 1 |
| No gold mines, on a map that keeps standard victory and starting units | Every faction's opening needs gold. A map that turns standard victory off or starting units off runs its own economy, so it only gets a warning |
| A roster entry for seat 8, the creep owner, as a player or computer seat | The game ignores that entry, so its race, team, resources and AI settings never apply |
| A duplicate authored id | A trigger finds one of the two entities; the other is unreachable |
A mercenary camp in buildings | The camp spawns as an invulnerable prop with no stock |
| A spawner with an empty squad | It ticks forever and produces nothing |
| An unknown unit or building id | The entity never spawns and nothing says so |
| An entity outside the map | Same |
| Two overlapping footprints | One of them fails to spawn and vanishes |
| Any trigger script error | An unknown node, field, variable, region or id; see Triggers |
| Any data override error | A missing patch, a broken reference, an unknown sprite key; see Data Overrides |
| A hill victory with no monument | A control-point match with nothing to capture |
| A map over the size limits | A map too big to send to every player. The limits: 4 MB of map file, 8 to 1024 tiles a side, 20,000 placed entities, 64 spawn points and 2,000 trigger regions |
Two more rules are checked in The Forge only, not by the server: the height rules in Terrain & Height and the lava rules in Lava & Biomes. The editor will not let you publish past them, but a map uploaded some other way is not checked for them.
The mercenary camp rule. Mercenary stock is attached by one specific spawn
path, and the mercCamps field is what routes a camp through it. A camp
written into buildings arrives as an inert, invulnerable prop. It has the
right model, sits in the right place, and cannot be interacted with. Nothing in
the game reports it, which is why it has its own rule.
Overlapping footprints. Two entities claiming the same tile means one of them fails placement at load and is dropped. The map you published and the map that loads would be different maps, and the difference would be silent.
What warns but does not block
| Rule | Why it is only a warning |
|---|---|
| Uneven resources between seats | Deliberate asymmetry is a real design |
| No ramp off a seat's starting plateau | An air-only or naval start is a real design |
| More than one monument | Legal, and occasionally intended |
| A monument on terrain that does not match its art | It works; it just looks odd |
| A map that runs its own economy has no gold mines, no seat starts with gold and no trigger gives any | The lobby's starting resources may still be enough; check that players can afford anything |
| A spawn point, unit or building on terrain it cannot use (a start in deep water, a barracks on rock, a ship on land) | The game moves it to the nearest ground that fits, or leaves it out, which a quick sketch may not mind |
A rules.allowedBuildings id that is not a building | Nothing breaks, but nobody can build it. The warning suggests the id you probably meant |
| A biome name the game does not have | The map still loads, drawn with fallback colours and textures. The warning suggests the closest biome |
| Loading-screen art the game will not show | Players see the default art instead. Loading art must be an image the game already ships |
| A data override field the definition does not have | The override still installs and the unknown field is ignored. The warning names the closest real field |
| A map file over 1 MB | It still plays, but it is slow to download and every multiplayer lobby sends it to every player |
Warnings are worth reading. Most of them are mistakes most of the time.
Updating a published map
Open it in The Forge and Save. The published map is updated in place: same id, same share link, and players get the new version the next time they load it. The server refuses the update if the new version has errors; your browser draft is still saved, and the status bar says what is wrong.
Saving does not refresh the player count the gallery shows. If you change how many players the map seats, publish it again with File → Publish to Custom Games….
To edit a published map from another browser, open My Maps in the map browser, select the map and choose Edit in The Forge. (Edit Copy starts an unlinked copy instead.)
There is no version history. If you want the previous version to stay playable, use File → Save As Copy before you change it, and publish the copy under a new name. See Compatibility & Versioning.
Unpublishing
File → Unpublish (or Unpublish in My Maps) removes the map from Custom Games after a confirmation. It stays in My Maps, and you can publish it again. Share links stop working for other people while it is unpublished.
After you publish
- Ratings. Signed-in players can rate other people's maps from one to five stars in the map browser (Custom Games in the game menu), and the gallery shows the average.
- Plays. Starting a single-player match on the map counts as a play, at most once an hour for each player (a signed-in account, or a guest's network address). Opening the map's details is not a play, and matches started from a multiplayer lobby are not counted.
- Reports. Signed-in players can report a map as offensive, spam, broken, a copyright problem, cheating, or other. A map with three open reports is hidden automatically until a moderator reviews it. Use Report map in the map's details in the map browser, or under its card on the Custom Games page. You can report a map once, and you can't report your own. Reporting is also available through the API.
A short pre-publish list
- Validation clean, warnings read and dismissed on purpose.
- Tested from a seat other than seat 0.
- Every wave, objective and cutscene fired at least once (the Trigger Debug panel shows it).
- Debug text messages removed.
- Starting resources and fog back to what you actually want.
saveCodeSaltset, if the map issues save codes.- The name and description say what the map is.
Next: Mods.