TheDeathlyCow / scorchful

A heat mod for Minecraft Fabric and Quilt. Sister mod to Frostiful.
GNU Lesser General Public License v3.0
7 stars 1 forks source link

Add Sweating Cooling Level Config #29

Closed PPMDJ closed 8 months ago

PPMDJ commented 8 months ago

Is your feature request related to a problem? Please describe. I really like how Scorchful interacts with Dehydration via the sweating mechanic, where hot environments become bearable if the player is properly hydrated. But as I was tweaking the configs I realized that Scorchful's sweating doesn't help combat heat points, but rather _completely _blocks__ the player from gaining any heat while the player has enough of dehydration's thirst points. Further, hot environments will not increase your dehydration if the player then runs out of the config for min hydration for sweating. This I think is an issue because it makes thirst and heat far less dynamic, and making heat management something like a last-resort if you start running out of thirst points.

Describe the solution you'd like Perhaps instead we can take inspiration from Frostful's method of having shivering help to combat the cold rather than completely blocking the cold. Shivering only slows down hypothermia at the cost of food points, and I think Scorchful should do the same; that way, the heat from extremely hot environments can outpace sweat. This might necessitate distinguishing sweat from swimming, that way swimming can completely reset temperature.

Describe alternatives you've considered Frostful + Scorchful is the vanilla friendly temperature mods I've been looking for, and much more can be expanded on them! There are many directions that you can go in temperature management, but generally I think taking inspiration from other temperature mods that make surrounding blocks slowly contribute to your temperature change would make the mod feel natural and immersive. Yes, standing next to a pool of lava will make you sweat a little bit and still be perfectly temperate; but if you are surrounded by an ocean of lava in the nether, you should be still be dying from the heat while you are sweating buckets and quickly becoming thirsty.

Great mod! Let me know your thoughts!

TheDeathlyCow commented 8 months ago

This is really great feedback, thanks!! This all makes a lot of sense, though I still have some thoughts. First, since this relates to the core of how Scorchful works, I think it is worth sharing my core design principles that I think fit Scorchful's passive heating system into the spirit of Minecraft:

  1. The primary cooling mechanic should be simple and intuitive, and a natural extension of how humans keep cool in real life. It should be possible for a player to figure out how to keep cool without being explicitly told how to do so.
  2. Thirst (and hunger for that matter) does not have the player make particularly interesting decisions or engage with the world beyond simple resource extraction. Mechanics related to thirst should arise incidentally from other mechanics of cooling, such as providing water for sweating, and not drinking water should have no negative effects outside of temperature. However, other mods that provide a thirst system, like Dehydration, should still be supported for people who still want to have thirst as a survival mechanic.
  3. Living in The Nether should remain possible without having to import any material from the Overworld. The Nether Update really emphasized that the player should be surviving and progressing (at least a little bit) entirely in the Nether, with the importation of Overworld materials only being supplemental. This is not something I want to take away in Scorchful.

I think the key difference between shivering and sweating is that in Scorchful, being wet is the primary cooling mechanic. Whereas in Frostiful, fire is the primary warming mechanic, and shivering is just a secondary means of keeping warm which only kicks in at a certain temperature threshold. Furthermore, being wet and sweating are the same thing since they both rely on the same thermodynamic principle of using latent heat of vaporization of water to provide cooling to the body. Therefore, allowing heat to outpace sweat means it would become very difficult to survive without bringing in secondary cooling measures like ice or powder snow.

Keeping these points in mind, perhaps one way to implement your ideas would be to make cooling scale with wetness. Interpreting wetness as meaning what percent of the player's body is currently wet. This would be combined with allowing thirst to add to the wetness faster than wetness is consumed. This means that it should work out that heat will increase faster than cooling most of the time when surviving just off drinking water. However drinking enough fluids (maybe 3 or 4 hydrating drinks, or around 80% of the water bar with Dehydration) should be able to fill up the wetness to near 100%, which will provide a lot of cooling and allow the player to still be able to survive in The Nether.

PPMDJ commented 8 months ago

Thank you for the quick and detailed reply! I'd like to play with your two mods more to get a feel for them. I suppose I'm coming from the perspective of more hardcore realistic-survival-Minecraft crowd that wants to overhaul hunger and such. Naturally I'd love to help balance Dehydration and Scorchful together.

Your mods stood out to me because it still has a vanilla vibe with seamless implementation of temperature management. I've tried out pretty much every temperature mod but it's difficult to (immersively and vanilla-like) blend together hunger, thirst, heat, and chill with many fragmented mods. The Metabolism mod is a very interesting one that does a great job but it's still early in development and might not be vanilla enough for people.

  1. Agreed! There shouldn't be super in-your-face temperature affects that explicitly keep the player from exploring hot regions without specific equipment. Temperature management should be natural and immersive, becoming second-nature over time but becomes more challenging at the extremes (but still ticks in the background at more-temperate weather, helping with immersion. Subtle fluctuations so you know your Minecraft biology is still doing stuff). Regardless, it should make sense that certain player decisions make heat outpace sweat, such as wearing wool armor in the summer desert, or hanging out on top of a lava pool too long, (maybe too sprinting can skip thirst and add directly to heat, like Metabolism mod?)

  2. I'm mainly coming from playing with Dehydration, and other temperature mods. But looking for more engaging survival mechanics in my modlist, I'd want to see Scorchful challenge me with temperature and thirst at the same time, rather than thirst to a point and then heat. Constant heat stress should wear the player down, but it can be countered by walking away from the heat source or waiting until nightfall. BUT, I love how the wetness mechanic works in your mod! It's a subtle affect that helps in the heat and harms in the cold. I just think it needs to be a helpful buff or debuff dependent on your environment you're in, otherwise keeping it too rigid converts thirst into the first line of defense against the heat (much like how in vanilla hunger is merely the indirect way to support health regen). Heat could still accumulate even if the player is well hydrated in the desert, this just helps the survivalist player immerse because "oh look, a couple of my hearts are turning orange, it's scorching out! but I'll be ok cause I have water." Further, it is less intuitive keeping the heat affects hidden behind Dehydration's thirst, because the player will see thirst rapidly dropping and not know why, until it suddenly stops and then heat hearts start accumulating. This personally happened to me in the jungle biome specifically.

  3. I definitely don't want to disrupt living in the Nether either, but while it should be possible to survive down there without overworld imports, upping the metabolic challenge of living down there helps convey the harshness of that world. Venturing into the most wretched areas of the Nether could be a challenge, while the rest is relatively manageable with the right equipment and builds. I like to think about Lord of the Rings RotK when walking around in the Nether. Nether Lillies are a nice touch, and maybe we can think of more ways of gaining water to help players run with Dehydration. There are a couple other temperature mods that do some interesting things to help the player to survive the nether, like making netherite, gold, jelly, honey armor (or some Dune-like environmental suit?) protect you from heat, or offering air-conditioning blocks and portable icepacks to help cool you down. Maybe you can make Soul fire act as a cooling source (that would be very cool and creepy) or a more-intense heating source.

That said I like your idea of keeping wetness and temperature on a sort of scale, that way the player's hunger/thirst can contribute at varying amounts rather than turn on/turn off at rigid thresholds, much more in line with how the real human body works. This would blend well with Frostful too, as becoming completely wet would freeze you fast, verses walking around in snow (unless you have snowshoes?) or in a snowstorm could slowly make you wet and make the cold slowly become more serious. The Long Dark is a great inspiration!

I recommend checking out Metabolism. One thing I think would go a really long way for your mods would be to provide a debug display config and/or options for (vanilla-looking) visual indicators of how your body is working, which gives players an intuitive way to see how your mods work when they are first starting to use them, keeping in the style and spirit of Minecraft of course. Maybe even your own "Thirstful" mod is a way forward.

Spitballing ideas but hope this helps. Going to run a world with your mods and report back!

TheDeathlyCow commented 8 months ago

I think to some extent many of these things are already in Scorchful and Frostiful, however, I agree that I probably need to put a bit more thought into the Dehydration integration. Once the wiki is done they will all be explained more fully but currently the way the temperature system works is roughly like this:

For context, 'Temperature points' are an extrapolation of FreezingTicks from Powder Snow. However, its been changed so that positive values are warm and negative values are cold. Scorchful sets the max temperature at 12,600 and Frostiful sets min temperature at -6,300. Also while I provde hard numbers here, they can basically all be changed in the config

^This is the point I may change to scale the amount of cooling based on wetness percent

Also,

or some Dune-like environmental suit

This is basically the Rehydration Enchantment, which was directly inspired by the Stillsuit. The Stillsuit is very high-tech, which I felt was not Minecraft-y, so I adapted it as a treasure enchantment. This is the explanation I wrote for how it works in the code:

        // REHYDRATION EXPLANATION
        // The Rehydration enchantment builds up a drink whenever the player loses wetness (not body water) to cooling
        // That drink is the same size as a hydrating drink.
        // When the drink is full, the player is given back all the water in the drink as *body* water.
        // However, some of that water is lost, based on the summed level of Rehydration from all pieces.

If you can read code well enough, these are the primary classes that control temperature ticking:

Have a play with the mods and let me know what you think. I've also added the proposed change to this new branch so you can also have a play with that to compare, if you want. You can get the build from the actions Artifacts here.

TheDeathlyCow commented 8 months ago

Just wondering, have you had a chance to play Scorchful since the last discussion? If so, what do you think about the current Dehydration integration? (excluding #40)