Skip to content

Releases: valentinps/satisfactorymap

v0.1.8

Choose a tag to compare

@valentinps valentinps released this 28 Jul 19:10

v0.1.8

Update 8 saves open, your tamed doggos are on the map, the search bar finds
layers and not just things, and a bottleneck warning finally shows you which
belt it means.

New

  • Update 8 saves open — experimental. Saves from Update 8 (save version
    42) load and map like 1.0/1.1 ones: the handful of places the file layout
    changed at 1.0 — the save name in the header, the per-level version field,
    the flags on every actor, and the collectables list at the end of the
    persistent level — are now read according to the save's own version.
    Verified on a 6 GB Update 8 save of 5.4 million objects, with the whole
    1.0/1.1 test suite still passing. Two things to know: the versions
    between U8 and 1.0 (43–51) are refused outright rather than guessed at,
    with a message saying so; and an Update 8 save is view-only — the save
    editor only knows how to write 1.0-format records, so it declines to edit
    one rather than hand you a file the game would refuse to load. Everything
    else — the map, search, tooltips, the progression view — works as usual.
  • Tamed Lizard Doggos on the map. A doggo you've tamed is a permanent,
    hand-fed part of your world, so it now gets a pin of its own — the same
    species artwork the spawners use, wearing a heart so it can't be mistaken
    for one, and labelled "Lizard Doggo (Tamed)" in the sidebar and in its
    tooltip. Wild doggos are deliberately not plotted: one only exists in a
    save because you happened to be standing near it when you saved, and it
    despawns the moment you walk away, so a pin would promise a doggo that
    isn't really there. Where the wild ones live is the Spawners layer's job.
  • The search bar finds layers, not just items and buildings. Four new
    kinds of result, each opening the same panel a building does — a count, a
    breakdown, and "Show only this on map":
    • Ore nodes and resource wells. "Iron Ore (Resource Node)" tells you
      how many exist, how many are still untapped, and how they split across
      Pure / Normal / Impure — in the map's own purity colours. Kept clearly
      apart from the ore item of the same name, which is still there too.
    • Creature spawners, by species, with the count of spawn points.
    • Tamed creatures, with how many you have.
    • Conveyor Belts, Conveyor Lifts and Pipelines as whole categories,
      each with a per-tier breakdown — so "am I still running Mk.1 belts
      anywhere?" is one search away. Their rows are scattered across the
      build-menu subcategories, so there was no single toggle for them before.
  • Middle-click hides whatever is under the cursor — the same per-object
    hide the right-click menu offers, in one gesture, for digging a machine out
    from under the roof covering it. "Restore N hidden objects" in the sidebar
    undoes them all.
  • Ctrl+F jumps to the search box, and focusing or clicking it selects
    whatever is already typed, so the next keystroke replaces the old query
    instead of appending to it.

UI fixes

  • Bottleneck warnings now show the whole line. Marking a belt line's slow
    segments used to drop a lone warning pin and leave you to work out which
    belt it meant. The whole run is now traced in amber with its limiting
    segments in red — conveyor lifts included, which are drawn as structures
    rather than belts and are very often the slow link — and each warning pin
    sits at the middle of its segment instead of on the joint it shares with
    its neighbour, so there's no guessing which of two belts is being blamed.
    The altitude filter also widens to cover the line while the markers are up
    (and goes back to where you had it afterwards): the slow belt is routinely
    a floor or two away from the one you were inspecting, and used to be
    filtered out of sight along with the warning itself.
  • Creatures no longer clutter the item search. Hogs, Spitters, Stingers
    and friends were listed among Iron Plate and Screws — 21 entries that are
    animals, not things you can hold, and the only ones with no icon at all.
    Searching "hog" now finds Hog Remains, the Silver Hog Statue, and the hog
    spawners.
  • Every spawner species has a distinct name. Two different Forest Spitter
    variants shared one name, showing as two identical rows in the sidebar with
    no way to tell which was which; species are now named from the same table
    the rest of the map uses, which distinguishes them ("Alpha Red Forest
    Spitter"). A few species read slightly differently as a result.
  • Crude Oil nodes and oil wells are independent layers again. Both were
    filed under the same internal key, so hiding one hid the other, and a
    remembered filter choice for one was silently applied to the other.

Under the hood

  • The spawner-name and item-catalog rules are now pinned by tests: species
    names must be unique and hand-curated, and no creature may reach the item
    search under either of the two names the code knows it by (that check
    immediately caught a Crab Hatcher that had been missed).

Checksums (SHA-256)

210a499b6c94d4dce45fa37d68666de97dfbd2543c7a59eb15a717fec7fd9a69  Satisfactory-Save-Map_0.1.8_x64_en-US.msi
34d6836533c469d4daaa34cc31c0d5795112b93c1aeb50ce4386ff236c70d071  Satisfactory-Save-Map_0.1.8_x64-setup.exe

v0.1.7

Choose a tag to compare

@valentinps valentinps released this 26 Jul 16:28
fcb467d

v0.1.7

Creature spawners on the map, a calmer first load, saves loadable straight
from a URL — and under the hood, the map's world data now regenerates from
the game's own files.

New

  • Creature spawners on the map. A new Spawners category pins every
    creature spawn point on the planet — Hogs, Crab Hatchers, Stingers and
    Spitters as toggleable families, plus Lizard Doggos, Flightless Birbs and
    the Space Giraffe-Tick-Penguin-Whale Thing — about 2,800 pins, each with
    the game's own creature icon. The data comes from the game's level files
    (a save never records which creature a spawner spawns), so it's identical
    on every save.
  • A calmer first load. The world layers — resource nodes, resource
    wells, collectables, spawners, and dropped items — now start hidden, so
    loading a save shows your factory instead of thousands of pins. Switching
    any of them on is remembered like every other filter choice.
  • Load a save from a URL. Append ?url=<address-of-a-save> to the map's
    address and the file downloads straight into your browser (with progress)
    and parses as usual — so a dedicated server's autosave can be shared as a
    plain link. The save never passes through this site's servers; the host
    must allow cross-origin (CORS) requests, and failures say so.
  • Every solid resource node now reads as an ore. The game names only
    some ores with the suffix (Iron Ore, but bare Uranium / Bauxite /
    Limestone / Coal...); the Resource Nodes list now shows Uranium Ore,
    Bauxite Ore, Limestone Ore and friends consistently. Crude Oil and
    Geysers stay as they are.

UI fixes

  • Copying on very large saves no longer crashes the editor. On saves
    above roughly a gigabyte of decompressed data, any copy/paste could die
    with "Edit failed: unreachable" in the browser: growing the save to fit
    the copied objects briefly needed twice the save's memory, blowing the
    browser's 4 GB WebAssembly limit. Small and medium copies now grow the
    save in place (built-in headroom); bigger ones rebuild through a
    compressed snapshot at ~1x memory, so pastes big and small apply
    directly in the session. An edit that genuinely cannot fit under the
    4 GB limit fails up front with a clear message pointing at the desktop
    app — and if the browser dies mid-edit anyway, the editor reloads and
    restores your earlier edits instead of leaving a dead page.
  • Copy a build from one save into another — right in the browser. Copy,
    load the other save (same tab), paste. Copies up to 50,000 objects also go
    through the OS clipboard, so they paste in another browser tab too; bigger
    copies stay inside the tab — mirroring them onto the OS clipboard could
    stall the whole machine — so for those, cross-save means the same-tab flow
    above. Above 150,000 objects the browser refuses the copy outright
    (nothing is copied — a selection that size can't paste reliably inside
    the browser's 4 GB limit) and points at the desktop app, which has no
    such limits.
  • Hypertube entrances are back on the map — and with them, copies of
    daisy-chained builds keep their power wires. Entrances were treated as
    line-only geometry, but an entrance with its default tube shape carries no
    spline in the save, leaving it invisible and unselectable — so wires
    between chained entrances could never travel with a copy. They now render
    as regular powered buildings again.
  • Power lines are selectable — they highlight in box selections and can
    be deleted individually. For move and copy they act as riders: a wire
    travels exactly when both the things it connects travel, so a selected
    wire can never be dragged off a pole or pasted dangling.
  • Pipe bottleneck warnings are now scoped like belt ones. A Mk2 pipe
    feeding two Mk1 pipes through a junction no longer warns — the detector
    follows the pipe line and stops at junctions that actually split or merge
    the flow (junctions used as plain couplings don't cut the line, so a Mk1
    segment inside a Mk2 run is still flagged).
  • Turning a whole sidebar group on or off is now remembered as exactly that:
    group toggles persist at the group level instead of as per-row states.
  • Lift-placed splitters and mergers fold into their base attachment rows
    (the "... on Lift" variants), and Power Lines are one row — searchable —
    instead of two.
  • Brighter, higher-contrast colors for belts/pipes/wires at full zoom-out.
  • Updating the site can no longer leave your browser running the previous
    build's parser: every asset is now content-hash versioned, so a refresh
    always picks up the new code.

Under the hood

  • All static world tables (power slugs, somersloops, mercer spheres, crash
    sites, dropped items, resource-node purity) now regenerate from the
    game's own level data via a one-command pipeline — validated 1:1 against
    the previous tables, and recovering two dropped-item pickups and one
    resource node the old data missed. Extracted the same way: the spawner
    and creature-name/icon tables behind the new Spawners category (all 159
    Lizard Doggo spawns included), plus consumable plants as groundwork.

Checksums (SHA-256)

f1b703662ea3e466d59f58f3419f22b957ebe18922ab21c52e8ad046997e6854  Satisfactory-Save-Map_0.1.7_x64_en-US.msi
1c6bbb2035bf79979c85ecf02b71536646f5a079e4e13da7a4b9ae3ecf6d3f16  Satisfactory-Save-Map_0.1.7_x64-setup.exe

Game data v2

Choose a tag to compare

@valentinps valentinps released this 26 Jul 14:59

Game-data archive for the build script (see build.sh). Adds over game-data-v1:

  • creatureSpawners.json / creatures.json now feed the map's Spawners layer (embedded into the parser).
  • Creature icons under map/static/map/icons/creatures/.
  • The Space Giraffe's display name is the community one ("Space Giraffe-Tick-Penguin-Whale Thing") instead of the in-game meme string.

SHA-256: 9db05102cf5ce375ddbb55d4c47cad07cc536603f490faa716e10ef693d07af6

v0.1.6

Choose a tag to compare

@valentinps valentinps released this 22 Jul 14:48

v0.1.6

A quality-of-life release: modded off-map builds are now reachable, the whole
map can be selected in one keystroke, a loaded save can be unloaded, and the
top bar got straightened out.

New

  • Builds outside the map are now reachable. Some mods let you build past
    the vanilla world border; those saves loaded fine but the map refused to
    pan out to them. The pan limits now grow to fit the save's actual extents
    when it outgrows the map — vanilla saves keep the usual limits, and panning
    still can't wander off into the void.
  • Ctrl+A selects everything on the map — same rules as a box selection
    over the whole world (visible layers only, altitude filter respected), so
    megabase-wide move/copy/delete is one keystroke. On very large saves
    (500k+ objects) it asks for confirmation first. Ctrl+A inside a text field
    still just selects the text.
  • Unload a save without reloading the page. A new "Unload" button next to
    the Save File header clears the map and sidebar and frees the parser's
    memory (useful before opening a second large save). If you have unexported
    edits it asks first.

UI fixes

  • The search bar is now exactly centered in the top bar instead of drifting
    with whatever buttons surround it.
  • The desktop app's update button moved next to the logo, where it no longer
    pushes the search bar off-center when an update is available.

Checksums (SHA-256)

45c779b8860b945845a53945c724131e4f773e8e74a86f13034151feb3566057  Satisfactory-Save-Map_0.1.6_x64_en-US.msi
e141b7580fed0bac56722f5b3738b33392ccef4acc0e62de656d2d9c2f05c503  Satisfactory-Save-Map_0.1.6_x64-setup.exe

v0.1.5

Choose a tag to compare

@valentinps valentinps released this 22 Jul 08:59

v0.1.5

A large maintenance release from a full-codebase review: security hardening,
a much smaller/faster map payload, parser robustness, and a batch of editor
and UI fixes.

Security

  • Dedicated-server fetch now pins the server's TLS certificate the first
    time you connect (trust-on-first-use), and verifies it before sending the
    admin password on every later fetch. A changed certificate is reported and
    requires explicit confirmation before trusting it, instead of silently
    accepting any certificate.
  • The remembered admin password moved to the Windows Credential Manager
    (from plaintext local storage). An existing saved password is migrated
    automatically on first launch.
  • The in-app webview now runs under a strict Content-Security-Policy.

Performance

  • The map payload is ~40% smaller and loads faster, which also cuts peak
    memory when loading large saves (about 1.8 GB less on a 50 MB save).
  • Parser and map-data build are faster and use less memory on big saves.
  • Very large saves (over ~2 GB decompressed) now show a clear "use the
    desktop app" message in the browser instead of failing cryptically — and
    the desktop app loads them.

Robustness

  • Corrupt or truncated save files now fail with a clear error instead of
    crashing.
  • Resource nodes not in the bundled data tables are still shown on the map
    (under their own type name) instead of silently disappearing.

Editor & UI fixes

  • More reliable save editing: stricter internal validation before writing,
    and a fix for a rare edge case when duplicating signs.
  • Isolating a train on the map no longer misplaces its markers.
  • Item/building searches no longer show stale results when you search again
    quickly or load a different save mid-search.
  • Escape now closes one thing at a time (a modal, a placement, a highlight)
    instead of several at once.
  • Altitude filter "Reset" no longer re-applies an old range to the next save.

Checksums (SHA-256)

520829617eb4616f8cac1f2ad561b9c1cffa6010369c087564fd68f143b2833d  Satisfactory-Save-Map_0.1.5_x64_en-US.msi
e99a1800bfeb5566cf4fe2599b9bc540f157380f4ee576320f1d719665da904f  Satisfactory-Save-Map_0.1.5_x64-setup.exe

v0.1.4

Choose a tag to compare

@valentinps valentinps released this 21 Jul 23:44

Satisfactory Save Map 0.1.4

✨ The app now updates itself

This is the last version you'll ever download by hand. From 0.1.4 on, the app checks for new releases on startup — when one exists, an Update button appears in the top bar; one click downloads the cryptographically verified installer and applies it. No more Releases page, no more SmartScreen ceremony on every version.

Fixes

  • Pasting: several bugs in paste placement and the clipboard apply path.
  • Deleting chained belts: removing a belt that's part of a conveyor chain now cuts the line cleanly — the chain actor is removed and every surviving belt keeps its items, matching what dismantling that segment in-game does (details in docs/chained-belt-delete.md).
  • Selection highlight: the blue overlay now rotates with the buildings instead of drawing axis-aligned boxes over rotated ones.

Download (one last time)

  • *-setup.exerecommended: this is the package the built-in updater uses, so starting from it keeps every future update fully silent
  • *.msi — classic Windows Installer package, same app. Note: if you install from the MSI, your FIRST in-app update shows a one-time "uninstall this product?" confirmation while it switches you to the updater's package format — click Yes; it never appears again.

Requires Windows 10/11. The installer is unsigned — Windows shows its standard "unknown publisher" SmartScreen prompt; "More info" → "Run anyway" proceeds (see the v0.1.0 notes for the full explanation). Verify your download with Get-FileHash <file>:

f1609044aba642a8d3b3e3e4b7578d6938e09249ea6efb237d1dd5079a80cb16  Satisfactory-Save-Map_0.1.4_x64_en-US.msi
434509915fa72fe0dd2459a42bc88a986f91daa0a1069a69abe9b664b447ad01  Satisfactory-Save-Map_0.1.4_x64-setup.exe

Something broken? Open an issue — ideally with the save file attached.

v0.1.3 — advanced copy & paste

Choose a tag to compare

@valentinps valentinps released this 21 Jul 20:55

Satisfactory Save Map 0.1.3

✨ Advanced copy & paste

Save editing grows real clipboard workflows:

  • Copy & paste across saves and tabs — copies travel through the system clipboard, so you can copy a factory section in one save, load a different save (even in another tab), and paste it there. In the desktop app, copies too large for any clipboard stay in the app's memory and paste just the same.
  • Precise placement — paste back at the original location or at exact coordinates, with fine offsets, 90° rotation, and the click-to-place ghost preview. Undo works as always.
  • Node re-link — pasted miners and extractors re-attach to the resource node under their new position when the resource type matches, so a copied iron-mining setup dropped onto another iron field just works.

Also in this release

  • Modded-save compatibility: MapProperty values of type BoolProperty now parse (another mod-config map shape found in the wild).

Download

  • *.msi — standard Windows installer (recommended)
  • *-setup.exe — NSIS installer, same app

Requires Windows 10/11. The installer is unsigned — Windows shows its standard "unknown publisher" SmartScreen prompt; "More info" → "Run anyway" proceeds (see the v0.1.0 notes for the full explanation). Verify your download with Get-FileHash <file>:

be82d7e4ff2ba30bb7ddd413bd2d8f1570ca0dc030a1d7f1cc32fc63b301d82a  Satisfactory-Save-Map_0.1.3_x64_en-US.msi
6567670ccde0a7f10b39f67e9946cf5bd77ccef759faa03fe98f4d90f0b2128e  Satisfactory-Save-Map_0.1.3_x64-setup.exe

Something broken? Open an issue — ideally with the save file attached.

v0.1.2 — fetch saves from your dedicated server

Choose a tag to compare

@valentinps valentinps released this 21 Jul 00:20

Satisfactory Save Map 0.1.2

✨ Fetch saves straight from your dedicated server

The desktop app can now pull the newest save directly off a dedicated server, using the official server HTTPS API — the same one the in-game Server Manager talks to. Enter the server address and admin password in the Save File panel, hit Fetch latest save, and the map loads it; no manual file copying.

One firewall note: the server API listens on TCP port 7777 (the game itself uses UDP), so TCP 7777 — or your custom port — must be open. Details, setup, and troubleshooting: docs/server-fetch.md.

The admin password is only stored if you tick "Remember password" (plainly, in the app's local storage — the label says so).

Also in this release

  • Modded-save compatibility: saves containing string-valued mod config maps (MapProperty with StrProperty/NameProperty/EnumProperty values) now parse
  • The web app's Save File panel links here for saves too big for any browser.
  • Interaction benchmark published: at full-factory overview this map never dropped a frame where the incumbent froze for up to 15 s at a time (methodology).

Download

  • *.msi — standard Windows installer (recommended)
  • *-setup.exe — NSIS installer, same app

Requires Windows 10/11. The installer is unsigned — Windows shows its standard "unknown publisher" SmartScreen prompt; "More info" → "Run anyway" proceeds (see the v0.1.0 notes for the full explanation). Verify your download with Get-FileHash <file>:

eb381f5acaafeb3bd1b1f3fd72631c659ac1c33513dd7002dc579015e77316df  Satisfactory-Save-Map_0.1.2_x64_en-US.msi
0c16f248bbe503e62be86272e32c022366936542fe0f01a2086e8d7b428b892d  Satisfactory-Save-Map_0.1.2_x64-setup.exe

Something broken? Open an issue — ideally with the save file attached.

Test saves v1

Choose a tag to compare

@valentinps valentinps released this 22 Jul 00:21

Real-world Satisfactory save files used as the test corpus for the Rust
parser/editor test suite (cargo test -p sav_core), tools/e2e_editor.py,
and CI. Download them into map/uploads/ with py tools/fetch_test_saves.py.

Asset Size Role
All_080726-163150.sav 0.3 MB primary editor-test save (source)
solo_autosave_1.sav 15 MB cross-save paste target
BuildITBIIIIIG_210726-231135.sav 50 MB large-save stress / benchmark save

v0.1.1

Choose a tag to compare

@valentinps valentinps released this 20 Jul 21:17

Satisfactory Save Map 0.1.1

Everything currently live at satisfactorymap.net, packaged for the desktop app. Changes since 0.1.0:

  • App icon — the map gets a proper logo (orange pin), used for the tab icon on the web and the app/installer icon here.
  • No more "Unknown" red dots — HUB props render as real labeled buildings grouped under Special → "The HUB" (the HUB itself now draws its true 14×26 m footprint); ramp railings, railroad switch controls, lift-mounted splitters/mergers, and blueprint storage boxes all land in their proper categories; pure-clutter actors (vehicle path nodes, sign poles, pipeline flow indicators, spawned toilet props) no longer show at all.
  • Sidebar fixes — filter checkboxes no longer desync when loading a second save; group toggles show a mixed state; your filter selection is remembered across sessions.
  • UI polish — labeled Depot and Progression buttons replace the six icon tiles; slimmer save panel with an expandable details section; building search adds locator pins; item search also outlines the buildings holding the item; tooltips follow the map while panning and clear on zoom.
  • License — now AGPL-3.0, with the parser port relicensed from GPL-3.0 by written permission of GreyHak (see NOTICES.md).

Download

  • *.msi — standard Windows installer (recommended)
  • *-setup.exe — NSIS installer, same app

Requires Windows 10/11 (WebView2 preinstalled on 11, fetched automatically on 10). The installer is unsigned — Windows will show its standard "unknown publisher" SmartScreen prompt; "More info" → "Run anyway" proceeds. See the v0.1.0 notes for why, and verify your download against the checksums below (Get-FileHash <file> in PowerShell).

Checksums (SHA-256)

013e0fbc8641464cd4eaa1920a7e80cc1726361afc10b691e7de49a98e763dac  Satisfactory-Save-Map_0.1.1_x64_en-US.msi
c267f5ded5abff7583571d79da081633db22ef71cead4a1aa6519d677ae7166b  Satisfactory-Save-Map_0.1.1_x64-setup.exe

Found a save that doesn't load, or anything else broken? Open an issue — ideally with the save file attached.