Your ships come back dirty. Exhaust scorches whatever it's pointed at, re-entry chars whatever met the air, and the marks stay put.
⏳ Not on CKAN yet. The listing has been submitted and is awaiting review. Until it's merged, grab it from Releases — see Manual install.
A KSP ship looks exactly as clean after a Mun return as it did on the pad. Stage an upper stage a metre above a fuel tank and nothing happens to the tank. Bring a capsule through a 2,400 m/s re-entry and it comes out factory fresh.
Burn Marks fixes that. Marks are generated at the moment they happen, from what is actually going on — where the plume is pointed, how hot the skin got, which way the ship was facing — and then they stay on the ship for good.
Engine exhaust scorches what it hits. Every firing engine casts a cone of rays out of its nozzles. Whatever they land on picks up soot, scaled by how hard the engine is pushing, how far the exhaust had to travel, and how square-on it struck. Fire a Skipper past a fuel tank and you get a scorch mark on that tank, where the plume actually went. Engine bells get sooty on the inside too, and RCS thrusters scorch what they are pointed at.
Re-entry chars the windward face, and stops. How dark it gets depends on how hard the re-entry is — the intensity comes from KSP's own skin-temperature simulation, so a shallow aerobrake barely tints a capsule while a steep 3,000 m/s plunge blackens it.
What a hotter re-entry does not do is reach further around the part. This is modelled on what returned hardware actually looks like: a heat shield comes back evenly charcoal right out to its rim, the shoulder ends it, and the backshell behind is visibly scorched but nowhere near as dark — and it looks like that whether the vehicle came home from orbit or from the Moon. So severity controls depth, and the shape stays put. Anything shielded — inside a fairing, behind a cargo bay door — stays clean entirely.
The marks behave like decals. They live in the part's own 3D space, not in its texture, so they follow the surface exactly. A mark that lands across a join between two parts continues across it with no seam and no join, because both parts are independently sampling the same mark and arrive at the same answer where they meet.
They stay. Marks are stored on the part, so they survive staging, docking, undocking, quicksaves, going on rails, being stowed in an inventory, and being flown to another planet. Decouple a sooty tank and the soot goes with the tank.
Nothing is pre-made. There are no decal textures in this mod, and no decal parts. Every mark is generated at runtime from where the plume went and how hot the part got, so no two ships come back looking the same.
- Skinned meshes are left alone. A handful of parts deform their mesh with bones rather than moving transforms. Marks would land in the wrong place on those, so they aren't painted. Ordinary animated parts — deploying panels, landing gear, gimballing bells — are handled correctly.
- Flags, ladders and other alpha-cutout surfaces are skipped by default. They're thin,
single-sided geometry where the overlay can show through from behind. Set
skipCutoutRenderers = falsein the config if you'd rather have them. - It doesn't change part damage or heat. This is cosmetic. KSP's own exhaust damage and thermal model are untouched.
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 Burn Marks and install. CKAN pulls in ModuleManager, which is required.
- Install ModuleManager if you don't already have it. It's required — it's what attaches the mark-tracking module to parts.
- Download the latest release zip from Releases.
- Drag the
BurnMarksfolder into your KSPGameData/folder, so you end up withKerbal Space Program/GameData/BurnMarks/.
Works with an existing save. Ships already in flight start clean and pick up marks from their next burn or re-entry.
The switches most people want are in the stock difficulty settings screen, under Burn Marks — reachable from the pause menu in flight, or when starting a game.
| Setting | What it does |
|---|---|
| Enable burn marks | Master switch. Off stops drawing and accumulating, but keeps marks already recorded. |
| Engine exhaust soot | Plume scorching on or off. |
| Re-entry charring | Aerodynamic charring on or off. |
| Strength | How fast marks build up. 1.00 is the tuned default. |
| Detail | Resolution of the mark textures. Higher is crisper and costs more memory. |
| Show scrub button | Adds a right-click option on every part to clean it. |
Right-clicking a marked part gives you Scrub scorch marks, which wipes that part clean. It works from EVA too.
Everything else — how far a plume reaches, how hot a surface has to get before it discolours,
how far round a part char is allowed to reach, the colours themselves, memory and frame-time
budgets — lives in
GameData/BurnMarks/Configs/BurnMarks.cfg, which is commented throughout and is
ModuleManager-patchable so part packs can retune it for their own engines.
Marks are painted on the CPU into a per-part texture, and both the painting and the setup are strictly budgeted: the painter gets 1.8 ms per frame and hands work back unfinished rather than overrunning it. A mark that needs more than one frame simply finishes on the next one.
Memory is the real cost. Each marked part holds a mask texture — about 2.6 MB across CPU
and GPU for a large part, a tenth of that for a small one. Parts that have never been
marked cost nothing at all: no texture, no renderer, no data saved. A typical re-entering
ship has a handful of marked parts, and there's a hard ceiling (maxPaintedParts, default
64) so a two-hundred-part station can't run away with your VRAM.
Turn Detail down to 0.5 to quarter the memory, or up to 2.0 to quadruple it.
Burn Marks never touches a part's materials, textures or shaders. It draws a second, multiply-blended pass over the part's own surface, which means it composites correctly on top of whatever drew the part in the first place. So it should get along with everything:
- Restock, and any part pack — no per-part configuration needed, ever. It works off the mesh, so a part it has never heard of is handled the same as a stock one.
- Textures Unlimited, Deferred, Waterfall, Scatterer, Parallax, TUFX — none of these care, and neither does this.
- Firefly and other re-entry effect mods — those draw the fire, this draws what the fire left behind. They don't overlap.
- TweakScale — mark sizes scale with the part.
Requires ModuleManager. Requires KSP 1.12.x.
The short version: each marked part gets a private UV unwrap generated at runtime, because KSP part models very often mirror or overlap their real UVs and painting into those would scorch the far side of a part whenever the near side got hit. Marks are stored not as pixels but as a small continuous function of 3D position and surface normal — a handful of directional splats for exhaust soot, and a direction plus a dose for re-entry char — and the texture is regenerated from that function whenever it changes.
Storing marks as a continuous 3D function rather than as pixels is what makes them behave like decals: it's why they cross part seams without a join, why they follow the surface exactly, and why the whole state of a scorched part fits in a few hundred bytes of save file.
The long version, including why multiply blending is the whole trick and how a per-triangle atlas can be seamless, is in docs/TECHNICAL.md.
No SDK, no NuGet, no Visual Studio required — just the C# compiler that ships with the .NET Framework. The source targets C# 5 deliberately so this stays true.
powershell -File Tools/Build.ps1Add -Install to copy the built folder into your GameData, or -KspDir "D:\Games\KSP" if
your install isn't in the usual Steam location.
The atlas layout and the re-entry char shape both have checks that run without the game:
powershell -File Tools/Test.ps1MIT — see LICENSE.