東方をウィンドウでプレイする時のノウハウ(遅延対策・拡大ソフト) 書き途中
技術的な内容に関しては伝聞・想像の範疇をこえていないものもあるので間違いがあればご指摘ください。また、ここにない対策などがあればぜひ教えていただけるとたすかります。拡大ソフトについてはあとで追記。
遅延対策
リフレッシュレートの高いモニタを使う(影響度:大)
Windows 8以降の環境ではフルスクリーンモード以外で動作するすべての状態で遅延が発生します。(東方に限らずブラウザ操作なども。)
原因はWindowsのシステムに組み込まれているDesktop Window Manager (DWM)です。DWMはウィンドウの描画処理を管理する機能ですが、その過程で3フレーム分の描画遅延が発生することが定説となっています(実際に3F分なのかは定かではない)。
厄介なことにこのDWM君はWindows 8以降ではオフにする手段が存在せず、ウィンドウで東方を遊ぶ場合は3F遅延を受け入れるしかない、というのが現状です。
残念ながら遅延を撲滅する方法はありませんが、遅延を抑える方法は1つだけあります。それが高リフレッシュレートのモニタを使うことです。
60Hzにおける3Fは0.05秒とそこそこ致命的な値ですが、120Hzであれば0.025秒、240Hzであれば0.0125秒とほぼ体感できないような値になっていきます。
3F遅延を防げないなら3Fの描画時間を短くしてやろうというごり押し的発想です。
じゃあ何Hzぐらいあれば快適に遊べるの?って話ですが、自分の体感や周りの意見を聞く限り、他の遅延対策も行っていれば120Hzあれば問題なく遊べるかなと思います。心配性な方は240Hzモニタを買いましょう……。
金銭的にゲーミングモニタの購入が難しい方は最後の項にもありますがフルスクリーン転向を検討してください。
せっかく買ったのにリフレッシュレート上げ忘れるのだけは絶対に避けような!
それと、NVIDIA系のグラボを使っていてモニタ買ったのに設定で高リフレッシュレートが選択肢に出ないよ~って方は、コントロールパネルから解像度の変更がUltra HD、HD、SDの1920x1080になっていないかを確認してください。なっている場合はPCの1920x1080に変更してみてください。多分出ると思います。
余談ですが、前述の通りフルスクリーンの場合はDWMによる遅延は発生しません。ですが、フルスクでもちょっと良いモニタを使用するメリットは大きいと思っています。
単純に描画が綺麗になって弾がくっきり・滑らかに見えて避けやすくなるので。フルスクでもほんのり遅延軽減できるという噂も聞きます。
実際無遅延のWindows 7時代にゲーミングモニタに変えただけで本地帯の突破率が上がったりプレイの精度が上がった経験もあります。
VsyncPatchを利用する(影響度:作品により大~小)
令和においても最強です。
紅魔郷・妖々夢・永夜抄・風神録あたりまではほぼ必須だと思います。
導入方法は調べれば出てくると思います。
vpatch.iniのVsync = 0にするのはお忘れなく。
ウィンドウの位置を固定できるのも日々の精度のブレを軽減できていいですね。
自分の風神録の設定を下に貼っておきます。(有識者で突っ込みどころあればコメントおねがいします。)
[Window]
enabled = 1
X = 600
Y = 405
Width = 800
Height = 600
TitleBar = 1
AlwaysOnTop = 0
[Option]
Vsync = 0
SleepType = 1
BltPrepareTime = 0
AutoBltPrepareTime = 0
AllowShortDelay = 0
GameFPS = 60
ReplaySkipFPS = 999
ReplaySlowFPS = 10
LockBackBuffer = 0
D3DMultiThread = 0
HookDirectInput = 0
グラボや東方の設定を詰める(影響度:中~小)
環境によって意味あるんだかないんだかよくわからない割に劇的に影響があるものは少ないイメージです。
ただ、絶対にやっておくべきなのはグラボの設定から垂直同期をオフにすることです。これだけは影響大きめかなと思います。ティアリングが発生する可能性がありますが、それを差し引いてもやるべき。
その他、NVIDIAコントロールパネルの3D設定の管理の低遅延モードとか、デスクトップのサイズと位置の調整のスケーリングを実行するデバイスとかその下のチェックとか、東方のcustom.exeの垂直同期周りの項目をオフにするとか入力のレイテンシ高速にするとかいろいろ試してみてください。
低遅延モードはスペックが足りている場合オフが良いとか、電源管理モードはパフォーマンス最大化を優先が良いとか、デスクトップスケーリングが良いとかいろいろ言われていますが正直正解はよくわかんないです。
一応自分の設定を貼っておきます。
スケーリングは他ゲーとの兼ね合いもありGPUスケーリングにしています。
妖々夢永夜抄は垂直同期をとらないにチェック、入力のレイテンシは基本自動にしています。
遅延とは関係ありませんが、解像度の変更のカラー設定の部分は設定が悪いと発色が白っぽくなったりすることがあるので、ここも確認してみてもいいと思います。
フルスクリーンに転向する(影響度:大)
元も子もありませんが最強戦術です。
金銭的にゲーミングモニタの購入が厳しい場合は主にこの手段で対応することになります。
この場合も垂直同期をオフにするのをお忘れなく。
また、手元で試したところDirectX8で動いてる紅魔郷~文花帖についてはフルスクリーンでも遅延するようなので、DX8 to DX9 Converter等を利用する等検討してみてください。
ちなみに私はWindows 10移行時に遅延への怒りが収まらずフルスクを試していた時期がありましたが、弾幕地獄・蓬莱の薬などの手元をよく見る弾幕の取得率がほんのり向上した代わりに、世明けなどの高速弾幕の取得率、安定感が露骨に下がり、再び怒りが収まらなくなったため諦めました。
画面サイズの最適解を見つけるのも東方の醍醐味ですね。