Cookie Clicker

Cookie Clicker

Nicht genug Bewertungen
最小化するとゲームが止まってしまう不具合の直し方と原因
Von snowcat
このガイドではCookieClickerを最小化するとゲームが止まってしまう不具合の直し方と原因を解説しています。
(This guide contains instructions on how to fix the problem of pausing the game when it is minimized or covered.)
   
Preis verleihen
Favorisieren
Favorisiert
Entfernen
はじめに
このガイドでは、CookieClickerを最小化する (または他のウィンドウが完全に重なる) とゲームが止まってしまう不具合の直し方と原因を解説しています。

英語版の記事はこちら
The English version of this guide can be found here.

https://steamcommunity.com/sharedfiles/filedetails/?id=2701779641

追記(2024.4.19): この不具合を修正するModをリリースしました!
https://steamcommunity.com/sharedfiles/filedetails/?id=3226515778_
手順
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