Google Chromeでバックグラウンドにするとゲームが止まる現象
- Chrome v99以降のアップデートでこの方法は使えなくなりました。ご注意ください。
※ブラウザ版スリザリオのお話です。アプリ版は関係ありません。
※スリザリオ以外のブラウザゲームやウェブアプリなどにも当てはまります。
スリザリオプレイ中にBotを有効化して全画面でYouTubeを開き、流していた曲を変更。
YouTubeを閉じてスリザリオに戻ったら、Botにしていたはずなのに直進してゲームオーバーになっていた。
こんな事ありませんか?
これはChromeのアップデートによって導入されたとある機能が原因です。
Google Chromeに限らず、OperaやSRWare Ironなども同様の現象が発生します。
今回はその機能についてとそれを無効化する方法を解説します。
どんな機能が実装されたのか
Chrome v87以降で「オクルージョントラッキング」というものが導入されました。
オクルージョントラッキングは、ウィンドウの重なりを追跡して他のウィンドウの下に隠れて表示されていないときにページの動作を止めて消費リソースを抑える機能です。
この機能によりChromeの高速化が実現できた反面、代わりにウェブページの動作が止まってしまう不便点が発生していました。
以前はこの不便点を解消できるように、無効化できるフラグが存在していました。
しかし、Chrome v97のアップデートによりこのフラグが削除されてしまいました。
このままではまた以前のように、別ウィンドウを全画面で開いたらゲームが止まってしまいます。
無効化する方法
調べたところ、このフラグを復活させられる別のフラグが導入されたことがわかりました。
そのフラグを利用し、再び「オクルージョントラッキング」の無効化を試みます。
ここではGoogle Chromeでの無効化までの手順を記載しています。
Google Chrome以外のブラウザでも同じような手順で無効化することができます。
- フラグの設定については自己責任です。ここで解説してる項目以外は弄らないようにしましょう!
万が一Chromeの動作がおかしくなったら、フラグ設定をリセットしてください!
1.chrome://flagsを開きます。
[image url="https://res.cloudinary.com/drcw9zvzf/images/v1643824622/1-1/1-1-png?_i=AA" alt="1.chrome://flagsを開きます。"]
2.「Temporarily unexpire M96 flags」を検索します。
[image url="https://slither-io.jp/wp-content/uploads/2022/02/1-2.png" alt="2.「Temporarily unexpire M96 flags」を検索します。"]
3.「Temporarily unexpire M96 flags」の項目を「Enabled」に設定します。
[image url="https://slither-io.jp/wp-content/uploads/2022/02/1-3.png" alt="3.「Temporarily unexpire M96 flags」の項目を「Enabled」に設定します。"]
4.下部に「Relaunch」ボタンが出るので、クリックしてChromeを再起動します。
[image url="https://slither-io.jp/wp-content/uploads/2022/02/1-4.png" alt="4.下部に「Relaunch」ボタンが出るので、クリックしてChromeを再起動します。"]
5.再度chrome://flagsを開きます。
[image url="https://slither-io.jp/wp-content/uploads/2022/02/1-5.png" alt="5.再度chrome://flagsを開きます。"]
6.「Calculate window occlusion on Windows」を検索します。
[image url="https://res.cloudinary.com/drcw9zvzf/images/v1643824615/1-6/1-6-png?_i=AA" alt="6.「Calculate window occlusion on Windows」を検索します。"]
7.「Calculate window occlusion on Windows」の項目を「Disabled」に設定します。
[image url="https://slither-io.jp/wp-content/uploads/2022/02/1-7.png" alt="7.「Calculate window occlusion on Windows」の項目を「Disabled」に設定します。"]
8.再度「Relaunch」ボタンでChromeを再起動します。
[image url="https://res.cloudinary.com/drcw9zvzf/images/v1643824615/1-8/1-8-png?_i=AA" alt="8.再度「Relaunch」ボタンでChromeを再起動します。"]
9.chrome://flagsを開き、「Temporarily unexpire M96 flags」がEnabled、「Calculate window occlusion on Windows」がDisabledになっていれば完了です。
[image url="https://res.cloudinary.com/drcw9zvzf/images/v1643824615/1-9/1-9-png?_i=AA" alt="9.chrome://flagsを開き、「Temporarily unexpire M96 flags」がEnabled、「Calculate window occlusion on Windows」がDisabledになっていれば完了です。"]
これで、無事バックグラウンドにしてもゲームが止まらなくなりました。
今後のChromeのアップデートでこの方法が使えなくなる可能性はありますが、しばらくはこれで大丈夫でしょう。
めでたしめでたし。