Skip to content

Repository files navigation

Biome Vision for Kerbal Space Program

See where the biomes are — outlined and named, on whichever planet you're looking at.

KSP 1.12.x Latest release Licence: MIT

Not on CKAN yet. The listing has been submitted and is awaiting review. Until it's merged, grab it from Releases — see Manual install.

Biomes decide what your science is worth, and the game gives you no way to see them. You get a name in the experiment results dialog after you've already landed, and that's it. Biome Vision puts one button on the toolbar that draws the boundaries straight onto the planet, with every region named, so you can pick a landing site before you burn.

Biome Vision toolbar icon


What it does

In map view and the tracking station — a shell wrapped around the focused planet showing every biome: translucent colour fill, crisp boundary lines, and each region labelled with its name. Names fade out as they pass the limb and step aside when they'd overlap, so a busy planet stays readable.

In flight — the same boundaries projected onto the actual terrain around your craft, following the ground rather than floating above it, plus a readout of the biome you're currently over.

Everything is toggleable from the panel behind the toolbar button: outlines, fill, names, opacity, line width, text size, and how much detail to spend memory on.


Install

CKAN (recommended)

Not available through CKAN yet — the listing is awaiting review by the CKAN team. Use the manual install below in the meantime. Once it lands, this is all you'll need:

Search for Biome Vision and install. CKAN offers ToolbarController alongside it — take it if you want the Blizzy toolbar option; the mod works without it.

Manual

  1. Download the latest release zip from Releases.
  2. Drag the BiomeVision folder into your KSP GameData/ folder, so you end up with Kerbal Space Program/GameData/BiomeVision/.
  3. Install ToolbarController if you want the Blizzy toolbar option. Without it the button still appears on the stock launcher — you just lose the choice.

Requirements

KSP 1.12.x (built and verified against 1.12.5)
Required none
Recommended ToolbarController — adds Blizzy toolbar support and lets you choose which toolbar
Optional Blizzy's Toolbar, if you prefer it to the stock launcher

No Module Manager, no Kopernicus, no patches. It reads the biome data KSP already has in memory.


Works with your planet packs

Biome Vision never mentions a planet by name. It asks the live CelestialBody for its biome map, radius and terrain at the moment you look at it, so anything that produces a body with biomes is supported the day it's installed:

  • Stock and Making History / Breaking Ground
  • Outer Planets Mod, Kcalbeloh, JNSQ, Beyond Home, Galileo's Planet Pack
  • Real Solar System and RSS Expansions — including their much larger biome maps
  • Bennu and other single-body Kopernicus additions
  • Sigma Dimensions, Rescale and anything else that changes body sizes at load

A body with no biome map — a gas giant, a star — is simply skipped, with the reason shown in the panel.

It also stays out of the way of the mods that draw the same planets:

Mod How they interact
SCANsat Independent. SCANsat maps what you've scanned; this shows the map data directly.
Parallax Continued Untouched. The overlay is a separate shell above the terrain.
Scatterer / EVE / Volumetric Clouds The overlay renders in the transparent queue above them.
Deferred Unaffected — the overlay is forward-rendered like any transparent surface.
Kopernicus Required by the packs above, not by this. Biome maps are read after Kopernicus has loaded them.

How it works

The interesting part is that KSP's biome maps are stored in a projection nobody documents, and getting it wrong puts every boundary in the wrong place.

CBAttributeMapSO.GetAtt maps a latitude and longitude to a texel like this:

lon -= PI/2;  lon = wrap(lon, 0, 2*PI);
v = lat / PI + 0.5;
u = 1 - lon / (2*PI);

Two things fall out of that. v = 0 is the south pole, not the north. And longitude decreases as u increases, with u = 0 sitting at 90° east — the map is mirrored relative to the layout you'd expect. Both are reproduced exactly in MapProjection.cs, which is the single place in the codebase that knows about it.

From there:

  1. Sample the body's biome map into an index grid, resolving each texel's colour to a biome with the same rules GetAtt uses — so the overlay agrees with the game's own science results rather than approximating them.
  2. Composite fill and boundary lines into one RGBA texture, and wrap it around a shell that follows the body's terrain. One draw call, one material; line thickness is a number rather than a mesh. The shell has to hug the ground — float it and every boundary shifts with the viewing angle, which is glaring on a small body where relief is a large fraction of the radius.
  3. Flood-fill the grid into contiguous patches and anchor each label at the member cell nearest that patch's spherical centroid — for a crescent or a ring the centroid itself lands outside the region, and a name floating over the wrong biome is worse than no name.

All of it is time-sliced across frames against a 4 ms budget, so a 2048×1024 analysis fades in over a second or two instead of freezing the game.

There's more detail in docs/TECHNICAL.md.


Building

You need a KSP install (for the reference assemblies) and Windows. No SDK, no NuGet, no Visual Studio — the source targets C# 5 so the compiler shipped with the .NET Framework is enough.

pwsh -File Tools/Build.ps1 -Install

-Install also copies the result into that install's GameData. Point it elsewhere with -KspDir "D:\Games\KSP", or set KSP_DIR.

The toolbar icons are generated, not committed as opaque art:

pwsh -File Tools/Generate-Icons.ps1 -Preview

Licence

MIT — see LICENSE.

About

A Kerbal Space Program toolbar button that draws biome outlines and names onto the planet you are looking at. Works with any Kopernicus planet pack.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages