見出し画像

【ゲームにおける遅延問題について】知識と可能な解決策

この記事はゲームを遊ぶ際に発生する入力遅延・操作遅延に対する知識と、簡単な設定や機器選択だけで軽減できる方法がいくつかあるのでそれらを共有するために書き残しておきます。
主にPCでゲームを遊ぶ時の情報になります。

自分は昔からPCゲームをよく遊びますが、その際に遅延を感じるゲームが非常に苦手で昔からできる限り解決しようと色々調べて環境を作る努力をしてきました。
その過程で理解した知識なので基本的に経験に基づくもので、詳しい内部的な処理や原理の話はある程度ざっくりになります。
経験則からの記事なので、多少主観的な話も含まれますがご了承ください。

※『高リフレッシュレートの液晶モニタは遅延が少ない???』の項目を新規に書き足しました(2021/12/06)


垂直同期(Vsync)は必ず切る

これはPCゲーム全てに対して適用できます。
『垂直同期は絶対に切る!オフに設定!』
脳死でOFFで良いです。基本的に。
垂直同期という設定項目を見かけたら絶対に真っ先に切りましょう。
PCゲーム(windows)の遅延における諸悪の根源と言っても過言ではないものです。絶対に許してはなりません。

垂直同期とは?

垂直同期(Vsync)というものは簡単に言うと、60FPSのゲームなら60FPSピッタリで画像を出力するために内部で一時的に画像をバッファリングしておく機能です。
処理が一瞬遅れたり早まったりして、出力が59.9FPSや60.1FPSになったりすると描画遅れによるティアリングという走査線が走ることがあるのでそれを防ぐものです。
これを防ぐために内部に1フレーム~3フレーム分くらいバッファで溜め込んだ後綺麗に出力しますというものです。
動画だけ見るシーンなどではこちらのほうが合理的でしょうが、ゲームでこれをされると純粋にバッファ分だけ画像が遅く表示されるので、これだけで描画3F遅延なんて状況が生まれます。やばいです。

昔の処理能力が遅いPCなどではガクガクに表示されてしまう等問題も発生し得るので、そういった予防も含めてONが標準になっているゲームが多数ありますが、今どき問題になるケースはかなり稀で、アクション性の高いゲームでは完全にデメリットしかありません
絶対にオフにしましょう。


デュアルディスプレイ使用者はメインモニタ側で遊ぶ

こちらは気付いている人が非常に少ないと思われる事象です。
windowsのデュアルディスプレイ(マルチモニタ)機能を使用しているユーザーが現在ではほとんどだと思われますが、サブモニタ側では描画遅延が発生します
どういった原理かは不明ですが発生します。
(環境依存かもしれないので全ての環境で起きるかは分かりません)

基本的にゲームは起動するとメイン側に表示されるものがほとんどなのでそのまま遊べば問題ありませんが、ウィンドウモードでサブ側のモニタに持っていき遊ぶという人もいると思います。
もしくはブラウザをサブ側で表示していて、ブラウザゲームなどを遊ぶ場合に適用されます。

windowsのディスプレイ設定で『これをメインディスプレイにする』というチェックが入っている側の画面で遊びましょう。

デスクトップ右クリック→ディスプレイ設定


サブモニタ側が描画遅延していることが一応体感で確認できるものとしては、ブラウザゲームの反射神経テスト等をメイン・サブのモニタ両方で何度かやってみると実感できると思います。
モニタ自体の遅延(これは別項目に記述します)もあるので、その差も念頭においてください。

↑何度か繰り返すと自分なりに安定した値が出ると思うので、メインモニタ・サブモニタ(チェック入り切りで切り替えて)比べてみてください。


液晶モニタの『応答速度』と『描画遅延』は完全に別物

これは非常に勘違いが多いところだと思うので注意してください。
液晶モニタのスペック表やゲーム向け液晶のセールスポイントとして、応答速度○msと書かれていますが、遅延が○msなのではありません

液晶スペックの『応答速度』とは

応答速度というのは、液晶の色がA→Bに変わる時間を測定したものです。
GtG(Glay to Glayのこと)と書かれていたりするのは、白→黒に変わるより灰色→灰色(中間色)に変わる時間のほうが少し多くかかるのであえて記述してあるわけです。

この応答速度が良いと、つまり画面で連続的に切り替わる画像同士がくっきりと表示されるので、いわゆる「残像感」が少なくなります。
もちろんこのスペックが高い方がクッキリした画面になるのでアクション性の高いゲームでは重要な指標です。
しかし『描画遅延』とは全く別物なのです。

液晶モニタにおける『描画遅延』とは

モニタスペックの応答速度が例えば5msだったとして、60FPSのゲームで1F=約16msなので、0.3Fくらいしか遅延が無い?と勘違いする人が結構居るかも知れませんが、全く違うので注意してください

ゲーム時の画面の描画は以下の3段階で行われます。

①絵をA→Bへ切り替えろという指示がPCから来る(プレイヤーのキー入力)
②モニタに信号が伝わって、画面を切り替えようと働きかける
③画像がA→Bへと切り替わる(ここが応答速度)

③の時間のみが応答速度としてスペックに現れていますが、実際に最も時間がかかるのが②であり、②と③を含めた時間が描画遅延として現れます。
②ではモニタによっては高画質化処理などを内部で挟むものもあるので、その処理による描画遅れも発生します(いわゆるスルーモードというのはこの処理を行わないようにするというもの)
最近のゲーミングモニタ等の液晶はここも拘られているため比較的高速ですが、そうでない液晶は普通に2F・3F遅延がここで発生していたりします。


遅延の少ない液晶モニタの選択

これはカタログスペックで測定されないため明確に商品別の違いがあるかは分かりませんが、液晶パネルの種類で『TN』を選ぶのが一番良いとされています。

・TN液晶:視野角が狭いので画面の隅の色が変わると言われている
・IPS液晶:画面が均一で綺麗に見えると言われている

ゲーミングモニタでもIPS液晶が多くあり、画面が綺麗&応答速度が速いという触れ込みの商品が多くありますが、前述の通り応答速度と遅延は別物であり、IPS液晶はTN液晶よりも仕組み上必ず遅くなります

中途半端に綺麗さも欲しいなぁなどと思わずに、割り切ってTN液晶を買ったほうが遅延を抑えてゲームが遊べます。(自分が通った道です)
確かに視野角は若干気になりますが、アクション性の高いゲームではプレイ中そこが気になることはほぼ無いです。
(縦画面にして縦STGを遊びたい場合等はTNの変色量は流石に無視できないかも?なのでその点は考慮してください)


高リフレッシュレートの液晶モニタは遅延が少ない???

※この項目は記事公開後に新設しました(2021/12/06)

60FPS固定のゲームを、60Hzのモニタで遊ぶのと、120Hz以上の出力が可能なモニタで遊ぶのとでは、後者のほうが遅延が少ないという情報があります。

こちらの記事、遅延について多角的に非常に詳しく調査されて書かれています。
本トピックに関わる記述は『ハイリフレッシュレート環境なら遅延は減るのか』でされています。

ざっくり説明すると、ゲームが60FPS固定(1F=16msとする)で動作するものである場合、

・60Hzモニタ→16msごとに送られてくる画像を16msで出力する
・120Hzモニタ→16msごとに送られてくる画像を8msで出力した後、同じ画像をもう一度8ms後に出力する

という処理になるため、元々16ms間隔で表示される予定の画像が、予定よりも早く前半8msで表示できてしまうので、120Hzのモニタではいわゆる半フレーム早く表示される、という現象が起きるらしいです。
また、垂直同期の項でも語ったティアリングという現象が目立たなくなる(発生しても半フレで消える)という利点もあります。

この話は液晶モニタの表示性能と、ビデオカードが高速に動作することが組み合わさったことによる恩恵なので、液晶モニタ自体が持つ遅延とはまた更に別の部分の話であり、技術の進歩で描画遅延を昔あり得た姿より更に減らすことが可能になった、という驚きの話です。
(この項目で語った話は自分も元々全く知らず、この記事の公開後に情報を頂きました)


CRTモニタと最近のゲーミング液晶について

遅延マニア(?)の方にはお馴染みの最強のロストテクノロジー、CRTモニタですが自分もつい最近までCRTを使い続けて、ゲーミング液晶に乗り換えた雑感を書きます。

CRTは確かに比較測定ソフトでも圧倒的な低遅延と応答速度なのですが、問題はモニタの輝度になってきます。
ゲームはプレイヤーが目で情報を見て、そして指に伝え入力を行います。
目で情報を拾うという人間の応答時間のところで、明るくクッキリと表示される現代の液晶モニタは非常に優れています。

CRTは輝度の性能面が現代に比べて低いというのと、新品で製品が作られているものも無いため、10年20年という経年劣化による色滲みが発生しているものも少なくないです。
そうなると応答速度がどれだけ良くても、絵がぼやけているので実質応答速度が低い液晶と変わらないということになります。

このため、描画遅延・応答速度というゲームを遊ぶ際に気にするパラメータはCRTが最強であるというのは自分も思うところですが、現実に現代でゲームを遊ぶ際は、性能の良いTN液晶のゲーミングモニタのほうが結果的にレスポンスが良い、という結論を自分なりに出すに至りました。

余談ですが、ゲーミング液晶モニタにおける120Hz駆動で黒フレーム挿入による実質60Hz表示を行うことにより、見かけ上の残像感を更に減らせるという機能があります。
これは確かに理屈上ではそうなのですが、画面の明るさがかなり落ちるので、上記で語ったように人間側の認識による応答が遅れることになって実際あまり芳しくなかったため、やはり輝度は重要だなと思った次第です。


ゲームコントローラーによる遅延

今度は手元からゲーム機(PC)に信号が伝わるまでの時間による遅延です。
これは昨今のPCで使用するコントローラーではおそらく問題ないと思いますが、昔はここで遅延を持っているものもありました。

無線通信によるコントローラーはこの遅延が多いと言われます。
が、仕様がどうなっているのか分かりませんが、最近の家庭用ゲーム機では無線のほうが遅延が微妙に少ないといった話も聞きます。
正直家庭用ゲーム機に対しては知識不足なので、ここに関してはよく分からないところです。
参考資料を貼っておくに留めます。


変換器(コンバーター)による遅延

昔のゲーム機のコントローラーを最新ゲーム機で使えるようにしたり、PCで使えるようにしたりする変換器です。
非常にありがたい便利な商品で、いくつかのメーカーの品がありますが、基本的に間に何か処理を挟むものなので、ここでも操作遅延は少なからず発生します
商品レビューで体感遅延なし、といった良い評価もたくさん見受けますが、遊ぶゲームによって遅延が分かりやすかったり特に気にならなかったりの違いがあるのでそういう評価も分かります。
とりあえず、できるだけ間に何も挟まないのが理想的です。


キーボード割り当てツールを使う場合の注意点

有名なソフトウェアではJoyToKeyと言えば分かる人は多いでしょうか。
ゲームパッド非対応のPCゲームを遊ぶ際に非常に便利でありがたいソフトウェアですが、これらもソフト的にポーリングレート(サンプリング間隔?)が設定されているため、その設定が遅いと実質操作遅延が発生します。
設定で変えられると思うので、設定項目を一度確認してみると良いです。


ゲームそのもので遅延を持っている場合

これは対処のしようがありませんが、知識として記します。
ゲーム開発者側の方にプログラミングの時点で頑張ってもらうしかありませんが、なかなか難しい点だとは理解しています。
アーケードゲームの移植作品で元より移植版の方が遅延が大きい(逆もある)作品も結構あるので、結構色々言われたり何だったり。

Unity製のゲームについて

一つ個人的によく遭遇するゲームそのものの遅延問題なのですが、Unityというゲームエンジンで作られたゲームに多くあるものです。
自分は同人ゲーム(個人制作インディーゲーム)をよく遊ぶため、結構嫌というほど経験があるのですが、これで作られたゲームの大半が操作遅延を標準で持って居ることが多く、ロゴを見ただけで身構えてしまう程になっています。

以前それについて、原因はどうやら標準で用意されているコントローラーの入力関数のせいではないかという方のツイートを見たので乗せておきます。
自分はゲームプログラマーではないのでこれの真偽の程は分かりません。

十字キーのようなデジタル的なオンオフスイッチの取得にもアナログ感度を設けてしまっているので、内部的にわざわざ変化量を反映して遅延として現れている、というもの。
3Dゲームを作ることを標準としている関数なので2Dゲームで使うと余計な処理が挟まるだけ、ということです。

この処理で解決できるのであれば、2Dゲーム制作者の方全てに届いて欲しい情報です。


参考リンク

ここまでの記事は自分の経験の中で得た遅延の知識と、その中で取れる解決方法を主に語りました。
他にも遅延について詳しく書いてあるページがあるので、こちらの方のページも見るともっと深いところが分かるかもしれません。



以上、ざっくりと自分の経験の中で得た情報を書き出しました。
知らない人は知らないまま、遅延があるのが標準だと思ったままゲームを遊んでいる人もいると思います。
少しの設定や知識でよりスッキリと、より楽しくゲームを遊べる環境が整えられるのであればそれに越したことはありません。
誰かの助けになれば幸いです。



記事がどこかの誰かの役に立っていれば幸いです。