Skip to content
ItsSynDrexPublic

About

Browser map designer and save-file importer for RimWorld — design a map, verify it, play the exact map you designed.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

RimMap — RimWorld Map Creator + Save Importer

Design the colony map you actually want — a valley ringed by mountains, a river that forks past your base, a cave system to build inside — then play that exact map in RimWorld.

A 275x275 map: mountains, an open valley, a river forking through it, the colony site marked in amber

The RimMap designer: controls on the left, the live map in the middle, readouts, warnings and the import panel on the right

A real map from this tool, and the designer it was made in. Amber square is where your colonists land; amber dots are steam geysers.

Then unzip it and double-click Start RimMap (Windows).bat. Needs Python — full instructions below.

RimMap is an unofficial fan-made tool, not affiliated with or endorsed by Ludeon Studios. RimWorld is a trademark of Ludeon Studios.


What it does

RimWorld chooses your map for you. You can reroll the world tile, but you can't say "put the mountains north, run a river south of my base, give me a 60-tile clearing with three geysers in it, and hollow out some caves."

RimMap lets you draw that map in your browser, then writes it into a save file: terrain, rock, ore veins, roofs, caves, geysers, plants, wildlife and fog.

It never edits the save you point it at. It reads that save and writes a new one beside it. See Is this safe? — that question has a real answer, not a reassuring sentence.


Requirements

  • Windows. This release is Windows-only — see Other systems.
  • RimWorld (1.4–1.6). Vanilla or modded; mods are fine, see Mods.
  • Python 3.9 or newer — a two-minute install if you don't have it.
  • No other downloads. RimMap uses only Python's standard library — nothing to pip install, no accounts, no internet connection required after download.

Download and run

RimMap runs in your web browser. You don't install anything or open a website — you start the program and it opens the designer for you.

You need Python installed first (version 3.9 or newer) — it's what actually runs RimMap. If you don't have it, that's a two-minute, one-time install: do that before Step 1.

Step 1 — Download the files

Click the green < > Code button near the top of this page, then Download ZIP.

Step 2 — Unzip it

Right-click the downloaded ZIP → Extract All, and put the folder somewhere easy like your Desktop. Extract it first — don't run anything from inside the ZIP.

Step 3 — Double-click Start RimMap (Windows).bat

It's in the folder you just unzipped.

Step 4 — The designer opens in your browser

A small black window appears, and your web browser opens by itself with the map designer. That browser page is RimMap — there's nothing else to open or load. Start dragging the sliders and designing.

Keep that little black window open while you work. Closing it turns RimMap off.

Everything runs on your own machine — the page is served from your own computer (127.0.0.1), your saves never leave it, and it works with no internet connection.

If it doesn't start, it's almost always one of these:

  • You didn't extract the ZIP. Double-clicking a ZIP lets you look inside without unpacking it. Right-click it → Extract All first.
  • You moved the .bat on its own. It needs the rimmap folder sitting next to it — keep the unzipped folder together.
  • Python isn't installed, or was installed without ticking Add python.exe to PATH (fix).

No Python yet? (one-time — Windows usually doesn't come with it)
  1. Go to python.org/downloads and download the installer.
  2. On the very first screen, tick "Add python.exe to PATH" before you click Install. Missing that box is the single most common reason the launcher can't find Python afterwards.
  3. Finish installing, then double-click Start RimMap (Windows).bat.

Nothing else to install — RimMap needs only Python itself.

Mac or Linux?

This release ships and supports Windows only — not because the tool can't run elsewhere, but because it hasn't been tested elsewhere, and a tool that edits save files shouldn't claim support it hasn't earned.

The Python underneath is cross-platform and RimMap detects Mac, Linux, Steam Deck and WSL save folders already. If you're comfortable at a terminal you can run it directly from the unzipped folder:

python3 -m rimmap

That does exactly what the Windows launcher does. It's untested on those systems, so treat it as unsupported — but if you try it, a report either way is genuinely useful.


Make your first map

Step 1 — design it

The designer opens with a sensible temperate valley. Change what you like:

  • Mountains and Caves for the landform; Heaviest rock toward aims the range at a compass direction.
  • Open field size is your clearing. Click anywhere on the map to move the colony there.
  • River: width, how many creeks fork off it, which way it runs.
  • Biome, Stone types, Ore veins, Trees, Wildlife, and more.

The map redraws as you drag. When you like it, note the map # badge — a short code like #5cae03 that identifies this exact map.

Step 2 — make a save to import into (a "donor")

RimMap rebuilds the map inside an existing save, so you need one to work from. This is a one-time job: one donor save serves every future map, as long as the map size, scenario and biome stay the same.

In RimWorld, start a new colony and make these three choices deliberately:

  1. Pick the scenario you actually want to play. Your colonists, their gear and your starting resources all come from the donor — RimMap rebuilds the land, it doesn't create people. Whoever you land with is who you'll play. (Scenarios that arrive by drop pod work fine, but Standing arrival gives the tidiest result.)
  2. Set the map size to match your design. On the landing screen open Advanced → map size. The designer's default is 275×275, and the sizes must match exactly or the import will refuse to run.
  3. Land in the biome you designed for. RimMap paints the ground, but weather, wildlife and what grows there come from the world tile, and no save edit can change that. A desert map on a boreal tile will look like desert and behave like boreal forest.

Then save the moment you land — before building, mining, or even unpausing — and call it something like fresh.

Why the instant save matters. RimMap has to move anything that ends up buried in your new mountains or river. On a fresh landing that's a handful of items. On a played colony it's your walls, stockpiles and furniture, all shuffled to wherever there's room. It works, but the result is a mess. A just-landed save gives the cleanest possible map.

Your donor is never modified — RimMap reads it and writes a new save beside it — so you can reuse the same fresh save for every map you ever design.

Step 3 — import

Back in the designer, pick your save from the list and press Import. RimMap rebuilds the map and writes a new save called fresh-custom.

When it finishes it shows a fingerprint. If it matches the map # from step 1, the map you're about to play is provably the map you designed.

Load fresh-custom in RimWorld. Done.

Prefer the command line? (or the browser can't reach your saves)

Copy the import code from the designer — a single line like rimmap4,thrumbo-742,275,90,50,... — and run:

py -3 -m rimmap import --save "C:\Users\<you>\AppData\LocalLow\Ludeon Studios\RimWorld by Ludeon Studios\Saves\fresh.rws" --recipe "PASTE_CODE_HERE"

Run it from the folder you unzipped. To list your saves and their map sizes: py -3 -m rimmap saves.


Is this safe?

Short version: the save you choose is opened read-only and never written to. The new map is written to a different file next to it.

The longer answer, because your colony deserves one:

  • Your donor save is never modified. RimMap reads it and writes <name>-custom.rws alongside.
  • The output is backed up before it's replaced. If you imported a map, played it, and RimWorld saved back over fresh-custom.rws, re-importing keeps your played colony as fresh-custom.rws.<timestamp>.bak. The five most recent backups are kept. They don't end in .rws, so RimWorld won't list them — rename one to .rws to get it back.
  • Writes are atomic. The new save is written to a temporary file and only swapped in once it's complete, so a crash or a full disk leaves your previous file intact rather than a half-written one.
  • In-progress colonies are guarded. Picking a save with hundreds of hours on it asks for confirmation first, in both the app and the command line.
  • inspect and --dry-run write nothing at all — not even a backup.

See docs/SAFETY.md for exactly what changes inside a save.


What you can design

Landform Mountain amount, cave systems, overhead (thick-roof) rock, which compass direction the range leans toward, open field size
Water River on/off, main river width, 0–3 creek forks, creek width, river direction
Ground Biome (10, from temperate forest to ice sheet), rich soil, marsh
Rock & resources Three stone types from the five vanilla stones, steam geyser count, ore vein richness
Life Tree density, ground cover, starting wildlife, clear predators
Site Map size 200–350, any seed, colony position by clicking the map
Structures Keep or wipe ancient dangers and ruins — kept ones stay sealed and unexplored

Everything is deterministic: the same import code always rebuilds the same map, so a code is a complete, shareable description of a design.

A few biomes

Caves Desert Ice sheet
A mountainous map riddled with cave systems A desert map with sand, sparse rock and a river An ice sheet map, white ground with dark rock

Render any code yourself without touching a save:

py -3 -m rimmap preview --recipe "PASTE_CODE_HERE" --out my-map.png

How it works

RimMap is two generators that must agree exactly: one in JavaScript so you can see the map as you design it, and one in Python that rebuilds it at import time. If they ever disagreed, the map you played wouldn't be the map you drew.

So they're line-for-line transcriptions of each other, and the build runs both — the browser's real generator under Node, the Python port in process — and compares every single cell. Recorded fingerprints also lock in every released import-code version, so a code you shared today keeps rebuilding the same map forever.

That's what the map # badge is: a fingerprint of the whole map. When the importer prints the same one, that agreement has been checked for your map specifically, not just in principle.


Mods

Modded saves work. RimMap reads the mod list, and validates that it recognises the terrain and stone in your save before writing anything — if too much is unrecognised it stops rather than guess.

Modded terrain and stone get replaced by the vanilla equivalents you chose in the designer. Modded animals and plants already on the map are left alone.

Two things RimMap deliberately will not do: create animals or colonists (a pawn is a large web of cross-referenced state, and a malformed one breaks a save), and change what spawns over time — that comes from the biome, so it needs a mod, not a save edit.


Troubleshooting

"map size mismatch" — your save and your design are different sizes. Either change the size in the designer, or start a colony at the right size (landing screen → Advanced → map size).

The designer can't find my saves — click Add folder and paste the path. It's normally:

C:\Users\<you>\AppData\LocalLow\Ludeon Studios\RimWorld by Ludeon Studios\Saves

AppData is hidden by default: paste the path into Explorer's address bar rather than trying to click your way there.

The fingerprint doesn't match — you probably edited the design after copying the code. Copy it again.

I can't find the caves I asked for — that's correct: caves are sealed inside the mountains and stay unexplored until you mine into them, exactly like vanilla. They're visible in the designer's preview.

Something else — docs/TROUBLESHOOTING.md, or open an issue. Please include the output of:

py -3 -m rimmap inspect --save "/path/to/your/save.rws"

That has everything needed to diagnose a problem. Please don't attach your .rws — it's large and personal, and the inspect output is enough.


Command line

Every command and flag
py -3 -m rimmap                    open the designer (same as the launcher)
py -3 -m rimmap gui                same, with options
py -3 -m rimmap import             stamp an import code into a save
py -3 -m rimmap inspect            report what's in a save; writes nothing
py -3 -m rimmap saves              find your saves and show which can be donors
py -3 -m rimmap preview            render an import code to a PNG
py -3 -m rimmap verify             prove the two generators agree
py -3 -m rimmap selftest           run the internal round-trip tests

Useful import flags:

Flag Meaning
--save FILE the save to read (never modified)
--recipe CODE the import code from the designer
--out FILE write somewhere other than <save>-custom.rws
--dry-run do everything except write
--stones A,B,C override the code's stone types (auto = use the tile's own)
--no-ores skip ore veins
--leave-items don't gather starting supplies into the field
--raze-ruins wipe ancient dangers and ruins instead of preserving them

Run any command with --help for the full list.


Contributing

Bug reports and ideas are welcome. Before changing anything in the generator, please read CONTRIBUTING.md — it leads with the one rule that matters: a generator change must land in both languages in the same commit and pass the parity check. A well-meant "optimise the noise loop" pull request is the single most likely way this project ships someone a wrong map.

Licence

MIT — see LICENSE. Do what you like with it.

About

Browser map designer and save-file importer for RimWorld — design a map, verify it, play the exact map you designed.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages