LR2遅延対策入門 alpha 7版

最終更新:2016/01/18
文責:Stairwayの中のやつ

alpha 6 alpha 5 alpha 4

はじめに

「遅延」それは音ゲーマーを悩ます事象です。
本記事では、基本的な設定はもちろん、誤解されがちな設定も含めた遅延対策方法を記載します。

目次

1.描画遅延対策

LR2の描画遅延は以下の要素から成り立っています。 それぞれ潰しましょう。

1.1.GPUによる遅延

GPUの設定により、通常では3フレームの遅延が発生します。
この遅延を解消する方法は以下を参照してください。GPUごとに手順が違います。
どのGPUでも設定値0だと表示がガタつきますので、最低でも1をお勧めします。

GeForce:レンダリング前最大フレーム数
参考URL http://ff2400.jp/Column/game/Mftra/Mftra.html

Radeon:FlipQueueSize
参考URL http://cypH2r.blog129.fc2.com/blog-entry-28.html

Intel:????

1.2.出力モニターによる遅延

1.2.1.(SDブラウン管以外の場合)

この項目でどれだけの遅延が解消されるかは、モニター側のスケーリング速度に依存します。
たいていの場合、モニター側でスケーリングするよりも、GPU側でスケーリングするほうが圧倒的に速いです。

GeForce:アスペクト比固定拡大
参考URL http://swordfish.s53.xrea.com/2010/05/04/p918/

Radeon:GPUスケーリングを有効にする
参考URL http://d.hatena.ne.jp/clearorzhm/20090416

Intel:ディスプレイ>一般設定>スケーリング
参考URL http://blog.livedoor.jp/pangya_kaorin/archives/1421852.html

1.2.2.SDブラウン管の場合

特になし。

1.3.補講:遅延以外の描画に関する事項

遅延には関係ありませんが、描画周りでつまづくアレコレについての解決方法など。

1.3.1.フルスクリーンとAero(Windows Vista/7)

「Windous VistaまたはWindows7のとき、LR2をフルスクリーンでプレイするためにはAero切りが必須!」
なんてことを時々見かけますが、これは誤りです。
LR2プレイ時のみAeroが切れる設定にすればよく、それは以下の手順で可能です。
  1. 「LR2body.exe」を右クリックしてプロパティを開く
  2. 「互換性」タブをクリック、「デスクトップ コンポジションを無効にする」にチェックを入れる
  3. 「OK」ボタンで確定
これでAeroは切らずに、フルスクリーン化することができます。

1.3.2.RadeonとHDMIとGPUスケーリング

RadeonでGPUスケーリングを行い、HDMIでモニターに接続すると、
全画面にはなるけれど、画面より小さいという問題が発生するかと思います。
Catalyst Control CenterでScaling Optionsを0%に設定するわけですが、
これだけでは不十分で、解決しないということもあるかと思います。
きちんと修正するための、具体的な手順を以下に示します。
  1. Catalyst Control Centerを開き、ディスプレイマネージャからHDMI接続しているモニタの解像度を640x480に変更
  2. 左部ツリーから、対象のモニタ設定を展開し、「Scaling Options」を0%に設定
    ※この時、GPUスケーリングの設定も同時に行うと良いでしょう
  3. 「Apply」ボタンで適用
設定後、解像度は元に戻していただいて大丈夫です。

1.3.3.互換モードと遅延(Windows 8)

以下はWindows8 Pro(かつ私の環境)での内容です。
※Windows 10では解消されています。
LR2のAuto Adjustにて複数回検証した結果となります。

exeのプロパティから、互換モードを設定すると、およそ16〜25ms程度の遅延が発生しました。
互換モードは設定せず、
・管理者権限にて実行。
または
・LR2本体のフォルダ(サブフォルダ含)に対してUsersにフルコントロール権限を与える。
以上のどちらかにより、遅延回避しつつ動作を損なわないことが可能であるようです。

※XPから移行した環境の場合、上記の対応を行わないとIRフォルダ以下にランキングファイルを保存できなかったり、
スコア保存ができない場合があります。

2.音遅延対策

「FMOD Exを使用しない」にチェックを入れている方、
それで遅延が解消されたと思ってるとしたら、それはプラシーボ効果です。
まずは「FMOD Exを使用しない」のチェックを外してください。

2.1.FMOD Exを使用する(チェックオフ)

FMOD Exを使用する場合は、DirectSound、ASIO、WASAPIから出力方法を選べます。

2.1.1.ASIOの場合

LR2 Setup上からASIOの遅延は設定できません。
バッファ数は無視されます。
ASIOの遅延はASIO caps等で設定できます。
デバイスによって設定のしかたが違います。 ASIOに対応していないデバイスの場合、ASIO4ALLを使用することになると思いますが、
再生しようとするとLR2が落ちる曲(というかBGA)が存在します。使用には十分注意してください。
参考:LR2での動画BGA再生を支援するページ(ASIO4ALL&FMOD EX使用時のみ、一部の動画BGAの再生が途中で止まる)

2.1.2.WASAPIの場合

LR2のWASAPIは共有モードのため、ASIOほど遅延を解消する効果はありません。
カーネルミキサーを経由しますし遅延もします。
できればASIOを使いましょう。
参考:楽しいハック講座 (4) Windows7 オーディオアーキテクチャの概要
https://twitter.com/tbstk/status/33958102776823808
2.1.2.1.それでもWASAPIの遅延を少なくしたい場合
2.1.2.1.1.設定の追い込み
まずは現在の遅延幅を確認しましょう。
粗雑に作った怪しいソフト動かなくても知らん。
実行するとこんな画面が出ます。

オーディオデバイス、バッファ数(推奨)、バッファ数(限界)、およびその他情報が表示されます。
バッファ数(限界)が小さいデバイスほど、遅延の解消が期待できます。
LR2でデバイスを選択したら、バッファ数を推奨値から限界値に向って細かく調整します。
音が変にならない値を探ってください。

また、このバッファ数はWindowsの設定も関係してきます。

オーディオデバイスのプロパティ->詳細->既定の形式 を、
ターゲットアプリケーションが使用しているビット/周波数に合わせると、遅延がわずかに少なくなります。
LR2の場合は16ビット、48000 Hzに合わせます。
※16ビット、48000 HzはFMODExの規定値です。
2.1.2.1.2.Windows10にする
Windows10はオーディオ遅延を改善したぜ!とマイクロソフトが言ってます。
Low Latency Audio
2.1.2.1.3.Microsoft High Definition Audioデバイスを使う
前述のLow Latency Audio内で、 Windows10で改善した低遅延さを測定するために使えと言っているのがMicrosoft High Definition Audioです。
これが強烈でWASAPI版ASIO4ALLとでもいうべきものです。
※ソフトウェアミキシングで低遅延を実現するという点において
こいつは汎用ドライバなので、警告を無視すればいろんなデバイスに適用できます。

自己責任でどうぞ。

2.1.3.DirectSoundの場合

Windows Vista以降のDirectSoundは、ソフトウェアによるエミュレートになりました。
楽しいハック講座 (4) Windows7 オーディオアーキテクチャの概要で示されている通り、DirectSoundの下位レイヤーはWASAPIです。
つまり DirectSoundの遅延 = WASAPIの遅延 + DirectSoundがWASAPIに引き渡すまでの遅延 です。
※ただしCreative ALchemyが使える環境を除く
WASAPIが使えない場合を除いて、DirectSoundを選ぶ理由はありません。
2.1.3.1.それでもDirectSoundの遅延を少なくしたい場合
「2.1.2.1.それでもWASAPIの遅延を少なくしたい場合」を参照してください。
WASAPIの遅延を減らせば、DirectSoundの遅延も減ります。
2.1.3.2.Creative ALchemyが使える場合
Creative ALchemyが使える環境では、DirectSoundのハードウェア支援を有効にできます。
ただし最短10msまでなのと、一部のソフトと相性が悪いようです。
2.1.3.2.1.準備
Creative MediaのサイトからCreative ALchemyをダウンロードし、インストールします。
SoundBlasterをゲームモードにします。
ゲームモード以外だと、ALchemyがうまく動きません。
ただしゲームモードだと、ASIOの低遅延設定が不安定になったりしますが...

2.1.3.2.2.Creative ALchemyの設定
Creative ALchemyではバッファを2〜10、時間を5〜50の間で設定できます。時間の単位は明記されていませんがミリ秒です。

Creative ALchemyの遅延時間は以下の計算で求めることができます。
Creative ALchemyの遅延時間 = バッファ * 時間
例)バッファ=2、時間=5のとき、2 * 5 = 10ms遅延
2.1.3.2.3.LR2の設定
LR2のバッファ数は以下のように設定します。
LR2のバッファ数 = (Creative ALchemyの時間 * 1.2) * 12
Creative ALchemyの遅延時間が5の時、 (5 * 1.2) * 12 = 72なので、72を設定します。
*1.2…音を安定させるための係数。*1.2しないとブチブチ切れる。
*12…2byte(1チャンネルあたり16bit)*2チャンネル*3(FMODExのデフォルトバッファ数)=12

2.2.FMOD Exを使用しない(チェックオン)

FMOD Exを使用しない場合は全ての設定が無効となり、強制的にDirectSoundになります。
※LR2のログ出力にて確認
遅延に関する設定は行えず、バッファサイズはドライバの規定値が適用されるはずです。

2.3.補講:その他の遅延要因

2.3.1.OSとサウンドデバイス

オーディオI/F系デバイスの評価は、AV Watch - 藤本健のDigital Audio Laboratoryが参考になります。



2.3.2.PCから出力したあと

音の出力が遅延する原因となるのは、PCの設定やPC周辺のサウンドデバイスだけではありません。
以下のようなものを通して音を出力している場合、遅延する可能性があります。

要因理由
AVアンプ AVアンプに接続し、イコライザやエフェクトをかけて出力している場合、
AVアンプ内部のデジタル回路で処理を行ってから出力するため、遅延する可能性があります。
ソースダイレクトで出力すると、解消されるケースが多いです。
テレビ 映像出力の遅延と同期させるために、わざと遅延させるケースがあります。

3.入力遅延対策

この部分で遅延が起こると、映像・音声の両方で遅延が起こっているように見えます。 積極的に解消していきましょう。

3.1.接続方式

可能であればコンバータを介さないほうが良いです。
最良 DAOコンUSB直接続
Arudino製の基盤直結出力
遅延時間/秒間レスポンス共に良好なようです。
参考
Arudino製PS端子コンバータ 基盤直結出力に比べると1ms〜2ms遅延するそうです。
普通 市販のコンバータ 基盤直結出力と比べると、秒間レスポンスが良い製品でも18.1735ms前後の遅延が発生するようです。
虹コン2.0 USB直接続 遅延以前の問題で、秒間レスポンスが25回(40ms間隔)なので使わないほうが良いです。
ハード判定の場合に、ピカグレ判定が無くなるノーツが出現します。
虹コン2.5は知りません。

参考動画

※1:JoyAdapter自体の遅延は1ms未満なので、上記動画内のJoyAdapter側の遅延はコンバーター由来によるものです。
1ms未満…粗雑に作った怪しい測定ツールで計測。動かなくても知らん。
※2:18.1735ms…上記動画作者様から測定ツールの実行結果を教えていただきました。
※3:基盤直結に比べると1ms〜2ms遅延…※2と同じく実行結果を教えていただきました。

3.1.1.コンバータの選定

1P用コンバータを使いましょう
DP時は1P用コンバータを2つ用意しましょう

サンワサプライのコンバータがレスポンス高いですが、空打ちPOORが多くなるとの報告もあります。
エレコム製コンバータの新パッケージも、サンワサプライ製コンバータと同等の性能のようです。
参考:第三科学研究所 - 連射速度の限界に挑戦!第十四回 エレコム JC-PS101U、JC-PS201U新旧パッケージ品比較調査

USBのポーリングレートを高めると、レスポンスが向上しますが、自己責任で。
やりかたを自分で調べられない場合は、行わないのが懸命です。

3.2.垂直同期OFF

注意!この項目は、現状の動作から内部処理を予測して記述しているため、確実性に欠けます!




ボタン入力状態のチェックが、描画のタイミングと同期しているため、垂直同期をOFFにすることで、入力遅延の解消が期待できます。