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に問題の報告をしようと思う。

GameMaker: Studio2 ティアリング問題再燃

パソコンがもう重くて頻繁に固まったりするようになっていたので、OSをクリーンインストールで入れ直した。

とりあえずgamemaker:studio2も最新版を入れた。

試しにゲームを走らせたら、ゲーム画面にティアリングが生じるようになっていた。

えっ……。

いやな汗が出てきた。

これは大問題だ。

数年前にgamemakerをいじり始めた頃、同じ現象に悩まされていた。

ティアリングとスタッタリング。

重い処理も変な処理もしていない。何もないRoomにオブジェクト数個置いて、キャラを十字キーで動かすだけ。それだけでティアリングとスタッタリングが起こった。

どうやっても解消できなかったのでこれがGamemaker:studioの限界なのだろうか?あるいは自分のPC環境に起因する問題でゲーム側ではどうにもできない問題なのでは?と思っていた。

数か月の間、ゲーム作りあきらめなきゃいけないだろうかと本気で悩んでいた。

そしていつしか解決できていた。それから昨日まではティアリングもスタッタリングも起きてなかった。

なぜかどうやって解決したのかを全く覚えていない。

本当に精神を削られていてつらかったので、記憶が飛んだのかもしれない。

原因を突き止めて自力で解決したのではなく、いろいろやってるうちにいつの間にか解決されたのかもしれない。覚えていない。

当時の作業ノートを探したが、その当時はノートを使っていなかったようだ。

垂直同期をONにすることで解決したんだっけか?そんなことで解決できるなら1日で直ってたはずだ。それに今は垂直同期をONにしている。OFFにしても変わらない。

グラフィックドライバのバージョン?設定?そういうのが原因だとするとゲーム側でできることが無いので困る。

グラフィックドライバを最新にしてみたが変わらない。

GeForceの垂直同期の設定をオンでもオフでもどの設定にしてもティアリングが消えない。

Gamemakerでティアリングやスタッタリングが起こる問題について、原因や解決法に心当たりがある人は是非、教えてください。

  • windowモードの時に発生。フルスクリーンモードの時は目立った現象は起きない。
  • OSはwindows7
  • グラフィックボードはGeForce GTX660 ドライバは現在は381.65

追記
自分の環境での原因をつきとめました!これも読んでください!
【記事】GameMaker: Studio2 ティアリング問題の原因が分かった。

戦闘の重みを上げた

敵1体との戦闘の重みを上げた。

ばったばったとなぎ倒す戦闘から、もうちょっとゆっくり敵1体1体と対峙して戦う形に変えた。

ドラマ性が上がったんではないか。

下の画像はキャラの描き込みのバリエーション。細かすぎて分からないだろうが、右上が現状のもので、他のは上から見下ろした感じを上げて描いた。変えるなら一番下のものがいいんじゃないだろうか。

作業に集中できない。ドット絵が上手くなりたい

作業が進まない、というか今日何をしようかという考えがまとまらないまま一日が終わろうとしている。

なんとなくキャラの描き込み度を上げてみた(左側)。

情報量はまだ上げられるんだな。まだまだいじろうと思えばいじれるな。

ただなんか違う感じもするので、変えないかも。

戦闘にドラマ性を持たせたい

マップの表現を上げたことで、戦闘が相対的に薄っぺらく見えるようになった。そこで1つの願望が膨らんだ。

もっと戦闘を面白くしたい。ドラマ性を持つものにしたい。

戦闘が一方的で連打でごり押せる問題は以前から認識していた。そのバランスはいわゆる「無双」的な気持ちよさに繋げられればそれでいい、という考えでいた。

それを変えたくなった。

もっと駆け引きがある、形勢逆転したり不意打ちしたりフェイントかましあったり、そういうものがある戦闘にしても大丈夫じゃないか?バランス取れるんじゃないかと考え始めた。

戦闘のドラマ性とは何か、ということを自分なりに考えてノートに整理する。それをゲームに作っていく。少しでも。できるだけ。

ゲーム全体の表現力が上がったので戦闘のプレイも密度を上げたい。

いろいろな処理が複雑になり、難しいので自分にうまく作れるかは分からない。やってみた結果、断念するかもしれないけど、やれば少しは良くなると思う。