CleverRaven / Cataclysm-DDA

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

Survivor has unnatural heat and cold resistance #35306

Closed reed501 closed 4 years ago

reed501 commented 4 years ago

Is your feature request related to a problem? Please describe.
The player is very weak to high temperatures and very strong to low ones.

Describe the solution you'd like
Shift the comfortable temperatures up a few degrees.

Describe alternatives you've considered
Adding traits for heat resistance/cold resistance and corresponding negative traits.

Additional context
Issue that led to me doing this: It's 82F in the summer and I'm standing still in the sun. In real life, this is nice weather, a little warm, but nice. I would wear a t shirt and jeans and feel fine, you could maybe wear a light jacket if you wanted, a sweatshirt and be warm. In game I'm wearing mostly light survivor equipment and I'm very hot in most of my body parts, hot and on the verge to very hot everywhere else. Arms and legs only have strapped guards. This is ridiculous. If light survivor gear is useless in the summer what's the point? Do we need summer survivor gear to have protection and storage for late game survivors?

Here's the current comment for the body temperature system (Character.cpp):

Here lies the intended effects of body temperature Assumption 1 : a naked person is comfortable at 19C/66.2F (31C/87.8F at rest). Assumption 2 : a "lightly clothed" person is comfortable at 13C/55.4F (25C/77F at rest). Assumption 3 : the player is always running, thus generating more heat. Assumption 4 : frostbite cannot happen above 0C temperature.

I'm not sure how much I agree with the assumptions themselves, let alone how well the implementation matches them. Assumption 3 is the biggest problem. We now have variable movement speed, and the default movement speed is a brisk walk (?). 87.8F seems pretty reasonable, but 66.2F when moving is not, maybe running, but not basic movement. 55.4F is also quite cold and light clothing probably won't make it that much better, this is solidly jacket weather. This leads to the current situation where standing outside in ~15 warmth gear in 82F is very hot.

Since body temperature has been last balanced (probably a while, can't tell due to file size + player->character move), stamina and movement type have been added and these two should affect body temp quite a bit. In real life, when you switch to running you don't instantly get hot, but you drain stamina faster (implemented), but you definitely get hotter as you get more tired, which is made worse by high temperatures. To add to that, it can be really cold out and if I've just run I'm still gonna be hot for a bit.

I've tested some of this myself accidentally this past summer: 95F in the summer, jeans and t shirt + backpack (like half full, had a laptop), brisk walk for 30 minutes and I was getting pretty hot by the end of it. I like to think I would walk much like the survivor would in the walk state so this could be something to test to.

I should note: I'm from southern California, so maybe I'm a bit more heat tolerant than most.

Also, I found #14605 when looking into this. This looks interesting and I'm curious if this is still something worth doing and what people think about it.

Zireael07 commented 4 years ago

I think assumption 3 is a problem, yeah, and it's very likely out of date since movement modes were introduced. And you're indeed likely to be more heat tolerant than most. 82F or 28 Celsius is on the warm edge of comfortable for me in summer gear (Central-Eastern Europe, temperatures close to or exceeding 30 Celsius are pretty much a rarity), anything above 30 Celsius is hot. But for the survivor, we should probably assume s/he is used to the local climate, and we had the climate being made more realistic in #34515 - I'm hoping you could calculate how hot summers are. I could see the player being warm in 82F in light survivor gear, but hot or very hot, when default moving, is probably too much indeed. Hot when running is reasonable, though.

The simplest suggestion would be to calculate temperatures assuming walk state, and up them by one degree if running (so comfortable becomes warm, warm becomes hot, hot becomes very hot)

Odieman1 commented 4 years ago

Would probably benefit to make certain body weight affect temperature. I'm from New England area myself. You'll see fat guys wearing shorts when spring is just on the cusp. I'm talking, it's like 40F out and these dudes are wearing shorts and a light hoodie or something. If weight had something to do with temperature, normal and skinny people would probably survive the summer wearing jeans and a t-shirt without even really noticing anything wrong.

Davi-DeGanne commented 4 years ago

Anecdotal data is a bad measuring stick here because everyone is different… At 82F/28C I sweat like crazy, even in shorts and a tank top. It's incredibly uncomfortable and distracting. Meanwhile, I am fine down to 58F/14C or so in nothing but jeans (or even shorts) and a t-shirt. I am always outnumbered when it comes to thermostat-related decisions because I prefer it 68F/20C or below, and even at that temperature I still get uncomfortably hot when I exercise.

The average person is probably somewhere between us @reed501. Using this webtool I get these updated assumptions (with: 1.0 met for "at rest" and 3.8 met otherwise; 0.0 clo for naked and 0.5 clo for "lightly clothed"; 70% relative humidity; and 0 wind speed):

Assumption 1 : a naked person is comfortable at 16C/60.8F (28C/82.4F at rest). Assumption 2 : a "lightly clothed" person is comfortable at 10C/50F (25C/77F at rest).

So, imho, assumptions 1 and 2 are fine as they are (if anything, they ought to be tuned down, not up). However, whether assumption 3 is valid, and whether the implementation matches the assumptions, certainly both merit investigation as you pointed out.

Davi-DeGanne commented 4 years ago

@Odieman1 BMI and fitness level actually has an effect inverse to the one you're suggesting. This is because metabolic rate decreases as humans gain weight, meaning they don't heat themselves as well. Or at least that's the best guess we have to explain the phenomenon.

See this research paper for more detailed information.

Odieman1 commented 4 years ago

@DaviBones and here's a study that says the opposite.

Greater subcutaneous abdominal adipose tissue in obese adults may provide a significant insulating layer that blunts abdominal heat transfer.

Both of these studies are terrible because they are at temperatures above 70F. A better case is to search for a link with frostbite victims and obesity. All I can find is something about some arctic channel and how as BMI goes up, chance of frostbite goes down. Hard to argue that fat doesn't act as an insulating layer when it's plainly observable in nature all around us anyway.

CataphractPrime commented 4 years ago

There will be a negative correlation between obesity and incidence of frostbite, because people who are obese tend to avoid situations in which frostbite is more likely, i.e. mountaineering.

Conversely, there will be a positive correlation between obesity and incidence of frostbite when controlling for that factor, because one of the mechanisms by which frostbite causes damage includes blood coagulation, and obesity tends to cause circulation issues.

I have no source for either of these claims, as they are merely educated guesswork on my part. Take them with a grain of salt.

Odieman1 commented 4 years ago

Conversely, there will be a positive correlation between obesity and incidence of frostbite when controlling for that factor, because one of the mechanisms by which frostbite causes damage includes blood coagulation, and obesity tends to cause circulation issues.

Obese people often suffer from hypertension. It is a circulation issue, but probably not the way you were thinking. This is sort of referenced in the study I posted prior.

infrared thermography–measured fingernail-bed temperature was significantly higher in obese subjects.

If we look at this as objectively as possible: Heat is generated in the body. Fat, being a thermal insulator, will give cold a harder time permeating through a layer it vs a layer of nothing.

In the integumentary system, which includes the skin, it (fat) accumulates in the deepest level, the subcutaneous layer, providing insulation from heat and cold.

More info about fat in the integumentary system:

The hypodermis acts as an energy reserve. The fats contained in the adipocytes can be put back into circulation, via the venous route, during intense effort or when there is a lack of energy-providing substances, and are then transformed into energy. The hypodermis participates, passively at least, in thermoregulation since fat is a heat insulator.

So, simply put, being fat can help you in the winter.

stale[bot] commented 4 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. Please do not \'bump\' or comment on this issue unless you are actively working on it. Stale issues, and stale issues that are closed are still considered.

stale[bot] commented 4 years ago

This issue has been automatically closed due to lack of activity. This does not mean that we do not value the issue. Feel free to request that it be re-opened if you are going to actively work on it