You are viewing a potentially older version of this package. View all versions.
Qua8ion-SatelliteMap-0.3.0 icon

SatelliteMap

The map and the minimap show the world itself at any zoom instead of the game's map picture: 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.3.0
Download link Qua8ion-SatelliteMap-0.3.0.zip
Downloads 785
Dependency string Qua8ion-SatelliteMap-0.3.0

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2350 icon
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.2350
ValheimModding-Jotunn-2.30.1 icon
ValheimModding-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.1

README

SatelliteMap

The map shows the world itself: 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. The mod draws the whole map, the big one and the small corner one, at any zoom: the game's own map picture is never shown.

What it does

  • One picture at every zoom. Up close the map gets as fine as half a metre per pixel; zoomed out it goes all the way to the whole world on one screen. From 8 m per pixel and coarser only relief, water and shores are drawn: buildings and trees are smaller than a pixel there anyway.
  • Unexplored land is a clean sheet. 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 corner minimap too. It is drawn the same way, around you.
  • No empty gaps while loading. While the detailed pieces wait for the server, a quickly drawn relief lies under them.
  • 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 to worlds_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.
  • A map without a map mod 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: relief and water only, 2 m per pixel. 1: a sketch, 2 m per pixel: also 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. Zoomed far out every level shows relief and water only. The game's own map picture is not shown at any level. On a dedicated server the server's value applies to everyone.
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, where 0 is relief and water only, 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; done receives 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.
  • If drawing the map ever fails, the mod says so in the log and the game's own map picture is shown until you re-enter the world.
  • 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.

Русский

Карту целиком рисует мод — и большую, и мини-карту в углу, при любом приближении; картинки карты игры не видно вовсе. Вместо неё виден сам мир: настоящий рельеф и берега, лес, протоптанные тропы и поля, постройки, руины, входы в подземелья и алтари боссов. Всё рисуется видом сверху по данным мира: база выглядит как ваша база, а мощёная дорога есть на карте. Неразведанное — чистый лист, значки и метки остаются как были. Издали (от 8 м на пиксель) — только рельеф, вода и берега, вплоть до всего мира на экране. Для построек и леса вдали нужна серверная часть мода (в одиночной игре ничего не нужно); без неё рисуются только рельеф и вода. Подробность задаётся настройкой DetailLevel (0–3; 0 — только рельеф и вода). Обычная карта игры живая: построили дом — он появился на карте. Для карт, которые ведут от руки (мод ParchmentMap), сервер умеет запоминать снимки зон: карта показывает местность такой, какой её обошли, а не какая она сейчас. Снимки лежат в <папка сохранений>/satellitemap/<мир>.<id мира>.zones — в бэкап вместе с миром.

CHANGELOG

Changelog

0.3.0

The whole map is drawn by the mod now: the game's own map picture is never shown.

  • Zoomed out, the picture no longer fades into the game's map. Three more tile sizes (8, 16 and 32 m per pixel) cover every zoom, up to the whole world on one screen. That far out only relief, water and shores are drawn, straight from the world generator, without asking the server.
  • Unexplored land is a clean sheet instead of the game's fog.
  • While the detailed pieces wait for the server, a quickly drawn relief lies under them, so explored land never shows up empty. Zooming out, the next coarser picture is already there.
  • The small corner map is drawn the same way.
  • DetailLevel = 0 now means relief and water only, not the plain game map.
  • The General / Enabled switch is gone: there is no game map to switch back to.

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) and SetZoneRevisionProvider (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.
  • ServerSelfTest also 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 DetailLevel setting.
  • 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.