はじめに
このガイドでは、CookieClickerを最小化する (または他のウィンドウが完全に重なる) とゲームが止まってしまう不具合の直し方と原因を解説しています。
英語版の記事はこちら
The English version of this guide can be found here.
https://steamcommunity.com/sharedfiles/filedetails/?id=2701779641
手順
1. 以下のファイルを開きます。
Steam\steamapps\common\Cookie Clicker\resources\app\start.js
2. 画像のコードを探します。
2021/12/31時点では36行目にあります。
3. webPreferencesプロパティの先頭に以下のコードを追加します。
("false"の後ろのカンマも忘れずに!)
backgroundThrottling: false,
以下の画像のようになっていれば問題ありません。
保存後、CookieClickerを再起動することで、問題なく動作するようになるはずです。
不具合の原因
この不具合の原因はElectronのbackgroundThrottling (*1) によるもので、これがONになっているとバックグラウンドでの実行時にタイマー (setTimeoutやsetIntervalなど) が抑制されてしまいます。
具体的にはsetTimeoutが1秒間に最高1回、setIntervalが1分間に最高1回に制限されていました。(自身が検証した限りでは)
このタイマー (setTimeout) がゲームのメインロジックに使用されているため、backgroundThrottlingの影響を受けて1秒間に1回しか実行できなくなってしまった結果、ゲームが止まってしまう (極端に遅くなってしまう) という不具合が起こっていました。
なお、ドキュメントでは
If backgroundThrottling is disabled, the visibility state will remain visible even if the window is minimized, occluded, or hidden.と記載されています (*2) が、レンダラプロセスではvisibilityがvisibleで固定されることはなく、これまで通りEventListenerで変化を受け取れることができ、バックグラウンド時はCPU使用率が下がっていることを確認出来ているため、backgroundThrottlingをオフにすることによるパフォーマンス上の問題はないかと思われます。
*1: https://www.electronjs.org/docs/latest/api/browser-window#class-browserwindow
options -> webPreferences
*2: https://www.electronjs.org/docs/latest/api/browser-window#page-visibility
Source: https://steamcommunity.com/sharedfiles/filedetails/?id=2701810314
More Cookie Clicker guilds
- All Guilds
- HOW TO CLICK COOKIE!?!?!???
- Save 100%, todos as conquistas, upgrades e prestiges V2.052
- The Definitive console command guide
- (endgame)
- How to click a cookie(ultimate guide)
- All achievements 1 click
- how to play
- How To Click The Cookie
- CookieAssistant
- HOW TO OPEN THE GAME