You are viewing a potentially older version of this package. View all versions.
Enigma_Prime-Enigmas_Realistic_Smoke_Rework-0.4.0 icon

Enigmas Realistic Smoke Rework

Smoke that rises, finds its way out of rooms and reacts to wind and weather, plus flames that follow their fuel and give in to wind and rain. Smoke needs a fire, after all. One switch turns the flames off.

Date uploaded 2 weeks ago
Version 0.4.0
Download link Enigma_Prime-Enigmas_Realistic_Smoke_Rework-0.4.0.zip
Downloads 171
Dependency string Enigma_Prime-Enigmas_Realistic_Smoke_Rework-0.4.0

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2351 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.2351

README

Enigma's Realistic Smoke Rework

Now with flames. Yes, it still says smoke.

Valheim smoke that acts like smoke, and flames that follow their fuel. Smoke rises, finds its way out of rooms, pools under ceilings when it has nowhere to go, bends in the wind, and reacts to the weather. Flames grow with a full fire, shrink as the fuel runs low, and give in to wind and rain. Weak fires puff small and slow. Strong fires pour out big, fast smoke.

Replaces vanilla smoke. Client side, every setting can be changed live in game, and nothing it does touches your saved world.

Only want the smoke? Turn off Flame effects in the General settings and the flames go back to the game's own.

Updating from 0.3.0? The settings were renamed and regrouped. Your old values are carried over automatically, and a copy of your original config is saved next to it as EnigmaPrime.RealisticSmokeRework.cfg.pre-0.4.bak. Open your settings once (F1) and check that your old values still match.

Smoke column from a campfire bending in the wind

What it looks like

Everything below describes the default settings.

Vanilla vs Enigma's Realistic Smoke Rework

Same fire, vanilla smoke on the left and Enigma's Realistic Smoke Rework on the right

Same fire, same spot. The difference is in how the smoke moves, grows, bends and fades.

Finding the way out

Smoke rising out through the roof vent of a building

Smoke looks at the space around it and heads for the path of least resistance, through gaps, windows and flues, instead of piling against the first ceiling.

Pooling when there is no way out

Smoke gathering under the ceiling of a hall

With no exit, smoke collects at the highest point and spreads out, then fades.

Chimneys and flues

Inside narrow spaces smoke gets a gentle pull upward, shrinks a little to fit, and eases back to full size once it is out in the open.

A tower with a fire at the bottom: smoke climbs the shaft and leaves through the top

Wind

Wind bends the plume, with gusts and swirls instead of a straight line. Fresh hot smoke is pushed around less than smoke that has cooled.

Cold and rain

Smoke flattening out at the cold-weather height cap

In freezing weather smoke stops climbing at about 20 meters above the fire and spreads out sideways. In cold weather it stops at about 30 meters. Both heights can be changed in the settings. In rain smoke fades faster.

Fire strength

Last-log fire next to a full fire, with very different smoke

A fire on its last log makes small, slow, frequent puffs. A full fire makes big, fast smoke. Fires in between scale smoothly.

Flames follow fuel

A full fire burns taller and brighter than the game's. As the fuel drops, the flames and their light shrink smoothly instead of staying the same until the last log. A last-log fire is a small, wavering flame. Adding fuel gives a short flare. Weaker fires flicker more, and nothing flickers harder than the game's own Reduce Flashing Lights setting allows.

This covers fireplaces, torches, braziers and the like. Handheld torches, smelters, kilns and cooking stations are not touched.

A pan across fires with different fuel levels: the flames and their light follow how much fuel is left

Adding fuel to a low fire gives a short flare that settles back down

Wind and fire

Strong wind on an exposed fire shrinks its flames. A weaker fire gives in to lower wind than a full one. Past that point, campfires, hearths, bonfires and braziers drop to the game's own low flame with its little puffs of smoke, and torches go dark. Walls and roofs protect a fire, using the game's own shelter check. The fire stays lit as far as the game is concerned, so it keeps warming and cooking. Nothing changes for other players.

Fires shrinking and dropping to the small flame with puffs as the wind rises, then coming back when it drops (sped up)

Rain and fire

An exposed fire dwindles the longer it stays in the rain, until it looks out, with only thin wisps of smoke. Get it under cover and the flames come back. Like the wind effect, this is visual only: the game still treats the fire as lit.

The sealed lanterns (jack-o-turnip and snow lantern) ignore wind and rain.

Exposed fires dwindling in the rain until they look out (sped up)

The flames coming back after the rain stops (sped up)

Features

  • Smoke finds the path of least resistance out of a room, through gaps and flues.
  • With no way out it pools at the highest point.
  • Wind bends the plume with gusts and swirls. Hot fresh smoke is less affected than cooled smoke.
  • Freezing and cold weather cap how high smoke climbs (about 20 and 30 meters by default, adjustable). Rain makes it fade faster.
  • Fire strength matters, from a last-log wisp to a full blaze.
  • Smoke is drawn up narrow flues and chimneys and eases out the top without squeezing.
  • Puffs vary in size, speed and timing, so smoke comes out in uneven pulses instead of a perfect stream.
  • The main menu fire gets the same treatment.
  • Flames and light follow the fuel in a fire: a roaring full fire down to a small flicker, with a flare when you add fuel.
  • Strong wind shrinks and blows down exposed flames, and weaker fires give in sooner. Shelter protects them.
  • Rain slowly dwindles exposed fires until they look out. Covering them brings them back.
  • Low fuel flames waver more.
  • Over 50 settings, all with sliders in game. Nothing is hardcoded that you would want to change.

How it works, in plain terms

Each puff of smoke checks the space around it every second or so. It looks for walls, roofs and openings, then steers toward whatever gives it the most room. Heat decides how fast it rises and how much the wind can push it. Cold weather lowers its ceiling. Rain thins it out faster.

Smoke far from you skips the wall checks and just rises and drifts, so a base full of fires stays playable. Flames work the same way: fires far from you are checked rarely and not animated, and nearby fires only do work when something changes.

Diagram: how a puff of smoke decides where to go

Install

Install with r2modman or the Thunderstore app. BepInExPack Valheim is installed automatically. To change settings in game, install Configuration Manager and press F1.

Compatibility

  • This mod includes its own smoke collision, so it will not load alongside the Smoke Collision mod. Other mods that change smoke collision cover the same ground and can conflict, so please test your setup if you use more than one.
  • Client side. It only changes what each player sees and never touches saved world data. A dedicated server does not need it.
  • See the server notes below if you run a server.

Performance

Smoke far from you skips the expensive checks, and so do flames. For bases with many fires, lower Detailed range, Max amount or Spawn rate multiplier.

Support

If you like the mod and want to say thanks, you can buy me a coffee:

Buy me a coffee on Ko-fi

Bug reports and ideas are just as welcome. Open an issue on GitHub and include your BepInEx log and your settings file.

How this mod was made

The ideas, the design, and every decision about how the smoke should look and behave are mine: where it goes, how it reacts to wind and cold, what the settings should be. However, I am not a programmer. The code was written by Claude, an AI assistant made by Anthropic, working from my direction through Claude Code.

I want to be upfront about that. I am the one who plays the game, so I test every build in Valheim, read the game log for errors, and send back anything that looks or feels wrong until it behaves the way I intended. The code was also checked against Valheim's own code so it hooks in the right places. If you find a bug, please open an issue and I will work on a fix.

Not affiliated with or endorsed by Anthropic.

Changelog

See the Changelog tab on this page.

Settings reference

All settings are in BepInEx/config/EnigmaPrime.RealisticSmokeRework.cfg and can also be changed live in game with Configuration Manager (F1). Settings marked advanced only show in F1 when "Show advanced settings" is ticked.

Notes for server owners

  • The mod runs on each player's own game and only changes what that player sees. A dedicated server does not need it, and it never changes saved world data. The flame, wind and rain effects are visual only and never change whether a fire is lit.
  • The one setting that touches gameplay is Required space (section 5 Smoke). Smelters, kilns and similar stations use the same check to decide whether they are blocked, so every player on a server should use the same value (or leave it at the default).
  • Settings are not synced between players. To keep everyone consistent, give players the same EnigmaPrime.RealisticSmokeRework.cfg.
  • For a base with many fires, the biggest performance levers are Detailed range, Max amount and Spawn rate multiplier.

1 General

Setting Default Range What it does
Enabled true - Master switch for the whole mod. When off, smoke and flames behave exactly like the unmodded game (including the main menu fire).
Flame effects true - Master switch for every flame change: fuel size and light, refuel flare, wind and rain. Off = the game's own flames, smoke only. Visual only.
Affect main menu fire true - Also applies the mod to the fire on the main menu screen: spawn rate, lifetime, wind (never toward the camera), rise speed variance and uneven puffs. Takes effect when the menu loads.
Extra ignored object ids (advanced) - Extra prefab names (separated by comma) that smoke passes straight through, added to the built-in list (grates, ladders, stairs and similar). Example: wood_gate,wood_door

2 Global

Setting Default Range What it does
Fuel flame strength (Global) 1 0 to 1 How strongly a fire's fuel level changes its flames: size, light and particles. 0 = every fire looks like the game's, 1 = full strength. To turn all flame changes off, use Flame effects in General. Visual only.
Fuel smoke strength (Global) 1 0 to 1 How much a fire's fuel level changes its smoke: puff size, rise speed and puff rate (the three Low fuel smoke settings). 0 = every fire's smoke looks the same, 1 = full strength.
Smoke size multiplier (Global) 1 0.1 to 4 How big every puff of smoke looks.
Lifetime multiplier (Global) 2.5 0.1 to 5 How long all smoke lasts before it fades, relative to the game. Longer smoke travels farther and needs a higher Max amount.
Spawn rate multiplier (Global) 2 0.1 to 10 How often all fires and chimneys release smoke, relative to the game. 2 = twice as often. More smoke costs performance.
Acceleration multiplier (Global) (advanced) 1.5 0.1 to 10 How quickly all smoke reaches its target speed, relative to the game. 2 = twice as snappy. Applies to new puffs.
Collider size multiplier (Global) 1 0.1 to 2 Scales how much room every puff needs to move, without changing how it looks. Lower it if smoke gets squeezed in tight flues. Applies to new puffs.

3 Flames

Setting Default Range What it does
Full fuel flame height 1.75 1 to 2 How big flames get on a full fire, as a multiple of the game's. 1 = same as the game, higher makes full fires rage. Visual only.
Low fuel flame height 0.4 0.1 to 1 How small flames get on a nearly empty fire, as a fraction of the game's. Visual only.
Full flame fuel level 1 0.05 to 1 Fuel level (0 to 1, as a fraction of the fire's maximum) where flames are at full height. 1 = only a completely full fire is at full height, and flames shrink steadily from there. Visual only.
Low flame fuel level 0.2 0 to 0.9 Fuel level where flames and light reach their lowest. Below it they stay there until the fuel runs out and the game puts the fire out. 0.2 = two logs on a campfire. Visual only.
Flame height curve 1 0.3 to 3 Shape of the shrink between the two fuel levels above. 1 = steady, the same amount per log. Higher keeps flames bigger for longer and drops them faster near the end. Lower does the opposite. Visual only.
Full fuel light 1 1 to 2 How bright the light from a full fire is, as a multiple of the game's. 1 = same as the game. Visual only.
Low fuel light 0.45 0.05 to 1 How bright the light is on a nearly empty fire, as a fraction of the game's. Light dims smoothly with the flames down to this. Visual only.
Refuel flare 0.4 0 to 1 When logs are added, flames and light briefly get this much bigger and brighter on top of what the fuel level gives (0.4 = 40% more), then settle back. 0 = off. Visual only.
Refuel flare hold 2.5 0 to 10 Seconds the refuel flare stays at full strength. Visual only.
Refuel flare fade 1.5 0.1 to 5 Seconds the refuel flare takes to fade back to normal after the hold. Visual only.
Low fuel flicker 3 1 to 5 How unsteady the light is on a nearly empty fire, as a multiple of the game's flicker. 1 = same as the game. It builds up as the fuel drops, and also while a fire is blown down or soaked by rain. Does nothing if Reduce Flashing Lights is on in the game's settings. Visual only.
Fuel puff particles false - The extra puff of particles the game shows when you add fuel. Off = no puff (any sound is kept). On = the game's normal puff. Applies to fires that load after the change, so reload the area or restart. Visual only.

4 Flames wind and rain

Setting Default Range What it does
Enhanced wind blowout Visual only Off / Visual only How exposed fires react to strong wind. Low fuel gives in sooner, shelter protects. Off = game default. On (Visual only) = flames shrink or go dark but the fire stays lit, and nothing changes for other players or the server. Sealed lanterns ignore wind.
Low fuel wind blowout 0.35 0.1 to 0.8 Wind strength (0 to 1) that blows out an exposed fire at its Low flame fuel level or less. A full fire holds until the game's own 0.8. Fires in between follow the same curve as their flame height.
Wind flame shrink true - Flames of an exposed fire shrink steadily as the wind rises, before any blowout. Off = flames ignore wind until the blowout. Sheltered fires are never affected. Visual only.
Wind flame shrink amount 0.6 0 to 1 How far wind shrinks exposed flames before the blowout. 0 = not at all, 1 = all the way down to the blown-down size just before it. Visual only.
Wind flame start 0.2 0 to 0.7 Wind strength (0 to 1) where exposed flames start to shrink. Fires with less fuel reach their blowout wind sooner, so they shrink faster. Visual only.
Rain flame shrink true - Exposed fires dwindle in rain until they look out, with thin smoke wisps. Cover brings them back. Sheltered fires and sealed lanterns are unaffected. Visual only: the fire still warms and cooks.
Rain dwindle time 180 20 to 1200 Seconds of steady rain it takes an exposed full fire to dwindle until it looks out. Wind and low fuel make it faster, so a weak fire in a storm goes much sooner. 180 = three minutes. Visual only.

5 Smoke

Setting Default Range What it does
Required space 0.5 0 to 2 Clear space needed above a fireplace, in meters, before it will release smoke (the game uses about 0.75). 0 turns the check off. GAMEPLAY: this is the same check smelters, kilns and similar stations use to decide they are blocked, so on a server every player should use the same value.
Low fuel smoke size 0.42 0.03 to 1 How big the puffs of a nearly empty fire (one log or less) look, as a fraction of normal. A full fire is normal size, fires in between scale smoothly. Visual only. 1 = no change.
Low fuel smoke speed 0.38 0.1 to 1 How fast the smoke of a nearly empty fire (one log or less) rises, as a fraction of normal. A full fire rises a little faster than normal. 1 = no change.
Low fuel puff rate 6 1 to 6 How many times more often a nearly empty fire (one log or less) releases puffs than a full fire, so its small slow puffs make a steady stream. 1 = no change. High values mean more smoke objects, so raise Max amount with it.
Spawn timing variance 0.3 0 to 0.9 Random variation in the time between puffs (0.3 = plus or minus 30%) so smoke comes out in uneven pulses. The average rate stays the same. 0 = perfectly even.
Rise speed 1.5 0 to 10 Starting upward speed of fresh smoke in meters per second. It still slows as the smoke ages. The game uses 1.
Rise speed variance 0.2 0 to 0.5 Each new puff rises this fraction faster or slower (0.2 = plus or minus 20%), so some smoke overtakes other smoke. 0 = all the same.
Chimney pull 0.5 0 to 5 Extra upward speed (meters per second) for smoke inside narrow spaces like flues, so it is drawn out of the tube. A little stronger in wind. 0 = off.

6 Smoke visuals

Setting Default Range What it does
Smoke expansion 1.6 1 to 4 How many times bigger the smoke looks by the end of its life. Growth starts after a quarter of its life, and after leaving any flue. 1 = no growth.
Puff size variance 0.2 0 to 0.6 Each new puff looks bigger or smaller by up to this fraction (0.2 = plus or minus 20%). 0 = all the same.
Flue puff size 0.7 0.2 to 1 How big puffs look while inside a flue or other cramped space, as a fraction of normal. They ease to full size a few seconds after getting out. 1 = no change.

7 Smoke wind and weather

Setting Default Range What it does
Wind drift speed 2.5 0 to 5 Sideways speed (meters per second) of cooled smoke in full wind. Higher bends the smoke more. 0 = wind has no effect (also on the main menu).
Early wind effect (advanced) 0.5 0 to 1 How much of the wind fresh, hot smoke feels (0 to 1). Higher makes the smoke bend sooner instead of rising as a straight column.
Wind turbulence 0.3 0 to 1 Gusts and swirls: smoke wavers around the wind direction and strength instead of following it smoothly. 0 = off, 1 = strong.
Freezing cap height 20 0 to 200 In freezing weather smoke stops rising about this many meters above its source and spreads out sideways. 0 = no cap.
Cold cap height 30 0 to 200 Same as the freezing cap, for cold weather. 0 = no cap.
Rain decay boost 0.25 0 to 2 While it is wet, smoke fades this much faster (0.25 = 25% faster). 0 = rain has no effect.

8 Performance

Setting Default Range What it does
Max amount 200 20 to 1000 Maximum number of smoke objects in the world at once (the game uses 100). When it is reached the oldest smoke fades early. Raise it with Spawn rate multiplier, Lifetime multiplier or Low fuel puff rate.
Detailed range 40 0 to 64 Smoke farther than this many meters from you skips the wall and path checks and just rises and drifts in the wind. This is the biggest saver in bases with many fires. 0 = detailed checks everywhere.
Recheck interval (advanced) 1.5 0.5 to 5 Seconds between environment checks for each nearby puff. Higher is cheaper but makes smoke slower to react to walls and openings.

9 Debug

Setting Default Range What it does
Debug logging (advanced) false - Writes extra lines to the BepInEx log: fire detection, flame and blowout changes, and a sample of what smoke decided. Leave off unless asked.
Force weather (advanced) Off Off / Cold / Freezing / Wet / Cold and wet / Freezing and wet For testing only. Makes the mod behave as if this weather were active, whatever the game says.

CHANGELOG

Changelog

0.5.0

Smoke no longer gets stuck in small holes, and it now billows out from the fire.

  • New smoke shape: a new puff starts small and widens quickly, then keeps growing more slowly as it ages. Before, puffs started at full size. Weaker fires start closer to full size, so a last-log fire does not nearly vanish. This is look only.
  • Two new settings, Emerge start size (default 0.35) and Emerge time (default 1.5 seconds). Set the start size to 1 to turn it off.
  • Smoke expansion now grows fastest at first and slows down as the smoke ages, instead of speeding up in the middle.
  • A puff that is stuck in a flue or other cramped space now gets a little smaller with each check, hitbox included, until it slips through. Once it is out, it grows back to full size over a few seconds.
  • Flue puff size now sets the smallest size a puff shrinks to. Its default is 0.5 (was 0.7). If you already had a saved value, your value is kept. Set it to 1 to turn the shrinking off.
  • Removed the two Debug settings (Debug logging and Force weather). They were only for testing.

0.4.0

Flames have joined the smoke.

Important: settings were renamed and regrouped. Your old values are carried over automatically, and a copy of your original config is saved next to it as EnigmaPrime.RealisticSmokeRework.cfg.pre-0.4.bak. After updating, please open your settings (F1) or your config file and check that your old settings still match what you had.

New: flames follow fuel

  • Flames and their light now scale smoothly with the fuel in a fire, from a roaring full fire down to a small flicker on the last log. They stay lit until the game's own out state.
  • Adding fuel gives a short flare. The extra "fuel added" particles can be turned off (they are off by default).
  • Low fuel fires waver more. This respects the game's Reduce Flashing Lights setting.
  • Covers fireplaces, torches, braziers and the like. Handheld torches, smelters, kilns and cooking stations are not touched.

New: wind and rain on fires

  • Strong wind shrinks exposed flames. Weaker fires give in to lower wind, and walls and roofs protect them using the game's own shelter check.
  • Blown down campfires, hearths, bonfires and braziers drop to the game's own low flame with its small puffs of smoke. Torches go dark.
  • Rain slowly dwindles exposed fires until they look out, with thin wisps of smoke. Covering them brings the flames back.
  • All of this is visual only. The game still treats the fire as lit, so nothing changes for other players and fires keep warming and cooking.
  • The jack-o-turnip and the snow lantern are sealed, so wind and rain do not affect them.

Settings

  • New numbered sections: General, Global, Flames, Flames wind and rain, Smoke, Smoke visuals, Smoke wind and weather, Performance, Debug.
  • Settings that change every fire at once are now in their own Global section and marked (Global).
  • Clearer names: the Weak fire settings are now Low fuel (for example Low fuel smoke size), and Fire size effect is now Fuel smoke strength (Global).
  • Debug logging is off by default.
  • New Flame effects switch in General. Turn it off to keep the game's own flames and use the mod for smoke only.

Performance

  • Flames far from you are checked rarely and not animated. Nearby fires cache their shelter results and only do work when something changes.

0.3.0

  • First public release.