Happy tame pufts do not consume enough calories and "starve". (Or: My puft has an eating disorder)

  • Branch: Preview Branch Version: Linux Pending

Taming a puft appears to increase its kcal needs from ~50kcal/cycle (if I understand the wild puft tooltips correctly) to 200kcal/cycle.  The "Glum" state reduces this by 80%, down to 40kcal/cycle.  I'm not sure how many kcal this little guy is taking in, but he's in a cycle of starvation and having about 20kcal in the tank.  Being tame and happy (normally), this disappears quickly and the puft starts "starving".  With 10 cycles left to live if he doesn't eat... he takes in more polluted oxygen a few seconds later, clearing the starvation timer and becoming happy again for another fraction of a minute.  The puft next to it is slowly dropping from 1000kcal.  It's at about 300 after several (I haven't counted) cycles.

I ruled out oxygen density, I think.  At first it was ~800g/m3 (and why is gas pressure measured in terms of mass anyway?), so I pumped in enough to put it as high as 6.9kg/m3.  The puft still "starves".

"Starving" Puft.png

Steps to Reproduce
Tame a puft (that means grooming it). Make it happy (just keep grooming it). Now just wait (it may not even need to be happy).
  • Like 2
  • Thanks 2

User Feedback

Do note that I have tweaked the worldgen files (copies of them, really) to make the map size 512x512 and to increase the geyser count similarly for this map, but that is all.  I would have tested this on a standard world if I knew of a way to set up a ranch and tame a puft without playing through that far.

Supernova IV.sav

Share this comment

Link to comment
Share on other sites

This is really annoying. Pufts are too stupid to breathe and starve in perfectly fine polluted oxygen at 2.5kg pressure. They do usually not die, but the constant warnings are really getting on my nerves.

Share this comment

Link to comment
Share on other sites

This started happening to me today.


Both pufts and dense pufts have been having this problem.  Except the squeaky(at least at the moment).

I am wondering if it is because of the higher lag.  Like they are making an eat action that only lasts a few seconds and only getting around 10 calories when they should be doing it for a long time(I remember seeing them suck for dozens of seconds).




Share this comment

Link to comment
Share on other sites

I am having a similar issue, but I also am noticing my pufts are all stacking in the top right corner of their pens, and their animations are bugging out.  They just sit there and constantly repeat the sucking animation, and sometimes they are just starving and never eating, even when stuck in said animation loop.


It's a very basic 24x4 room, and while they will go to be groomed, and react properly to that AFAIK, they will immediately go back to that corner and starve half the time.  This makes breeding pufts much harder than it otherwise would be.

  • Thanks 1

Share this comment

Link to comment
Share on other sites

I had the issue.  Slowing the game to "Normal" game speed fixed it for a while... Now I need to make it "Slow" for the Puft to eat properly.

My guess is that it's my 200 pacus causing issues. I guess the game engine skip a few update, but don't compensate properly when it catches up.

Share this comment

Link to comment
Share on other sites

This is still occurring on public_testing as of today.

Instead of adding colories as the puft breaths, can we just precalculate it on the frame they breathe and add the calories as UI flavor?  Approach would be as follows:

  1. Puft decides to inhale on this frame
  2. Puft checks an area (a + sized area or 3x3 centered around it, or so forth) for volume of available gas to consume.
  3. Puft decides which gas to consume (Puft Prince will need to make a decision) and how much to consume from each tile.
  4. The gas is deducted from each tile as appropriate, immediately.
  5. The amount to consume (calories) is added to a countdown.
  6. Calories are added to the Puft during the next few frames based on clock time, until the calorie countdown reaches zero.

In this way, the Puft would decide immediately, in one frame, what to consume; it would behave as if it is consuming the mass over the few seconds it's inhaling.

This is not much different than a duplicant holding food and consuming it over several frames, aside from that the Puft cannot drop the food it's holding, so that's one way to implement the mechanic.

This approach guarantees that if the Puft inhales, it consumes the full amount of calories based on the gas tiles surrounding it.  No glitchy behavior from repeated calculations getting dropped by lag or whatnot.  There are more complex approaches, like scanning each tile from which the Puft consumes for other Pufts about to inhale and dividing up the calories to be consumed, but that should only matter if they inhale on the same frame and ma not be important at all.

I'd attach my save file but it's 25,757K.

Share this comment

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now