【ストV】垂直同期はオフにすればいいの?【PC版】

簡単に用語説明。

ms(みりせかんど)】ミリ秒とも言う。1000分の1秒のこと。0.001秒。メートルに対するミリメートルと、秒に対するミリセカンドは同じ関係。 

Hz(へるつ)】1秒の間に何回やるかの数字。5Hzだったら1秒の間に5回やる。ということは1回当たりは0.2秒でやることになる。0.2秒は200ms。

フレーム】枠(わく)。1枚の画面の映像のこと。または1枚の画面の映像を作るためにかかる時間の長さのこと。略してFと書く。1Fとかいてイチフレと読む。テレビとかは伝統的に1秒に60個のフレームがある。だから1フレームは1秒÷60=0.0166秒=16.6msごとに表示するし、そうなる必要がある。

fps(ふれーむ・ぱー・せかんど)】1秒の間に描く画面の枚数。この記事では小文字で書く。1秒で60フレームとは限らないことが増えたので、この単位が必要になった。

FPS(ふぁーすと・ぱーそん・しゅーたー)】一人称視点で撃ち合うゲームのこと。APEXとか。この記事では大文字で書く。PUBGとかの背中が見えるのはTPSと言う。

同期(どうき)】タイミングを合わせること。お互いに持っている時計を、片側が指示したタイミングで両者が同じ時刻にすること。

2021/03/31 西川善司さんの記事へのリンクを追加。

 

 

60Hzモニタだと画面が汚くなります。144Hzモニタだと特に意味がありません。オフにしたほうがいい時もありますが、

 

良く分からんけどオフ!はダメ

 

って印象です。でも詳しいことはよくわかりませんでした。無能。まぁちょっとだけ参考にしてくださいという感じでお願いします。

 

追記。西川善司さんが調べていた。完璧に分かる。

www.4gamer.net

 

 

 

とりあえずやり方です。

 

NVIDIAコントロールパネル>3D設定>3D設定の管理>プログラム設定>カスタマイズするプログラムを選択する>StreetFighterV(streetfighterv.exe)>垂直同期

グローバル設定(3Dアプリケーション設定を使用する)を使用する

から

オフ

に変更します。変更したらウインドウ右下の「適用」ボタンをクリックするのを忘れずに。AMDRadeonの人はAMD Radeon設定とか使えば同じ感じでいけると思います。

f:id:manie:20201202100305p:plain

 

ファイルを直接いじる方法もあるようです。

C:\Users\????\AppData\Local\StreetFighterV\Saved\Config\WindowsNoEditor

っていうフォルダにある(????はwindowsのユーザ名を入れる)

Engine.ini

ってファイルの最後に

[SystemSettings]
r.VSync=0

って追記しましょう、って情報もあります。これでもできます。この方法については後述します。※1

f:id:manie:20201202100528p:plain

 

とりあえずこれで「垂直同期オフ」にできるようになりました。でもやると損するかもしれません。得するかもしれません。判断に必要な情報をいくつか示します。

 

 

まずはこの動画を見てください。

www.youtube.com

https://www.youtube.com/watch?v=2ftTfNPwNVs

ストリートファイターVベンチマークツールです。垂直同期をオフにして、さらに描画限界を解除したものを録画しました。ややチート行為です。このスピード感。「遅れた時に取り返せそう」な雰囲気。これが

垂直同期をオフにしたほうがよい(と思ってしまう理由)

のすべてだと思います。

 

ストリートファイターVにおける「遅れ」とは何か?

 

「描画が遅れる」

たしかに最高画質で60fpsを維持するのはそこそこのPCが必要です。重いと評判の滝ステージを最高画質で描画するには

現在売っている最安ゲーミングPCの半分のパワーが必要(2020年12月現在)

です。つまり描画が遅れることはありません。古いPCについては後述します。※2

 

「ラグで遅れる」

これはあります。別の記事にかいたけどv6プラスに入ろう!みんなでなくそう夜のラグ。でも、よく考えてほしい。

ラグで遅れたものを描画で頑張って取り返せるわけないだろう?

だって間に合いそうにないのを頑張って間に合わせるんじゃなくて、もう完全に遅れて間に合ってないからラグなんだから。頑張るところがありません。

 

「ラグで巻き戻ったりするじゃん!当たったのにガードになるやつ!」

わかる~。あれヒット確認して漏れるとキレそう!マジ勘弁。

でも「当たったはずの画面」の後に「ガードする画面」が出るってことはゲーム内部の時間が戻ってるか一時停止しています。ということは「ガードする画面」の時点でお互いに「間に合わなかった分を相殺した後」ってことなんです。だから

取り返すべき遅れた時間

はなくなっています。もしあったら直後にどちらかはラグで待たされることになるはずです。前回のアプデまでは相殺時間が長すぎて「ポーズ状態」になっていました。ポーズ解除後にやることはないのです。やっぱり頑張って描画して追いつくところはありません。

 

つまり、垂直同期をオフにすることで描画頑張り状態にしたところで

取り返す遅れなんてない

ということです。

 

記事の構成の都合で、ここで簡単に垂直同期とは何なのかを説明します。

 

垂直同期とは?

実は画面同期なんだけど、伝統的に垂直同期っていいます。水平同期とかもあったけど今は使いません。画面1枚を描くタイミングをあわせるためのものです。

モニタが60Hzだった場合は、1秒に60枚の画面が切り替わっていきます。そこで「モニタがPCに対して指示をする」「PCはモニタからの指示を受けてから画面の情報を送る」という動作を「垂直同期する」といいます。

いい感じのタイミングで指示をだすことで、表示中に古い画像が混じらないようになっています。60Hzだと1枚当たり0.016秒(16ms)ですが、液晶モニタが上から順番に書き換わっていくまでに5msぐらいかかります。この書き換え中の5ms以外の11msの間に「PCからモニタに画面を送る」動作を完了させれば画像はくずれません。

垂直同期オフとは?

モニタには画像を送ると表示中の画面がくずれてしまうタイミングがあります。このタイミングを無視して、PCが送りたい時に送る方法です。

画面は上と下で別のものが表示されて崩れてしまいますが、「上の方は16ms早く見える」「16msの間は画面がおかしい」という状態になります。

 

【※2】さて、古いPCについてです。

まずはこちらの動画をみてください。長いので冒頭1分で十分です。

www.youtube.com

CPUの能力を25%(8コアを2コア)に制限して、無理やり描画が間に合わない状況にしました。垂直同期オンで60Hzのモニタに表示していますが、21fpsしか出ていません。

 

そしてこちらの動画もみてください。

www.youtube.com

同じくCPUの能力を25%(8コアを2コア)に制限して、垂直同期オフで60Hzのモニタに表示しています。23fps~24fpsになっています。

 

  • 垂直同期オン 21fps
  • 垂直同期オフ 23fps

垂直同期オンだとモニタの指示を待ってから描画しますが、オフだと待ち時間がないので少し高いfpsになります。その差は2fpsです。環境によっては、この差はもっと大きくなります。やっぱり垂直同期オフのほうが「たくさん画面に表示するから有利」なのでしょうか?

そんなことないですよね。

「普通のPC」を使って60fpsでプレイしている相手に有利になるわけではありません。「相手も同じ古いPC」を使っていた場合に、少し有利になります。

ですが、「ネットーワーク遅延によるラグ」がない状態でも描画が間に合わないせいで常に相手を待たせることになります。相手を待たせるということはラグが発生します。常にラグを起こし続ける相手と対戦したいと思う人はいないでしょう。そもそも歓迎されません。

 

 

そろそろ分かってきたのではないでしょうか。垂直同期オフ神話がどこからきたのか。

  • 高いfpsだと有利になるゲーム
  • 高いfpsと高いモニタのためには高額なつよつよPCが必要
  • 新作が出るたびに最良のfpsで描画できる新つよつよPCが必要
  • だから最良の7割ぐらいのfpsで動くPCを使う人が大半になる
  • 同じPCなら設定変更で少しでも高いfpsにしたい
  • だからといって精密な画質を捨てるわけにはいかない
  • 同じ金額の中で高画質・高fpsを両立する方法がとても重要

ありますよね?こういうゲーム。

そう、FPSです。

 

新作のFPSを限界まで高いfpsでプレイできるつよつよPCを使っている人はごく一部です。ほとんどの人は「それなりのfps」でプレイしています。

f:id:manie:20201203062344p:plain ちょいつよPCにするとこんな感じに。

 

古いpcで垂直同期をオフにするとfpsが向上することはすでに述べました。そのかわり画面はティアリング(破れ)の状態になります。

 

ティアリングの解説。(ドスパラFAQより)

ティアリング、スタッタリングについて | ドスパラ サポートFAQ よくあるご質問|お客様の「困った」や「知りたい」にお応えします。

f:id:manie:20201203063316p:plain

 

fpsの向上と引き換えにティアリングという画質低下は受け入れるわけです。上記のドスパラのFAQのページにも書いてありますが、垂直同期オフと垂直同期オンにさまざまなバリエーションが増えました。それらすべては「最良のfpsに満たない処理能力」が原因となっています。なんとかsyncというのはすべて同じ問題への対処を目指しています。

 

さて、ストリートファイターVの話にもどりましょう。いまどきのPCであれば、最高画質で60fpsでプレイできないものはありません。だめだったら「古いpc」なのでグラフィックボードを買い替えましょう。1万円ぐらいのでオーケーです。

 

ここで垂直同期の話はおわりです。あなたは垂直同期をオフにしたいですか?オンにしたいですか?よくわかりませんでしたか?

 

 

と、ここまでが20世紀の垂直同期の話です。時代は新たな局面に入っています。

 

 

最新モニタのレビューサイトがありますので見てみましょう。

とても詳しく書いてあるのでみんなで読もう。あとブックマークしよう。

 

自作とゲームと趣味の日々 https://jisakuhibi.jp/about

jisakuhibi.jp

「ASUS ROG Swift 360Hz PG259QN」をレビュー。ミリ秒差の勝利を掴むための最速ゲーミングモニタを徹底検証 : 自作とゲームと趣味の日々

 

 

記事の中盤の「表示遅延(内部遅延)」についての部分です。

f:id:manie:20201203182522p:plain

この検証録画でやっていることは、格闘ゲームをやる上でとても気になる時間を調べています。

f:id:manie:20201203182645p:plain

キーボードのキーを押すと、キーのLEDが明るくなります。その後、メモ帳に押したキーに対応した文字が表示されます。その時間差を強烈に高い機械で検証しています。

その結果はグラフにまとめてあります。

f:id:manie:20201203182847p:plain

このレビューでは「他の240Hzモニタより360Hzモニタのほうが5ms速い」と絶賛していますが、我々の興味はそこではありません。

f:id:manie:20201203183057p:plain

最新モニタを60Hzで使うと入力遅延が57.92ms

57.92msは、3.5Fぐらいです。「入力遅延が4F」ってどこかで聞いたことありませんか?

最近話題になっている「144Hzモニタだと入力遅延が減る」ですが、まさにこれが答えだったというわけです。単に遅延が小さい。

 

Windowsは、いろんなアプリケーションが作成した画像を1画面にまとめてからモニタに送ります。windowsはモニタに対して「こちらを御覧ください」という場所を用意します。モニタはwindowsを気にせず「そちらを参考に表示します」と動き始めます。

モニタから発する垂直同期信号は「見終わりました」の合図なのでした。このやり取りは1Fで終わりそうな気がしますが、なぜか2Fの時間を要します。

 

非常に詳しく解説しているサイトがありました。

記事の趣旨は「unreal engine 4.19から使えるInput Latency改善のためのr.GTSyncType=2の設定の仕組みと効果の説明と実際に調べてみた結果」なのですが、前半部分はストVの表示の仕組み(と遅延の仕組み)が詳しく分かる内容です。

 

shikihuiku.github.io

フォートナイトの入力遅延を観測してみた | shikihuiku – 色不異空 – Real-time rendering topics in Japanese.

フォートナイトの入力遅延を観測してみた | shikihuiku

 

完成した画面をモニタに送る「フリップ」は、unreal engineに関係ありません。モニタとwindowsの基本的な仕組みです。2フレームかかる理由は、スライドの36から41で解説しています。なんかそれっぽいgifにしてみました。

f:id:manie:20201203190826g:plain

 

そしてスライドの後半では、unreal engineの入力遅延を減らす新機能を「Vsyncより先行して処理を開始することで、各スレッドがVsyncを待つ動作を軽減する様子」を解説しています。この機能はストVで使っているunreal engineが旧バージョンなので使えません。

 

でもこれで「360HzのモニタのほうがVsyncを小さく刻むから、描画能力が高いPCなら入力遅延が小さい」という理由も分かりました。

再掲

f:id:manie:20201203183057p:plain

 

私はもう一つ疑っています。144Hzのモニタで60fpsのストリートファイターVをプレイするということは「unreal engineの各スレッドがVsyncを待って止まっている時間」が小さいのではないでしょうか。

 

これが

f:id:manie:20201203192710p:plain

こうなるんじゃないかなって。

f:id:manie:20201203193454p:plain

これは希望の入り混じった妄想なのですが。

 

というわけで120Hzとか144Hzとかのモニタを使う時はオンでもオフでもいいんじゃないかって思います。そもそも早い。詳しくはよくわかりません。

 

 

では、残っているお話です。

 

 

【※1】Engine.iniを書き換えることについてです。

 

そもそもなんでこのファイルを書き換えるのでしょうか?

それはみんながそうすればいいと知っているからです。ストリートファイターVunreal engineというミドルウェアを使っています。

www.4gamer.net

西川善司の「試験に出るゲームグラフィックス」(9)「ストリートファイターV」における高密度なノンフォトリアル表現,そのレシピを探る・前編

f:id:manie:20201203081510p:plain

 

unreal engineのドキュメントを読めば、設定ファイルをどのように変更できるかがわかります。

docs.unrealengine.com

エンジン機能レベルの調整 | Unreal Engine Documentation

 

 f:id:manie:20201203081011p:plain

この設定はもともとEngine.iniには書いてありませんから、何も書いてないと

r.VSync=1

の状態、つまり垂直同期オンとなっているようです。

 

NVIDIAコントロールパネルを使った場合の切り替えは以下の二通りです。

Engine.iniを書き換えた場合の切り替えは以下の二通りです。

  • ファイルに垂直同期オフの設定を加える
  • ファイルを変更しない(オンのまま)

どちらでもオンとオフを切り替えることができます。

 

NVIDIAコントロールパネルを使うことで、オフ以外に「適応・高速」が選べるようになります。これは「オフのフリをしつつAdaptive-syncまたはfast-syncを使う」という機能です。Engine.iniの書き換えではできません。

 

さて、ここで問題です。

 

Engine.iniの変更は

チートですか?

 

ストリートファイターVの中にあるunreal engineの設定ファイルを書き換えています。windowsの標準アクセサリのメモ帳で書き換えることができます。私はストVのものは書き換えていませんが、ストVベンチーマークの方のEngine.iniは何度も書き換えています。

チートが何を指すかは人それぞれですが、ゲーム会社の決めている許諾契約というものがあります。ソフトウェア利用許諾契約とかEULA(end-user license agreement)といいます。ゲームを買うのは、ストリートファイターV自体を買うのではなく利用する権利を買っているだけです。

 

カプコンeulaはこちらです。

game.capcom.com

エンドユーザー使用許諾契約 | CAPCOM

 

その中に、「中身を変更しちゃだめだよ。解析するのもだめだよ」という部分があります。

f:id:manie:20201203194821p:plain

Engine.iniはunreal engineを使うと必ず存在するファイルですからストリートファイターVプログラムではありません。ですが、「カプコンが適切に設定したもの」だとしたら「改造・改変・解析」の禁止対象になる可能性があります。非常にあいまいな領域です。

でも、いじりまくったらゲームが不具合を起こすかもしれません。

 

この記事の上の方で「ややチート行為です」と書いたのはそれです。

ストVベンチマークのEngine.iniに

[/script/engine.engine]
MinDesiredFrameRate=0
bSmoothFrameRate=False
SmoothedFrameRateRange=(LowerBound=(Type=Inclusive,Value=5),UpperBound=(Type=Exclusive,Value=500))

という設定を追記すると60fpsの上限をなくして描画性能限界までfpsを高くすることができます。メモ帳でいじるだけです。

 

この設定をストリートファイターVで行ったらどうなると思いますか?

 

どうなるんでしょうね?わかりませんけども。まぁ自己責任なのでやってみるのもいいかもしれません。オフラインでひとりで試すならギリで違法ではないはずです。

 

NVIDIAコントロールパネルの変更ならカプコンに怒られることはないでしょうが、ゲームが正常に動作しなくなる可能性はあります。これがPCのゲームの特徴です。

もしかしたらグラフィックボードを別のものに変えたらトラブルが起きるかもしれません。だからカプコンは「最低環境」「推奨環境」を提示しています。

 

Engine.iniを変更することは、著名なサイトでも検証に使われています。

f:id:manie:20201203212437p:plain

f:id:manie:20201203212606p:plain

 

でもやりかたは明示しません。標準の動作ではないからでしょう。

 

さて、再び

チートですか?

に戻りましょう。

 

PC版のストリートファイターVはグラフィック設定で画質を調整できます。たとえばポストプロセス設定を中から高に変更すると以下のように変わります。

ポストプロセス設定 中

f:id:manie:20201203230149j:plainf:id:manie:20201203225135p:plain

ポストプロセス設定 高

f:id:manie:20201203230215j:plainf:id:manie:20201203225115p:plain

 

これは「モーションブラー」という視覚効果が有効になっているからです。設定を変更することで、視覚効果が有効・無効になったり効果が強く・弱くなるようになっています。

最高画質からモーションブラーだけ無効にした設定
は用意されていません。でも、できます。

Scalability.ini

を編集して、高と最高を選んだ時にモーションブラーをオフにするように設定できます。 

これはゲーム内のファイルを変更してカプコンが用意していないモードで遊ぶことを意味します。 

 

Scalability.iniを編集したら、 

チートですか?

 

そもそも画質設定はPC版だけにあるもので、PS4版はモーションブラーどころか画質の調整自体ができません。PC版だけポストプロセス設定を中かそれ以下にしてモーションブラーのない画面でプレイすることができます。

 

PC版の画質設定でポストプロセス設定を中かそれ以下にすることは

チートですか?

 

チートなわけねぇだろ!とも言えるし

チートだ!とも言える場所がありそうです。もっと強烈なツールもあります。

 

でもそんなことはどうでもいいんだ。

 

大切なのは楽しむこと。

 

チートが楽しい人もいるかもしれない。でも楽しくない人が多いから、チートしているつもりの人は、ちょっとだけ隠れてやってほしい。

チートしている人を見つけたとしても、本人はチートだと思ってないかもしれないし実際にチートじゃないかもしれない。だから指摘したり批判したりするまえにちょっと考えよう。

PC版ずるいとかチーター○ね!とか、そういうのやめましょう。

 

でもv6プラスには入ろう!マジで。無料(ソフトバンク光を除く)。

maniesfv.hatenablog.com

 

おわり。