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

Enigmas Realistic Smoke Rework

Smoke that rises, finds its way out of rooms, pools under ceilings, bends in the wind, and reacts to weather. Weak fires puff small and slow. Fully configurable.

Date uploaded 2 weeks ago
Version 0.3.0
Download link Enigma_Prime-Enigmas_Realistic_Smoke_Rework-0.3.0.zip
Downloads 77
Dependency string Enigma_Prime-Enigmas_Realistic_Smoke_Rework-0.3.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

Valheim smoke that acts like smoke. It 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. Weak fires puff small and slow. Strong fires pour out big, fast smoke.

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

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 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

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.

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.

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.
  • Over 30 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.

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

  • Not compatible with Smoke Collision. This mod replaces it and will not load if it is installed. Remove Smoke Collision first.
  • 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. 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 one setting that touches gameplay is Required space (Fireplaces). 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.

General

Setting Default Range What it does
Enabled true - Master switch. When off, smoke behaves exactly like the unmodded game (including the main menu fire).
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

Fireplaces

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.
Fire size effect 1 0 to 1 How much a fire's fuel level changes its smoke (size, speed and puff rate of the three settings below). 0 = every fire looks the same, 1 = full effect.
Weak fire puff size 0.42 0.03 to 1 How big the puffs of a fire with 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.
Weak fire rise speed 0.38 0.1 to 1 How fast the smoke of a fire with one log (or less) rises, as a fraction of normal. A full fire rises a little faster than normal. 1 = no change.
Weak fire spawn boost 6 1 to 6 How many times more often a fire with 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.

Smoke

Setting Default Range What it does
Lifetime multiplier 2.5 0.1 to 5 How long smoke lasts before it fades, relative to the game. Longer smoke travels farther and needs a higher Max amount.
Spawn rate multiplier 2 0.1 to 10 How often fires and chimneys release smoke, relative to the game. 2 = twice as often. More smoke costs performance.
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.
Collider size multiplier 1 0.1 to 2 Scales how much room a puff needs to move, without changing how it looks. Lower it if smoke gets squeezed in tight flues. Applies to new puffs.
Acceleration multiplier (advanced) 1.5 0.1 to 10 How quickly smoke reaches its target speed, relative to the game. 2 = twice as snappy. Applies to new puffs.

Wind

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.

Weather

Setting Default Range What it does
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.

Visuals

Setting Default Range What it does
Smoke size multiplier 1 0.1 to 4 How big every puff looks.
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.

Main Menu

Setting Default Range What it does
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.

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 Weak fire spawn boost.
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.

Debug

Setting Default Range What it does
Debug logging (advanced) false - Writes extra lines to the BepInEx log: fire detection and a sample of what smoke decided. Leave off unless asked.
Force weather (advanced) Off - 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.