CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
10.65k stars 4.18k forks source link

Recommended plan to fix absurd fire spreads #70679

Open I-am-Erk opened 10 months ago

I-am-Erk commented 10 months ago

Is your feature request related to a problem? Please describe.

Fires in game come in one flavour only, which I'd describe as a "conflagration". If you light any object on fire, you can expect to rapidly watch the world around you decay to a cinder.

This can be fun, as we all know, but it's also a big problem. It means we can't have enemies that play with fire, despite it being a really obvious tactical tool, because they'll burn the world down. It means there are a lot of very goofy strategies involving matches, shrubberies, and zombies that really shouldn't work, or should at least require a lot more effort. It means a lot of new players are burnt to death because they didn't put their cook fire in a pit, even though they put it somewhere it really ought to have been safe.

Solution you would like.

I think the solution we need for fires, at least to start, is to add one or two pre-"fire" field levels that are not so wild. The current fire field is appropriate if we're modelling a raging inferno, but not for anything less. We might want to slow down spread speed for it anyway, but even without doing that I think we could use:

  1. a Smoulder field, which is the most common form of fire field. If you toss a lit match on the ground, you get a smoulder.
  2. a Flame field, which upgrades from smoulder and represents a larger, more self-sustaining, still contained, fire.
  3. The existing Fire field, which represents a large, spreading, out-of-control fire.

Smoulders:

Note that smoulders put into a proper firestarting vessel should have a much much lower chance of downgrading. If you start a smoulder in a fireplace with fuel in the same tile, it should almost always progress to a flame. Later, we could add more variables; for example, we could make a Survival skill check when you start a smoulder and have that influence the level it starts at and how likely it is to upgrade.

Flames:

smashing a flame should have a chance of creating a smoulder in adjacent tiles, and downgrading the level of the flame.

Growing and spreading small fires

Every few turns (I suggest 10) a smoulder checks if it should upgrade or downgrade, influenced by the presence of flammable items. I don't know how we currently assess flammable items, and I have a feeling it's something that needs work, but for now let's just use whatever system is in place already. If it upgrades past a given level (level 10 or so?) it becomes a flame.

Flames also check every few turns if they should upgrade or downgrade, with the assumption being that most of the time they won't do either. Unless they're set in a pile of paper in a field of dry grass, it should take several minutes even for a very robust flame to upgrade to a fire. Like smoulders, if they upgrade past level (10?) they become fires and now they're out of control and can spread rapidly.

Note that a flame in a firesafe container should never upgrade to a fire. Fire now represents only out of control fires. The exception may be later on if we want to eg. require a hotter oven to do stuff like cremation, but that's something for down the road.

Starting smoulders/flames

Almost everything that starts a fire should start a smoulder instead, by default; some things might start flames. I'm not sure if there's anything in the game that should start as a fire. Even a molotov cocktail should have a chance to light entities on fire with the fire effect, but not to start an uncontrolled conflagration on contact. These things take time to burn.

If there is an accelerant liquid item in the tile, eg. a puddle of gasoline, we should significantly increase the rate at which a smoulder upgrades to a flame, but I am not sure if it should be instant or just fast.

A note on smoke

Currently IIRC we reduce the smoke output of a fire if it is in a container. I think instead now, we should make flames produce the amount of smoke a fire in a container does, regardless of container or no. Only containers with chimneys should reduce smoke.

Describe alternatives you have considered.

For years the common wisdom has just been to adjust the fire field effect to be more managed and appropriate, and I think the reason we haven't done that is that really it's a lot of work to add special details at each level of fire. Breaking it up like this should be much more manageable and easy to understand.

Additional context

Down the road this would be good to adapt further into some wilderness fire starting details, including the effect of wind on fire spread, using skills to start trickier fires, and stuff like that.

Also down the road, different items should be able to start smoulders at different levels or upgrade them a level faster, so that eg. a fire bow might always only start a smoulder 1 while a good butane lighter might start a smoulder 4, and adding tinder gives it a +1. This is all stuff that probably should be in a follow up PR but would be really cool to add.

In the future we probably need to distinguish items, furniture, and terrain that are accelerants, highly flammable, flammable, and barely flammable. Accelerants would massively upgrade smoulders and flames; highly flammable furniture and terrain would influence smoulder and flame upgrades and could be burnt up by flames; flammable terrain increases the growth rate of flames but not smoulders, and cannot be destroyed by flames; barely flammable stuff (a door, for example) wouldn't burn until hit by a proper fire. This lets eg. a smoulder catch a pile of leaves on fire, upgrading quickly to a flame and destroying the pile, but the flame still isn't necessarily going to catch the nearby walnut tree ablaze and certainly not instantaneously. Likewise this means a flame on a wooden floor is much more likely to upgrade to an out of control fire, but it's not going to do it instantly and it's not going to eat right through the floorboards.

PatrikLundell commented 10 months ago

I disagree with the "rapid" spreading statement. It takes hours to set fire to single world tile fungal tower infestations (and more hours before the fires die down). And that's only if you remain there for the whole time, as fires are placed in stasis when outside the reality bubble.

Smoulder: Should definitely set some things on fire directly. Gasoline is an obvious example, but there are other things that are very flammable e.g. chaff. I'd say gasoline is pretty much instant, or a Molotov cocktail wouldn't work (and there wouldn't be hundreds of casualties when gasoline truck accidents cause people to flock around them to collect gas from them and some idiot lights a cigarette). Arsonists using gasoline to douse things with seem to be rather good at getting the flames to spread very quickly.

epsimpson commented 10 months ago

This doesn't describe a real problem.

"If you light any object on fire, you can expect to rapidly watch the world around you decay to a cinder."

I light many things on fire in-game. I never expect, or get, a conflagration. I just do it in the street and let it burn. It goes out soon enough.

"there are a lot of very goofy strategies involving matches, shrubberies, and zombies that really shouldn't work, or should at least require a lot more effort."

Why shouldn't it work? People used fire to drive and kill large prey animals long before guns and bows because it's easy and effective. There's nothing goofy about that at all. Using it against zombies in the same way is perfectly realistic. Why do you want to make that impossible, or harder, or too tedious to bother with?

"It means a lot of new players are burnt to death because they didn't put their cook fire in a pit, even though they put it somewhere it really ought to have been safe."

What makes a place safe for a cook fire? The answer is a little bit of effort. That's true even in the middle of a paved road. Similarly, in game, if you want to control your cooking fire, then you need to put in a little effort, and you do that by using one of the many methods that allow you to control your cooking fire. A digging stick requires survival 1 and cutting 1 to make, and with a little effort you have a pit, or a fire ring. If you don't learn how to control fire, then you get burned. That's life and death of the ignorant absent modern conveniences. If they survive then they're a little less ignorant, and they do better next time. Many would call that, "The Game".

"It means we can't have enemies that play with fire, despite it being a really obvious tactical tool, because they'll burn the world down."

Wait, I thought you didn't want fire to be used as a tactical tool, or is that only for players?

And we DO have enemies that play with fire. Gasoline zombies. Lure them into the middle of the street and no damage done. Shoot them in a building and risk burning the place down. IRL, if one house burns in a city, the whole neighborhood can go up without active firefighting to limit its spread. They don't go out by themselves, as you seem to think they would. Even with firefighters, whole buildings get lost. I worked a single fire in Alaska that burned more than the entire state of Massachusetts. It happens. Easily. And without active fire suppression and controlled burns, it'll happen a lot more often and a lot more easily.

Items, furniture and terrain should have no influence on fire spread unless it puts the fire OUT? That makes zero sense. Fires a lot bigger than possible in game happen IRL all the time. We prevent them by modifying the terrain away from its natural state (controlled burns). Natural terrain feeds fires, it doesn't put it out. As for furniture, there was a firefighter arsonist who burned down buildings by placing a cigarette+match device behind couch cushions. A few match heads took out whole buildings. A lighter would do it faster. A cooking fire beside a couch and you have little chance to put it out even with a fire extinguisher. And you think that even gasoline maybe wouldn't make instant, out of control flames?

This whole smoldering mechanic just sounds like a lot of computer cycles to 'fix' something that's not really a problem, to eliminate a dangerous tool and an effective tactic that both work as they should, and eventually to add tedium to cause something that in reality is much more difficult to stop.

PatrikLundell commented 10 months ago

Sure, fire has been used for hunting purposes historically. But rarely by setting a bush on fire while being pursued, as it would take too long to actually get the bush to burn sufficiently (and animals are smart enough to go around the bush anyway, even if some now animal food idiot did try).

epsimpson commented 10 months ago

Sure, fire has been used for hunting purposes historically. But rarely by setting a bush on fire while being pursued, as it would take too long to actually get the bush to burn sufficiently (and animals are smart enough to go around the bush anyway, even if some now animal food idiot did try).

You have a point. I've never thought of using it while fleeing (may have to try it in a pinch :). The fix for that is simply a matter of timing, though a dead, dried tumbleweed burns very fast and hot - more likely to burn itself out before the zombie reaches it, unless you find a drift of them. Not that tumbleweeds are especially common in New England, just that condition / time of year matters IRL. Not sure it's really worth the trouble to go to even that much detail. Just find a happy medium for flare up timing. Forces people to at least time their fire-lighting with zombie's approach, and hope it works out right.

I-am-Erk commented 10 months ago

Please use a single cardboard match to light a door on fire and get back to me. No tinder mind you.

db48x commented 10 months ago

A hollow–core door could probably be set on fire pretty easily with a match. A solid oak door not so much.

Also, small fires can spread uncontrollably fast in the right conditions. Try dropping a match in your yard at the end of summer, for example. If the grass is short the flames will be pretty small and relatively cool (for a fire), but it will spread along the ground faster than you can stamp it out. Plenty of examples on Youtube too.

I-am-Erk commented 10 months ago

That's all fully included in this proposal. The problem at the moment for that is that "flammable" is a boolean on furniture and terrain. A pile of leaves, an oak tree, a door, and a bed are all equally flammable, and very flammable.

A first pass would wind up assuming all of these things are hard to ignite with a match, so you'd want tinder and accelerant or something bigger to start the fire with if you want it to really get going, but I'm not proposing they can't be burnt. Ultimately at the end we'll want to distinguish between things that never burn, things that are hard to start burning, and things that go up quickly... Like I said.

(Also I disagree that you could light a hollow core door on fire with a cardboard match and no tinder.)

Rokharn commented 10 months ago

I disagree that you could light a hollow core door on fire with a cardboard match and no tinder

Depending material, fire resistant class of constriction material and so on. This not easy theme. For example, American Society of Testing and Materials did many tests with fire and flame, so possible to find huge literature about it.