Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
SatelliteMap
Zoom in on the map and see the world itself: real relief and shores, forest, player-made paths and fields, buildings, ruins and boss altars, drawn top-down from world data.
By Qua8ion
| Date uploaded | a day ago |
| Version | 0.2.0 |
| Download link | Qua8ion-SatelliteMap-0.2.0.zip |
| Downloads | 502 |
| Dependency string | Qua8ion-SatelliteMap-0.2.0 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2350ValheimModding-Jotunn
Jötunn (/ˈjɔːtʊn/, 'giant'), the Valheim Library was created with the goal of making the lives of mod developers easier. It enables you to create mods for Valheim using an abstracted API so you can focus on the actual content creation.
Preferred version: 2.30.1README
SatelliteMap
Zoom in on the map and see the world itself instead of a blur: real relief and shorelines, forest, the paths and fields players have made, buildings, ruins, dungeon entrances and boss altars. Everything is drawn top-down from the data of the world, so your base looks like your base, and the road you paved with the hoe is on the map.
What it does
- Nothing changes until you zoom in. Zoomed out you see the usual game map. When about 3 km or less fits into the map window, the detailed picture fades in on the explored part of the map. The closer you zoom, the finer it gets: 2 m, 1 m and finally half a metre per pixel.
- Only explored land is detailed. The fog of war works as before; the picture never shows what your map does not know yet. Shared exploration from a cartography table counts when the shared map is shown.
- The picture is alive. Cut the forest, build a house, lay a road: the map follows. While the map is open, the visible part is re-checked every few minutes. (A map mod can ask for the opposite: a map that shows the land as it was when it was charted, see "Snapshots" below.)
- Icons, marks, pings and map controls are untouched. The picture lies under them.
- No cameras, no screenshots. The relief and the water are computed by the same world generator the game uses, down to the metre. Trees, rocks, building pieces and world locations are drawn from a baked library of their top-down views (about 1100 objects of the game). Lighting and shadows are computed from heights, so a gable roof looks like a gable roof.
Sacrificial stones, burial chambers, tower ruins and boss altars are drawn where they stand, at their own size and rotation, not as symbols laid on top of the map. Shorelines, rivers, the snow line and the forest thinning out as it climbs all come from the world itself.
Multiplayer
The client knows only what is near the player; the rest of the world lives on the server. So the mod has a small server part: the client asks for descriptions of the zones it needs (what stands where, how the ground was painted and levelled), the server answers with a compact packet (about half a kilobyte per 64x64 m zone of forest). Zones come from the middle of the screen outwards; when the client checks them again later, it sends fingerprints and the server replies "unchanged" in a few bytes instead of sending them again.
- Install it on the server and on every client that wants the picture. Clients without the mod just see the usual map; nothing is enforced.
- Without the mod on the server the picture still works, but shows only relief, water and shores: no buildings, paths or forest. The log says so once.
- Single player and self-hosted games need nothing else.
Snapshots
A hand-drawn map should not know about the house somebody built yesterday. For map mods that want this (ParchmentMap does), whoever runs the world — the dedicated server, the host, or your single-player game — can remember what a zone looked like at a given moment:
- When a player charts a zone, the server writes down its description and answers with a snapshot number. The number changes only if the zone has changed since the last snapshot, so untouched forest costs one record no matter how often it is walked.
- The map keeps the numbers, the server keeps the descriptions:
<save folder>/satellitemap/<world>.<world id>.zones, next toworlds_local. It only grows when charted places change. Back it up together with the world. If the file is lost, maps fall back to the nearest older snapshot or to the live world, and heal as places are charted again. - A snapshot never changes, so the client asks for it once and never re-checks it.
- The plain game map is not affected: it stays alive as described above.
Settings
BepInEx/config/qua8ion.valheim.satellitemap.cfg
| Section | Setting | Default | Meaning |
|---|---|---|---|
| Rules | DetailLevel |
3 |
How detailed the picture is. 0: the plain game map only. 1: a sketch, 2 m per pixel: relief, water, paths, fields, buildings, ruins, boss altars. 2: also the forest and large rocks, 1 m per pixel. 3: everything down to bushes, half a metre per pixel. On a dedicated server the server's value applies to everyone. |
| General | Enabled |
true |
Your own switch for the detailed picture. |
| Debug | DumpMapTiles |
false |
Save every drawn piece of the map as PNG into BepInEx/cache/SatelliteMap/tiles and log the timings. |
| Debug | ServerSelfTest |
empty | x,z,radius: a server describes the zones around that point after the world is loaded and writes the packet to BepInEx/cache/SatelliteMap/selftest.bin, then runs the same zones through the request path a client would use, takes snapshots of them, asks them back by number, and logs the result. For checking the server part without a client. |
For other mods
SatelliteMap.SatelliteMapApi (find it by reflection, no build-time dependency needed):
AddDetailLimit(Func<int> provider): limit the detail level (0-3, or -1 for "no opinion right now"). The lowest of the config value and all limits applies.NotifyExploredChanged(): tell the mod that the explored part of the map was changed bypassing the game's own methods (or that the snapshot numbers below have changed).Survey(int[] zoneXs, int[] zoneYs, Action<int[], int[], int[]> done): the player is charting these zones;donereceives the zones and their snapshot numbers. There may be no answer at all (no mod on the server, or older than 0.2.0).SetZoneRevisionProvider(Func<int, int, int> provider): which snapshot to draw for zone (x, y).0: not charted, draw the live zone;-1: no opinion right now.
The ParchmentMap mod (a craftable map you hold in your hand) uses all of them: the detailed picture appears on the drawn part of the parchment, the level of detail is decided by the parchment, and the parchment shows the land as it was when you charted it: changes appear only after you walk there again and visit a cartography table.
Notes
- Building pieces from other mods are drawn as plain boxes of the right size and colour. Everything from the base game has its real shape.
- Dungeon interiors, creatures, items, ships, carts and everything else that moves are never drawn.
- The small corner map is not detailed, only the big one.
- Made for Valheim 1.0.15. The library of top-down views is baked from the game's assets; after a big game update new pieces are drawn as boxes until the library is re-baked.
Русский
При приближении карты вместо размытой картинки виден сам мир: настоящий рельеф и берега, лес, протоптанные тропы и поля, постройки, руины, входы в подземелья и алтари боссов. Всё рисуется видом сверху по данным мира: база выглядит как ваша база, а мощёная дорога есть на карте. Подробно показывается только разведанная часть, значки и метки остаются как были. Для построек и леса вдали нужна серверная часть мода (в одиночной игре ничего не нужно); без неё рисуются только рельеф и вода. Подробность задаётся настройкой DetailLevel (0–3). Обычная карта игры живая: построили дом — он появился на карте. Для карт, которые ведут от руки (мод ParchmentMap), сервер умеет запоминать снимки зон: карта показывает местность такой, какой её обошли, а не какая она сейчас. Снимки лежат в <папка сохранений>/satellitemap/<мир>.<id мира>.zones — в бэкап вместе с миром.
CHANGELOG
Changelog
0.2.0
Snapshots: a map can show the land as it was when it was charted, not as it is now. Nothing changes for the plain game map, it stays alive.
- Whoever runs the world (dedicated server, host, single player) remembers what a zone looked like when a player charted it and hands out a snapshot number. A new number appears only when the zone has changed since the last snapshot. Snapshots live in
<save folder>/satellitemap/<world>.<world id>.zones; back this file up together with the world. - New for other mods:
SatelliteMapApi.Survey(chart zones, get snapshot numbers) andSetZoneRevisionProvider(which snapshot to draw). ParchmentMap 0.3.0 uses them: changes show up on the parchment only after you walk there again and visit a cartography table. - Snapshots never change, so the client fetches each one once and never re-checks it.
- Works with older versions on the other side: an older server simply keeps sending the live world, an older client keeps getting it.
ServerSelfTestalso takes snapshots of the tested zones and asks them back by number.
0.1.6
For big, well-explored maps. Nothing changes in how the picture looks up close.
- Fixed: with the map zoomed far out over a fully explored area, one screen needs more zone descriptions than the memory limit of 0.1.5 allowed, so the client kept asking the server for the same zones over and over while the map was open. What the screen needs right now is never dropped any more.
- Zones arrive from the middle of the screen outwards, and zones of tiles that scrolled off the screen are no longer fetched.
- Re-checking zones costs almost nothing: the client sends fingerprints of what it already has and the server answers "unchanged" instead of sending the zone again (121 zones: 198 bytes instead of 113 KB). Works with an older server or client too, just without the saving.
- A fourth tile size, 4 m per pixel, for the far end of the zoom: a screen takes about thirty tiles instead of a hundred, and on wide monitors the picture reaches the corners.
- The server's 4 ms per frame is now shared by all players who opened the map at the same moment.
- If the server stopped answering (overloaded, or the mod was added later), the client asks again once a minute and buildings, paths and forest come back without re-entering the world.
0.1.5
- The server spreads a big map request over several frames (4 ms per frame), so describing a hundred zones with a large base in them does not make the game stutter for the players.
- A damaged packet from the network is rejected cleanly instead of failing half-way.
- The client keeps at most 6000 zone descriptions in memory; in a very long session with a big map the oldest ones are dropped.
0.1.4
- A building piece of another mod is now measured by the piece itself. Parts sitting far above it, like a placement ghost, no longer blow the box up to several metres.
0.1.3
- Fixed brown squares all over the meadows when PlantEverything is installed. That mod makes berry bushes, mushrooms, dandelions, stones and branches plantable by giving them a building-piece component, and SatelliteMap took every one of them for a building from another mod. Now only real building pieces of other mods are drawn as boxes.
- Berry bushes are drawn as bushes.
- The server sends about a quarter fewer objects in such worlds.
0.1.2
- Page fix: the pictures added in 0.1.1 pointed at a host most people cannot reach, so they are gone from the page.
0.1.1
- Pictures on the mod page: a base, the detail levels side by side, landmarks and the world. Nothing else changed.
0.1.0
- First release. Zoom in on the big map and the explored part shows the world itself: relief, water and shores computed by the game's own world generator, forest, rocks, player-made paths, fields and paved roads, buildings, ruins, dungeon entrances and boss altars.
- Three levels of detail (2 m, 1 m and half a metre per pixel), chosen by the zoom and limited by the
DetailLevelsetting. - Server part that describes the world to clients; without it only relief and water are drawn.
- A small interface for other mods to limit the level of detail and to report changes of the explored area.