GameMaker: Studio2 ティアリング問題の原因が分かった。

昨日この問題が発生して気持ちが谷底まで落ちてしまったものの、ちょっとした幸運が重なって原因(あるいは発生条件)が分かったので記しておく。

自分の中の整理のためにぐだぐだ書くけど結論だけ見たい人は

【結論を見る 】  ←これをクリックして読んでください。

発生前の状況:Youtube動画がおかしい

まずこの問題が再発する前に、Windows7を入れ直してChromeをインストールしてYoutubeを見るなどしていた。

Youtube動画を見たらちょっとティアリングが起きている。どの動画でも起きている。

「たぶんグラフィックドライバをまだ更新してないから、ドライバ更新したら直るかな」と思いつつちょっと調べたら、

「Chromeの『 ハードウェアアクセラレーションが使用可能な場合は使用する』 が悪さをして表示がおかしくなるよ」

というような記事を見つけた。で、Chrome設定でこれをオフにしたところ、Youtube動画のティアリングは綺麗に解消された。よかったよかった。

ティアリング再発

Gamemakerをインストールして、ゲームを動かしてみた。ここでティアリングを確認。前の記事に書いたとおり。

グラフィックドライバを更新

変化なし。ダメだった。

Gamemakerの垂直同期設定を変える

オン・オフどちらにしてもダメだった。

runtimeバージョンを下げてみる

これもダメだった。

いろいろあがいた

他にもいろいろ設定変えたりして試したがダメだった。

フルスクリーンモードでは発生しない

gamemakerフォーラム関係を調べると、ティアリングが起きてるのはフルスクリーンモードの時のようだ。自分の場合は逆で、フルスクリーンモードでは発生しない。ウィンドウモードのときで発生する。

これの意味するところは・・・?分からない。

ブラウザウィンドウ上での描画処理がおかしい

ブラウザのインプットフォームなどでIMEで入力している時、変換候補リストの残像が残って消えない現象を確認。表示周りが全部おかしいのか、Chromeだけおかしいのか、分からない。おかしいことがぼろぼろ見つかってきて、何がどう悪いのか理解がおっつかなくなってきた。

ブラウザウィンドウ上部の表示が荒れる

新しいタブを開いてロードしているタイミングで、表示がおかしくなる。簡単に言うと、半透明なはずが不透明なベタ塗り状態になる。

あれ?ウィンドウって半透明のはずだよな?

ブラウザの上でウィンドウを動かすと、残像が残る

やっぱりブラウザ?ウィンドウ周りがおかしいな?

そういえばテーマって今使ってるっけ?

ここまできて、windowsのテーマをちょっと確認したくなった。なんとなく。

動画を録画する時にAeroが重いので切るという処理がされるが、そういうのが関係あるのか無いのか、たぶん関係ないだろうな、でもAeroの設定がどこにあるかだけ確認したいな、と思った。

ベーシックテーマを使っていた

Aeroは「Aeroテーマ」を使っていると有効になる機能らしい。Aeroテーマではなく、「ベーシックテーマ」を使っていることが分かった。それでウィンドウの枠が半透明じゃなかったのか。

もしや?テーマが原因?

まさかね、と思いつつ、Aeroテーマを選択して、ゲームをもう一度動かしてみた。

ティアリングは起きない。問題ない。

テーマ戻してみよ?

もう一度「ベーシックテーマ」を選んで試したら、ティアリングが発生した。

もう一回テーマ変えてみよ?

Aeroテーマでもう一度試した。問題は起こらない。

これだろ(´・ω・`)

Chrome設定は関係あったのか?

もしかしてYoutubeのティアリングもこれが原因だったんじゃ?と思って、Chromeのハードウェアアクセラレーションをもう一度オンにして、動画を見た。

ティアリングは発生しない。問題ない。

今回のティアリングについては、 ハードウェアアクセラレーションは関係ないっぽい。

これでYoutubeのティアリングが解決されたことは、ちょっとした罠として働いた。でもこの罠に深くはまらずに気づけたのはラッキーだった。

ティアリング発生条件のまとめ

さっと調べただけなので詳しく調べるとまた変わるかもしれないがこういう関係になった。

結論:自分のPCではベーシックテーマを使っているとティアリングが発生する。

これが自分のPCだけで起きることなのかどのPCでも起きることなのかは不明。

これはgamemaker側で制御したり、あらかじめ対策しておくことはできないので、特定の環境ではティアリング問題が発生すると言えるだろう。買ってくれた人にはごめんなさいするしかない。

それは好ましいことではないのでYoYoGamesになんとかしてもらいたい。

一応YoYoGamesに問題の報告をしようと思う。

この記事をシェアする