-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Eliminate "Peckish" #39760
Eliminate "Peckish" #39760
Conversation
} else if( ( stomach.time_since_ate() > 90_minutes && contains < cap / 8 && recently_ate ) || | ||
( just_ate && contains > 0_ml && contains < cap * 3 / 8 ) ) { | ||
hunger_string = _( "Peckish" ); | ||
hunger_color = c_dark_gray; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably better to merge the branch condition into the next branch, otherwise people may see "Hungry/Very Hungry" when they would have see "Peckish" before this change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I carefully analyzed that, and that's also why I outlined the testing I did.
As far as I can tell, "Peckish" only ever kicked in instead of no message, so now it should just go to no message as intended. Also this logic had gotten significantly over-complicated.
If you're hungry and start eating, you should still see hungry until either 15 minutes have passed OR you reach 3 / 8 stomach fullness.
If you're full and passing time as your stomach empties out, it should go from "Sated" to no message, then to Hungry.
If you're hungry and eat a small snack, it should go from hungry to no message and back to hungry, unless the snack is so small that your stomach empties out within 15 minutes, in which case it never budges from hungry.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As far as I can tell, "Peckish" only ever kicked in instead of no message
If just_ate
is true, "Peckish" may kick in but no message may not. For example, if the stomach content is between 1/8 and 3/8, and time since last ate is larger than 0.25 hrs, then no hunger message is displayed. If at this time the player eats something small (such as a pill of aspirin?), then time since last ate becomes 0 and stomach content is still below 3/8. Before this change "Peckish" would have been displayed, and after this change "Hungry" would be displayed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Going from no message to "peckish" when you eat and going from no message to "hungry" when you eat are both bugs, so restoring the old behaviour isn't a fix.
The only pertinent part of that logic is "just ate", everything else is redundant. The problem is, if we don't exclude "just ate" from the no message case, then "hungry" will always disappear immediately upon you eating anything, which is most likely going to make people think "eat one thing and then stop" is what the game wants them to do.
I can't see any way to resolve this without overhauling the whole thing, the scenario of "eating a tic-tack when your stomach is almost empty makes the game say you're hungry" is unintended, but it's the least bad alternative I can see, and it's no worse than the status quo.
Last August, I planned to deal with the matter, but for many reasons, I stayed at home without a computer until I came back last week. |
Summary
SUMMARY: None
Purpose of change
People frequently report confusion around the "Peckish" message being displayed as a hunger signal, either linked to counterproductive behaviour such as overeating or just eroding confidence in feedback.
Describe the solution
Simply display nothing, the absence of an explicit hunger or satiety message means "I could eat, but don't need to".
Describe alternatives you've considered
There have been a huge number of alternatives proposed, but this is the simplest and most direct that doesn't also make things inaccurate.
Something I want to do in the future is to essentially turn this into a utility curve by simply combining stomach contents and time since ate and overall calorie load to generate a hunger score, and reporting what threshold that is at.
Testing
Have a character wait until hungry, then eat something tiny, then wait about 15 minutes, after 15 minutes it should toggle from "Hungry" to no message. Wait some more and it should toggle back to "Hungry". (It might toggle back after 15 minutes depending on digestion speed)
Start with a hungry character, eat a significant meal, the message should toggle directly from "Hungry" to "Full".
Have a character at "Engorged", then wait for 3 hours. It should toggle from "Engorged" to "Sated" to no message to "Hungry".