CleverRaven / Cataclysm-DDA

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

Should weariness be a stamina recovery multiplier instead of a move reduction #45081

Open Xpyder opened 4 years ago

Xpyder commented 4 years ago

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

Currently Weariness reduces your available moves which works mostly until speed mods or bike riding come into play, and sometimes makes combat weird, especially until you realize why you're so much slower than your speed indicator on [@] indicates.

an example of this: #45064

Describe the solution you'd like

Since this originated from #42343 (which I agree with, it's part of how your body actually regulates your calorie expenditure) and I think calorie expenditure in game actually derives from stamina burned...

I'm trying to decide if it might be better if it was changed to a multiplier that reduces stamina recovered and maybe caps max stamina restored at a partial % blocking out the rest with grey --- so it's more visible to the player that there's a debuff in play,

This would more closely model what actually happens in addition to making it more obvious to the player how much of an effect different levels of tiring out have, especially during long tasks where you have to stop and catch your breath. Though long tasks may need to be audited for stamina expenditure costs.

Describe alternatives you've considered

We could leave it as it is, or blend moves and stamina or maybe something else I haven't considered

Additional context

I-am-Erk commented 4 years ago

See #42343 comments:

It's possible we could later work out a system where the speed you conduct an activity is determined by your stamina, so you do high level activities slower as your stamina drops to keep from getting winded, which would tie this all together really smoothly. For now though, that would add another major variable for balancing, and it should probably be left to a later PR.

Basically, this is a reasonable option for implementation, but it requires having activities draw stamina based on their activity level, which in turn needs a fair bit of infrastructure.

Xpyder commented 4 years ago

makes sense, for some reason I thought they already did. I suppose this should get shelved until activity level of long actions consumes stamina?

I-am-Erk commented 4 years ago

Well, could rewrite the issue to cover the necessary infrastructure, or we could close it and edit that into the weariness issue.

kholat commented 4 years ago

I think this is very good idea!

lcy03406 commented 4 years ago

I thought stamina is for short actions and weariness is for long actions. We can imagine every long action contains many short moves, including "catch breath", so the @ won't die from not manually break the action. I can't think how much stamina should be drained from a some hours long action.

Xpyder commented 4 years ago

I thought stamina is for short actions and weariness is for long actions

I figured they were more like the hunger/full antagonistic relationship (they're separate "containers" working against each other in ways that create interesting complexity while adding purpose), where Weary is meant to help limit daily/weekly calorie expenditure (as IRL) and Stamina is the actual calorie expenditure and affects short term sustain.

Xpyder commented 4 years ago

I can't think how much stamina should be drained from a some hours long action.

Most people get tired from doing long actions IRL. Even studying (like getting exhausted from doing lots of homework in high school/college and not having the energy to make something complicated to eat or clean up the dishes in the sink). I do think that doing joyful stuff that doesn't take energy (like listening to music or reading a Just For Fun book) should be rejuvenating but I don't know how complex the current system is so for now I think just sitting and reading (or doing another low stress activity) should be fine

And to clarify, I think most long actions shouldn't actually Drain stamina to zero unless you're already exhausted. Instead just burning a small amount where normal stamina regen overpowers the drain, but as you get more weary the toll can compound to where it becomes an issue. And of course heavy activity like Chopping Wood should obviously drain a lot.

Tangent to this issue a lot of long actions should be resumable (similar to how crafting is [acknowledging the crafting solution currently is still imperfect]) but that should be a separate issue

Xpyder commented 4 years ago

Well, could rewrite the issue to cover the necessary infrastructure, or we could close it and edit that into the weariness issue.

I would suggest adding it to the larger weariness issue, maybe adding a couple bullet points to make it clear they should get resolved in independent PRs and have dependencies, then once that's logged referencing this issue (in case research needs doing) and closing this one?

Xpyder commented 4 years ago

Oh, I just had an idea related to the weariness recovery:

What if different activity levels drifted you towards a specific weariness level similar to how Focus and Moral works? So if you're very weary, doing a light activity crafting you would recover towards Lightly Weary but wouldn't recover all the way?

Later: Hmm... but we'd still need to think about how balancing the speed adjustment would work. I think this comment is worth some consideration but it's value is presently unclear.

I-am-Erk commented 4 years ago

I thought stamina is for short actions and weariness is for long actions. We can imagine every long action contains many short moves, including "catch breath", so the @ won't die from not manually break the action. I can't think how much stamina should be drained from a some hours long action.

The idea would be to have weariness adjust your stamina recovery, and have long actions burn stamina based on their activity level... but they'd adjust their speed such that they never drain your stamina past, say, 50%. So if your stamina was dropping too quickly, you'd slow down.

The end result would be the same but the effect would be slicker. For example, stimulants that boost your stamina would also mitigate weariness.

Tamiore commented 4 years ago

Before we jump into stamina recovery tinkering, let's maybe address the elephant in the room: Reducing stamina recovery will easily obliterate movement speed.

That is, you would not be able to walk without running out of breath if you get modestly weary.

And that's a huge issue, because it will basically mean that going out with even moderate weariness would be a death sentence, as most zombies you can usually outrun (with a burst of running + walking away once you get some distance) will be able to catch up to you and force a fight. And since you are already likely low on stamina, that's GG more often than not.

While this may not be a huge problem for a mid-game established character ("just don't get weary"), this will be a HUGE issue for new characters, and a crippling issue for new characters for new players (or players not familiar with weariness mechanic). Because this will easily force completely unwinnable scenarios to the effect of "I found a nice empty house outside of the city and went in to craft some gear and rest. In a few hours a few zombies showed up, heralding a horde. Normally, I would just run away, but since my character is already moderately weary, I can't."

I-am-Erk commented 4 years ago

I'd suggest starting by reading the original PR there, which suggests starting with a higher stamina recovery so that it reaches current levels at weary 1-2 or so.

Xpyder commented 4 years ago

That is, you would not be able to walk without running out of breath if you get modestly weary.

That's a good point and needs some consideration.

starting with a higher stamina recovery so that it reaches current levels at weary 1-2 or so.

This is a good idea, I'd also posit that if we go this route we might eventually consider increasing the maximum base stamina you can store and adjusting regen so that when weary while you can't sustain combat indefinitely you can at least fight off a few (as a conservative starting point I'm thinking maybe 3 basic zombies and a couple specials, but very subject to tuning) zeds and run away to a nearby hiding spot/darkness/vehicle. The expectation being that as you get further and more experienced you'll also be facing harder individual fights and can put thought into how to set up a hit and run, or if you're better off luring something hard and going all in on it.

That is, deciding whether we want you to have more max stamina but slower regen for extended but unsustainable fights which demand deeper planning but also allow for longer plans, or if we want to have faster base regen with current max stamina to allow for more forgiving fights if you get caught out.

But that's more of a long term tuning idea and probably won't be where we start

I-am-Erk commented 4 years ago

Well, long term we want rule 1 so that your stamina maximum increases with ongoing exercise. The current default starting level would assume you're a fairly sedentary average american, unless you have a profession that gives you a cardio bonus or take some kind of trait to alter it, but your stamina would improve as you work out.

Xpyder commented 4 years ago

Well, long term we want rule 1 so that your stamina maximum increases with ongoing exercise

ooh, I approve of this. Weary already has a basic BRM built in so I think that might be doable eventually.

I'd also be interested in sustained but semi-permanent buffs to stats based on skill levels and activities (semi-permanent in that you can lose them if you stop practicing over time, but can quickly be brought up to your current cap[based on current skill levels and proficiencies] by practicing them for a while). I think that would encourage more dynamic character progression (and regression) but is more along the lines of the deeper Character Story you mentioned in your "professions + hobbies" post

I-am-Erk commented 4 years ago

I'm not quite sure what you mean by that bit, although I am intrigued. Can you explain in more detail?

Xpyder commented 4 years ago

For a simplified example:

Increasing electronics skill would increase the maximum potential "skill buff" to intelligence like going from a small waterskin to a large one. Gaining a proficiency would likewise increase the maximum size of the buff "container"

but you would have to fill it with activities that require thinking like studying books, crafting recipes you haven't memorized, or making things that advance the skill cap for one of the Int tagged skills

Over time it would drain, but by practicing (reading a book related to say Electronics even if it's too low to level up your actual skill) you could refill the buff

There would also probably be a non-linear fill/drain so you quickly drop the first point but are slow to drop the last point.

And to compensate the raw (base) stat increases at the start would be a lot more expensive since the majority of your increases would be expected to come from your skills and proficiencies (as represented by your hobbies)

I-am-Erk commented 4 years ago

Ah I see. That's not super dissimilar from some of the things we've considered for skill gain.

I am not yet convinced that intelligence is something that should be increasable through practice. However for the other proficiencies something along those lines is probably what we will wind up with. personally I imagine your 'base' stat being the level you'll drop to if you stop doing things to keep up, and then you get buffs on top of that.

Xpyder commented 4 years ago

That's basically right.

And I thought intelligence was the most obvious candidate, but maybe not so for other people so I'll explain a bit

As you study and learn, you start to make more and more connections between things that seem disparate at first glance, which in turn makes it easier to absorb knowledge in other areas; both as you get better at learning, and because it gets easier to find those subtle connections to things you already know.

And while access that knowledge rusts over time, if you've learned something before then you're much faster getting back to your previous level (or something close to it)

Tamiore commented 4 years ago

Somewhat offtopic, but: Do we have an issue for weariness-related UI (re)design yet?

If not, would you prefer me to open a new issue or list things here first?

I-am-Erk commented 4 years ago

Not that I've seen. Maybe do a quick search and post one if not.

stale[bot] commented 3 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.

actual-nh commented 3 years ago

This has some definite possibilities - although it really depends on exactly what stamina and weariness are supposed to be. Blood glucose vs stored glycogen levels? Regarding the original Weariness PR, some of the elements proposed need further implementation (like less-sleep mutations helping and some Weariness recovery possible at LIGHT_EXERCISE... although I would make the latter dependent not on Weariness level, but stamina level). I made a comment on the Weariness PR that may actually better fit here:

I am reminded of the Endurance setup in the (paper-and-pencil RPG) Hero System (best-known for Champions). They had a quite detailed system for Endurance expended from moment to moment, and also a Recovery stat that regularly (or upon resting) gave you back some Endurance (every 12 seconds, technically). Optionally - usually for non-supertype characters - there was also a Long-Term Endurance system. This looked at the ratio between your Endurance expenditure and your Recovery. If it was more than half or so, you started accruing Long-Term Endurance expenditure, which in turn limited your maximum (short-term) Endurance. The Recovery stat also dictated how fast you could recover Long-Term Endurance.

Of the above, I like the idea of getting wearier based on how much of your body's/mind's recovery capacity you've been expending - how well you're pacing yourself.

A couple of other factors in this that may be of interest:

Combining the above two suggests allowing not slowing down (or keeping up Stamina expenditure, depending on how one wanted to make it work) even if Weariness was getting in the way - but drop Morale, to represent pushing yourself through it.

stale[bot] commented 3 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.

actual-nh commented 3 years ago

Some further thoughts:

stale[bot] commented 2 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.

I-am-Erk commented 2 years ago

This remains important and I'm going to add it to the list, although I don't think it's reasonable to do it for 0.G now due to the potential balance hazards.