Glitchfiend / ToughAsNails

Minecraft mod that adds survival features to increase difficulty and realism, including thirst, body temperature, and more!
https://www.curseforge.com/minecraft/mc-mods/tough-as-nails
Other
284 stars 113 forks source link

Suggestions wrt to Temperature #406

Closed RiverC closed 3 years ago

RiverC commented 6 years ago

Body temp is definitely my favorite aspect of Tough as Nails and I've played a number of settings with it enabled.

First of all, for more complex modpacks I've found that the default settings for body temperature make it way too fussy; at random times (it seems) you are freezing or burning up. What I've done in general is drop the extremity of all values and this does help a bit (--summer days, deserts, the nether and near lava pits are still dangerously hot, winter nights, mountain-tops, and "ice" climates are still dangerously cold.)

I have two suggestions based on my play (and my real-life experience.)

  1. Instead of so much difference in temperature due to day/night, make it more based on how much sky-light the block(s) you are in have. I noticed this wasn't happening when I was in the plains overheating and tried to get into the shade of a tree, only to find shade didn't make things cooler. The temperature underground shouldn't vary too much day to night, but that would be covered by the fact that there's no sky light, (You're always in shade!) The amount of heat produced by sky-light would be effected by the time of day (noon=most, midnight=least)

  2. Instead of wool clothing producing "heat", have it produce insulation. There's already a mechanic for the rate in which your body temperature changes (not sure what this is controlled by exactly) but pretty much all clothing and armor could or should provide some insulation; (maybe not copper armor). Thus putting on wool clothing when you're already cold won't help you much, but if you get yourself very cold wool clothing would prevent you from changing temperature as quickly even in the nether.

The upside would be that wool clothing would still increase the base temperature your body would be changing to (in an upward direction as it is now) so that might not actually change. Instead of the gelled slime (or in addition to) have some linen clothes (like the Bedouin wear) which act like wool clothing but have a base temperature of -1 for each piece. That means, similar insulation but lower base temperature.

For the sake of sanity I'd assume that the armor types aren't just a plate of metal but represent real armor which usually has a layer of padding; but that's up to you guys. (It would be nice to be able to wear some armor in less extreme but still hot or cold environs.)

Thanks.

lifeofsenpai commented 6 years ago

Minecraft works on a 0 to 15 scale light level. Any light source contributes to this scale, so it would be very imbalanced on its own (standing in a cave lit with torches would be the equivalent of standing on the surface of the sun).

KnightMiner commented 6 years ago

Not entirely, Minecraft actually has two different light types, sky light and block light. It is trivial to check for just sky light.

RiverC commented 6 years ago

My thought is to check for sky light (perhaps minorly for block light; I think you can't because the type of block source is more important; i.e. glowstone lamps don't look like they'd produce the same heat as a lava block, though both have 15 light.) and then use the skylight value against time of day to determine "actual sunlight" you're exposed to, then combine that with season, biome, and altitude to determine what the temp should be.

I really think that caves at or below sea level should be at base (0) temp all the time or close to it, since this tends to be true in most environments (except maybe antarctica; but the caves are, I think, still warmer due to the same microbiome effect) and in general in cold environments caves should be quite a bit warmer (perhaps not at high altitude) and in warm environments quite a bit cooler, since the behavior of animals and humans pre-free-standing structure suggests that caves and artificial caves (i.e. stone houses) tend to be comfortable for us.

I think you could use humidity value to scale the temp change for evening/noon; highly damp environments tend to have less variation between both seasonal and day/night temps in real life (dampness is not really the cause of this, but one of the effects of larger wind patterns, sun exposure, position wrt to bodies of water, etc) so deserts and ice mountains would have huge variations in temp between day and night, but jungles and swamps, very little.

As for the effects it would have on the temperature inside houses, I would guess that when you do a temp check you could see what materials were between the player and sky (above) which could be used to scale the temperature inside a house to closer to the outside temp, just a quick kind of hack to simulate the fact that while a mountain has great insulation, a wooden house does not.

Mainly, I'd just like to be able to step into the shade on a hot day 😄

RiverC commented 6 years ago

I've actually come up with an algorithm. I'm going to do a little more work on it, but I like the values I'm seeing, i.e. how hospitable different biomes are in different conditions in different seasons & during different times of day.

I also believe I have come up with a way to handle "in sun" vs "open air" vs "cave" conditions; but that will take forking and testing to make sure it works the way I think it will.

The configuration for temperature with regards to the general environment gets a bit more complex, though everything should work without needing to change the default values for everything else (i.e. amount wool armor heats you, amount of heat a campfire provides, etc.)

Forstride commented 6 years ago

We really don't want temperature to be overly complex. It should be an easy to understand feature, with obvious things that change temperature. I've been toying with different values to make it more fun, and so temperature isn't as big of an issue in normal biomes, like forests, plains, swamps, etc., unless it's winter.

RiverC commented 6 years ago

Well, if you'd prefer I hide certain constants, that's fine. At the very least I'd need to add a config value for "max temperature difference in caves", and two others; "max difference of temperature from seasonal changes in caves" and "max difference in temperature from sun from seasonal changes."

The main problem with the current set of values is that minecraft's internal temperature values are kind of arbitrary (i.e. the temperature difference between a plains and a desert for example) and massaging them to get something that feels right and makes sense is quite hard.

I say this because I've done a heck of a lot of tweaking the current settings and the only way to make things not annoying (as it is) is simply to nerf all of them, which removes a bit of the danger and attendant fun.

In the end I'm doing this for myself. If you like what I come up with, you're free to pull it. No sweat.

Forstride commented 6 years ago

I wasn't talking about the complexity of the config files. I meant in terms of gameplay. The more factors affect temperature, the more complex it gets, whereas we want it to feel more arcade-y, like Breath of the Wild's temperature system.

So only extremes should really affect temperature to the point where it can harm the player, like deserts, ice plains, winter, the nether, etc.

RiverC commented 6 years ago

Well, what you're saying is a re-iteration of what I said in the OP here. If you're worried that "in the sun/out of the sun" or "completely out of skylight/in some skylight" is too complex gameplay wise, dunno what to tell ya.