pmotschmann / Evolve

An incremental game about evolving a civilization
Mozilla Public License 2.0
858 stars 371 forks source link

Accelerated time not working #972

Closed CODExNEAT closed 8 months ago

CODExNEAT commented 1 year ago

I keep the Evolve window open at all times, but overnight I put my PC on "Sleep", which naturally seizes all activity. Once I turn my PC back on I neither have progress nor Accelerated time, something seems to keep it from detecting the offline time when the PC is put to sleep rather than shut down.

menaechmi commented 1 year ago

The wiki does specify that "If you pause the game or close the game window Accelerated Time is awarded", but suspending the PC does neither. On both of these events, the game saves the time at that moment and on game start (unpause, import, tab load) calculates the accelerated time using Date.now() - saved time.

Putting your PC in sleep mode skips both saving the time and any of the game start modes. The nature of sleep also doesn't provide a signal to any running programs on its intentions, either, so there's not really a way to know its happening.

This is to say, I don't think it is likely that putting your PC to sleep would ever yield Accelerated Time. Especially considering that this exact behavior would happen with pretty much any other program - it's kind of the point of sleep mode that your programs are in the exact state they were before the PC slept. I would suggest either pausing the game, closing the tab, or turning your PC off.

CODExNEAT commented 1 year ago

The game could save the current time in frequent intervals and compare the previous save to the new save, so that way it can determine if there is a large gap in time instead of specifically waiting for an exit or entry signal. Other idle games work like this

fredden commented 1 year ago

I would suggest either pausing the game, closing the tab, or turning your PC off.

These sound like great suggestions. I particularly like the last option.

CODExNEAT commented 1 year ago

These sound like great suggestions. I particularly like the last option.

"Sleep" and "Hibernate", which are both affected, are actions the computer will do automatically, especially on Laptops. Instead of throwing shade and telling people to just "turn off the computer lol", you could actually illustrate how to or why not to solve this issue. Like how it could periodically check every two minutes if more than two minutes passed, then give accelerated time accordingly.

Not everyone keeps their PC on the entire day and shuts it down at night, some people, and this might shock you, close their laptop when they go away to do something else.

fredden commented 1 year ago

@KingAbyx you're welcome to open a pull request implementing this feature.

StoneCypher commented 1 year ago

This is to say, I don't think it is likely that putting your PC to sleep would ever yield Accelerated Time.

It would be relatively easy to implement, just by switching the step to checking delta from last recorded time to compute how many steps had happened

StoneCypher commented 1 year ago

@KingAbyx you're welcome to open a pull request implementing this feature.

@fredden - You fixed two typos and hid a scrollbar. You shouldn't be attempting to speak for the repo, or mocking other people who are trying to contribute.

Open source relies on friendly communities. One bad apple can drive away 20 good apples.

StoneCypher commented 1 year ago

@KingAbyx - For the record, I also have this problem, because I sadly have an Alienware laptop, and it has a lot of custom power management stuff in Windows that doesn't work very well, and has a tendency to lose configurations around a Windows patch