Shard Survivors is a set of maps. Each zone's field, what stands in it, its
monsters and bosses and its lobby come from one setting in the map file,
rules.survivors, and everything below works on any map that sets it. A
player who opens your map gets the whole run: the lobby with its six tabs, the
countdown, the horde, the level-up hands, the chests, the mini-bosses and the
final boss, the results, and the rewards their account keeps between runs.
Start from a Shard Survivors zone
Download Thornwood Vale (every zone is
at /maps/survivors-<zone>.play.json: thornwood, frostfang,
ashen_reach, gloomfen, barrowdeep and wreckers_coast) and open it in the
Forge with File → Import Map JSON…. Its run comes with it: move the
copses, change the monsters or the clock, then save it as your own.
To start from a blank map instead, open the Players module in the Forge. Under Rules there is a Horde run panel. Switch it on and the map fights Thornwood Vale's monsters with the lobby open, the heroes starting at the middle. Switching the run on also turns standard victory, the starting base, the AI's armies, fog and building off, because a run has none of them; turn any back on in Rules if your map wants it.
Switch a run on: rules.survivors
{
"rules": {
"survivors": {
"zone": "frostfang",
"difficulty": "normal",
"lobby": true,
"cx": 48,
"cy": 48,
"bounds": 42,
"obstacles": [
{ "x": 30, "y": 41, "r": 2.2 },
{ "x": 61, "y": 58, "r": 1.4 }
]
},
"standardVictory": false,
"noStartingUnits": true,
"disableAi": true,
"fog": "off"
}
}Every seat on the map is a hero, up to four. People's seats are the players; a seat nobody takes stands empty, and a person who leaves mid-run is played by the game for the rest of it.
| Field | What it does |
|---|---|
zone | The monsters, mini-bosses and final boss the run fights: one of the six zones above, or your own in zoneDef |
difficulty | normal, heroic or mythic: monsters' health and damage, and the rewards. In the lobby the host can change it |
hour | The light the run is fought in: day, dusk or night (default: the zone's own; a map's own zone, day). The sky, sun and shade follow it; the map's terrain and props are what you painted |
lobby | true (the default): the map opens in its lobby, every person picks a hero there and the host starts the run. false: the run starts as the map loads, each seat on the hero heroes names |
heroes | Seat to hero, for seats whose hero the map fixes ({ "0": "vaelindra" }) |
roster | The heroes the lobby offers, by id (default: all of them). A hero still opens by the player's account |
cx, cy | Where the heroes start, in tiles (default: the middle of the map) |
bounds | How far from the start the run may go, in tiles. The horde comes in from beyond it |
obstacles | Circles (x, y, r, in tiles) that heroes and monsters walk round. Paint the trees, rocks and props they stand for: the run walks round the circles, not the paint |
seed | The run's seed, for a run that plays out the same every time (default: a fresh one each match) |
Your own monsters and bosses: zoneDef
A map can fight its own zone. In the Forge, press one of Start from under This map's own zone to copy a zone's monsters in, then reshape them in the text box.
{
"zone": "drowned_quarter",
"zoneDef": {
"id": "drowned_quarter",
"name": "The Drowned Quarter",
"subtitle": "High Tide",
"tiers": [
[{ "unit": "creep_reef_crab", "hp": 10, "damage": 3, "speed": 2.1 }],
[{ "unit": "creep_shellback_tidecaller", "hp": 30, "damage": 5, "speed": 1.8, "kind": "ranged" }]
],
"bosses": [
{ "name": "The Bell-Ringer", "unit": "creep_brinebeard_anchorbreaker", "hp": 1400, "damage": 14, "speed": 1.9, "scale": 1.8, "moves": ["slam", "quake"] }
],
"final": { "name": "Mother of Tides", "title": "She Who Floods", "unit": "creep_boss_brinebeard_captain", "hp": 7000, "damage": 20, "speed": 2, "scale": 1.6, "moves": ["volley", "summon", "nova"], "xp": 400 }
}
}tiersare the monsters, weakest first, one to eight tiers of one to eight each. The run walks up the tiers as its clock runs.- Each monster names the
unitit is drawn as (any unit with a model), itshpanddamageon Normal at the first tier, itsspeedin tiles a second, and optionally itsradius,scale, the experience it is worth (xp) and how it fights (kind):meleewalks into you,rangedkeeps its distance and shoots,chargerrushes when near. bossescome one everybossEverySeconds(up to twelve), andfinalcomes at the end of the clock: killing it wins the run. Each boss has aname, atitleand itsmovesin turn:slam,charge,nova,summon,volleyandquake, each with a warning on the ground first, everymoveEveryseconds.
The run's numbers: tuning
{
"tuning": { "runSeconds": 420, "bossEverySeconds": 90, "maxAlive": 180, "enemyHealth": 1.2, "xpRate": 1.5 }
}| Field | Default | What it does |
|---|---|---|
runSeconds | 600 | Seconds until the final boss comes (60 to 3600) |
bossEverySeconds | 120 | Seconds between the mini-bosses |
maxAlive | 240 | The most monsters standing at once (10 to 320) |
enemyHealth, enemyDamage | 1 | Multipliers on every monster, before the difficulty's |
xpRate | 1 | A multiplier on the experience every shard gives |
goldRate | 1 | A multiplier on the gold a run earns |
handSeconds | 20 | Seconds a level-up hand waits in a party before it picks for the slow |
In the Forge these are the Horde run panel's The run's numbers.
An endless world: world
A run can have no edge at all. Set world and the land goes on whichever way
the party walks: it is made in 32-tile chunks from a seed as they walk, and a
chunk they walk back to is the same chunk, for every player in the party. The
land wears your zone's look: its copses and rocks to walk round, its loose
props, worn earth, and the stone circle where the heroes start.
{
"world": { "seed": 2024, "density": 7, "scatter": 40, "leash": 30 }
}| Field | Default | What it does |
|---|---|---|
seed | the zone's own | The same seed makes the same land |
density | 5 | Copses and rocks to walk round in each chunk (0 to 12) |
scatter | 30 | Loose small props in each chunk, walked through (0 to 80) |
leash | 36 | In a party, how far a hero may walk from the middle of the party, in tiles (12 to 40); alone there is no leash |
The map itself is the first window of the world: 224 tiles square, the
heroes in its middle. Start from an endless example rather than a blank
map: every zone has one at /maps/survivors-<zone>-endless.play.json. With a
world, bounds only holds the lobby and obstacles is ignored, because the
chunks make their own. In the Forge this is the Horde run panel's An
endless world.
Your own lobby: the zones it lists
When someone presses Play on your published run, it loads your map and opens
the lobby inside it, alone or online. With no menu the lobby offers your map
alone. With one in rules.survivors, it can carry your title, a tagline, a
logo, and up to 12 zones for the host to move the party between:
{
"menu": {
"title": "The Long Night",
"tagline": "Four zones, one dawn",
"zones": [
{ "map": "community:3f1c2e9a-1b2c-4d5e-8f90-1234567890ab", "name": "The Drowned Quarter", "blurb": "High tide, rising" },
{ "map": "/maps/survivors-gloomfen.play.json", "name": "Gloomfen", "blurb": "The bog remembers" }
]
}
}Each zone is a map with its own rules.survivors, named by community:<id>
for a published map (the id is in its share link) or /maps/<file>.json for
one of the game's own. Publish the zones first, then the map that lists them.
Choosing a zone in the lobby loads its map, and online the whole party moves
on together. The logo is an image the game ships (/assets/...) or one you
uploaded; anything else shows Shard Survivors'. Set "menu": false for a map
that should launch exactly as you wrote it. In the Forge it is the Horde run
panel's Setup screen section. Shard Survivors itself is this lobby over
its six bundled zones.
Anyone can open your run with a link: /play?survivors=setup&map=community:<id>.
How it plays
- A hero's basic attack and every spell they hold cast themselves. The player chooses where to stand and what to take.
- Every kill drops a shard of experience. A level-up deals a hand of three cards (a new spell, a spell's next rank, or a blessing), with rerolls, banishes and skips to spend.
- Chests from bosses and elites give several upgrades at once. A downed hero in a party gets back up when an ally stands by them.
- The account keeps what a run earns between runs: gold, talents, gear, perks, achievements and the heroes it opens.
The full reference, every hero, spell and zone, is in the game's own mode
document, docs/modes/SHARD_SURVIVORS.md.