All the factors you mentioned are already functional in the normal game loop. From a feasibility standpoint, these systems could be extracted into helper methods and invoked by the scheduler heap.
That said, I understand your concern. The scheduler would exist solely for offline progress and could be tricky to maintain.
In other idle games, I’ve seen three approaches to handle offline progress:
1. When the game is online, we can use circular array to log and calculate the avg income in the lase ten minute. This process should be reset at anytime any resouce income is negative. For offline progess, we can have (highest avg income * offline time). This is not prefect but much better than nothing.
2. If the game doesn’t rely on async processes, it’s possible to separate animation from game logic. By disabling animation updates, the core business logic could run at thousands of ticks per second. In practice, spending one real minute to simulate several offline hours is generally acceptable to players
3. Make offline progresses a consumable reasource. Consuming x OfflineSeconds could temporarily speed up the game by (x+1)*100% for one second. This makes offline time a meaningful and controllable resource, while still fitting the game’s design constraints.







