自己表現しつつ英語を勉強 Express Myself And Study English

ゲーム、プログラム技術、スッタニパータについて日本語と英語で書いていこうというブログ About games, programming, and Buddhism written in English and Japanese

なぜ240Hzモニタが必要か、あるいはなぜ「周期的ラグ」が発生するか Why We Need 240Hz Monitors Or What Causes "Input Lag Cycle"

「なぜ240Hzモニタが必要なのか」と「なぜ周期的ラグが発生するか」は無関係に見えますが、どちらも「オーバーキューイング」が原因です。

Why we need 240Hz monitors and What causes "input lag cycle" look irelevant, but "over-queuing" causes both.

 

オーバーキューイングとは、V-Syncをオンにしたとき、モニタのリフレッシュレートより高いfpsが出ていると、ラグが発生する現象です。

Over-queuing increases input lag when your framerate surpasses the refresh rate of your monitor and v-sync is on.

 

G-Sync 101からグラフを引用します。I quote "G-SYNC 101."

G-SYNC 101: G-SYNC Ceiling vs. FPS Limit | Blur Busters

 

https://www.blurbusters.com/wp-content/uploads/2017/06/blur-busters-gsync-101-gsync-ceiling-vs-fps-limit-60Hz.png

60Hzモニタで60フレーム出ているとラグが凄まじく増加するのが確認できると思います。これを秒間59フレームに制限するとラグが劇的に減少します。その差はおよそ2.5フレームです。

The lag dramatically increases on "60 fps limit" and decreases on "59 fps limit." The difference is about 2.5 frames.

 

G-Syncだから発生する現象に見えるかもしれませんが、G-Syncでない場合も同じようになります。ただ0.5フレームほど遅延が増えます。

G-Sync is not the cause. You can get the decreased lag on G-Sync off. (But there's 0.5 frame difference)

https://www.blurbusters.com/wp-content/uploads/2017/06/blur-busters-gsync-101-gsync-vs-vsync-with-fps-limit-60Hz.png

 

240Hzモニタを使っても同じ現象が起きますが、240Hzゆえラグは非常に少なくなります。

240Hz goes in the same way but the lag is super small because of the high refresh rate.

 

https://www.blurbusters.com/wp-content/uploads/2017/06/blur-busters-gsync-101-gsync-ceiling-vs-fps-limit-240Hz.png

このメカニズムを解説しますと、フレームレートがリフレッシュレートを超えている場合、描画済みのフレームを2フレーム溜め込もうとします。これによって描画が間に合わない時のフレーム落ちを避けることが出来るわけですが、当然2フレーム分のラグが発生します。これがオーバーキューイングです(キューイングとは行列に並んでいる状態のことで、フレームが待ち行列に並んで渋滞しているような状態を表しています)。

When your frame rate surpasses the refresh rate, the system stores two completed frames. It causes two frames lag but it could avoid frame drops. It's called "over-queuing." *1

 

 

対して、フレームレートが足りない場合は、出来上がったフレームはすぐ描画されます。なのでラグが少なくなります。

When your frame rate is inadequate, the completed frames are shown immediately after they are completed, so it decreases the lag. 

 

なのでラグを減らしたい場合はフレームレートを制限する必要があります。フレームレートをゲーム内で制限できれば良いのですが、そういう設定はないことが多いです。強制的にフレームレートを制限するツールもあるのですが、それ自体がラグの原因になります。

You need to limit your frame rate if you want to decrease the lag. In-game frame limitters are considered to be the best, but most games don't have them, and external frame limitters cause the lag unfortunatelly.

https://www.blurbusters.com/wp-content/uploads/2017/06/blur-busters-gsync-101-gsync-ingame-vs-rtss.png

なので私は240Hzモニタをオススメします。ほとんどのゲームでは、CPUがボトルネックとなり、240fpsも出ないので、自然にFPSがリフレッシュレート以下に制限され、ラグが解消されます。

I recommend 240Hz monitors because most games can't achieve 240fps. It naturally decrease the lag.

 

 フレームレートがモニタのリフレッシュレートに届かないというのは、多くの場合、フレームが落ちることを意味します。落ちたフレームに重要なビジュアルキュー(敵が現れたとか、スタン値が増えたとか)があった場合、それを確認するのが1フレーム遅れることになります。

Traditionally, inadequate frame rate causes frame drops. If a dropped frame contains a visual cue, your reaction delays 1 frame.

 

なのでG-Sync、FreeSyncのようなリフレッシュレートの変更が可能なモニタをオススメします。G-Syncのようなモニタでは、秒間59フレーム描画される場合、自動的に59Hzに下がるので、フレームドロップが起きません。

So I also recommend variable refresh rate monitors(G-Sync/FreeSync.) It doesn't drop frames.

 

また、G-Sync、FreeSyncは可変インプットラグを防ぐ鍵になる技術です。

G-Sync/FreeSync also prevents "variable input lag."

 

画面描画とリフレッシュレートが一致していないとき、必ずインプットラグは可変になります。

Input lag always varies when a game is not synced with the refresh rate.

 

最もラグが少ないのはV-Sync Offで画面描画を最大まで早くすることと考えられますが、ティアリングが発生して新しいフレームと古いフレームが混在することになります。

The least lag we can get could come from V-Sync off, but an old frame is mixed into a current frame.

http://support.dospara.co.jp/faq/08398/001.png

↑ティアリング(http://faq3.dospara.co.jp/faq/show/8398?category_id=1&site_domain=default)

 

スタン値バーのようなビジュアルキューが古いフレームにあって映らない場合、反応は1フレーム遅れ、新しいフレームにあれば遅れません。これはある種の可変インプットラグをもたらします。

If the lastest frame doesn't contain a visual cue, your reaction delays 1 frame. It causes a kind of a variable input lag.

 

伝統的なVSyncでは、フレームの描画が終わると、そのフレームが描画されるまでゲームの動作は止まっていました。これは理想的には1/60秒ごとに1フレームを処理し、インプットラグは変化しないことを意味します。

In traditional VSync implementations, games wait for the refresh of monitors so ideally all the frames take 1/60 second and are shown 60 times a second. They are all even and there's no variable input lag.

 

現在のVSyncの実装でも基本的には同じで、ただフレームレートがリフレッシュレートに届かない場合は休みなく頑張るだけですが、画面のリフレッシュに合わせて休むのをやめてしまったゲームもあります。画面のリフレッシュに合わせないとラグは可変になります。

In current VSync implementations, if the fps couldn't achieve the refresh rate, games wouldn't wait. And some games completely stop waiting for the refresh. It causes the variable lag.

 

ゲームが61fps出ているとしましょう。60fpsより1フレーム早いので、1フレーム描画する間に1/60フレームほどフレームが早まります。1秒経つ間に1フレーム分早まり、1フレームのラグが生じます。2秒たつと2フレーム溜まるので、システムはこれ以上のフレームを確保しなくなります。その時システムは待つ必要があるわけですが、たとえばここで1/60秒待つとすると、そこで1フレーム分のラグが解消され、また1フレーム分ラグが溜まっていく・・・という繰り返しが起こり、周期的ラグが発生します。

Let's say a game has 61fps. The system stores a frame in 1 seconds as a lag increases to 1 frame. Eventually the system stores frames to it's limit and it must wait. If the system waits 1/60 second, it causes "input lag cycle."

https://cdn-images-1.medium.com/max/800/1*6-GbKNLETp5Vx9NlcswzRQ.png

Input Lag PS4 Results – Loïc *WydD* Petit – Medium

 

余談ですが、この表では1フレーム以上の周期的ラグが発生しています。おそらく1フレーム待ってから、その後起きるモニタのリフレッシュを待っているのではないかと思います。1フレーム待たず、モニタのリフレッシュを待って即動くべきだろうと思います。

This chart shows that it waits more than 1 frame. I think this waits for the refresh 1 frame later. I think it should wait for the next refresh.

*1:

While it’s common knowledge that limiting the FPS below the refresh rate with V-SYNC prevents the over-queuing of frames, and thus majority of added input latency

 

G-SYNC 101: G-SYNC vs. V-SYNC w/FPS Limit | Blur Busters