Project64の低遅延プレイ環境構築

 

1-1. raphnet V3コンバータの購入

過去にMAYFLASHRetroPortを使用したことがあるが、それらに比べ圧倒的に遅延が少ない。
公式サイトまたはAmazonから購入できる。2つ差し込み口があるものGCコントローラのコンバータと一体になったもの (Amazon)もある。それらを選んでも特に支障はない。
Amazonでの購入は届くのは早いが割高なため、すぐに必要でなければ公式サイトからの購入がおすすめ。

 

1-2. raphnet V3コンバータの設定

初めに、スマブラ64勢のkix氏ブログ記事ファームウェアアップデートをする方法を参考にコンバータのマネジメントツールを導入し、ファームウェアのアップデートを済ませる。2022年1月現在の最新バージョンは3.6.1。

※ 以下の設定は後述する専用インプットプラグイン使用時は反映されないが、損はないため設定を推奨
次に、マネジメントツール上のPoll interval (ms)の値を1または2に設定。
この項目ではコンバータがコントローラの入力を読み取る間隔がミリ秒単位で設定可能であり、値が小さいほど低遅延となる。
ツールの表示上では最小値の1まで設定できるが、公式サイトによるとこのコンバータで設定可能な最小値は2とのことなので、1と2のどちらの値に設定しても実際の動作に違いはないと思われる。

なお、サードパーティ製のコントローラを接続している場合にこの値が小さすぎると動作に不具合が出る可能性があるようなので、その際はデフォルト値の5に戻すことを推奨する。

f:id:atmpas:20220109152251p:plain

 

1-3. raphnet V3専用インプットプラグインの導入

そのうち書きます。今のところはこのスレッドを参考にどうぞ。

 

2-1. GLideN64の導入

Windows 8以降のOSでのゲーム画面の表示遅延やフレームレートが低下していないにも関わらずゲーム画面がカクカクして見える現象はDesktop Window Manager (DWM)と呼ばれるシステムが原因。
このシステムは全てのウィンドウ表示のアプリケーションに干渉するため、それを回避するには排他的フルスクリーンでProject64の画面を表示する必要がある。
排他的フルスクリーン表示にはProject64に同梱されているビデオプラグインでは都合が悪いため、GLideN64というビデオプラグインを導入する。名前のよく似たGlide64というビデオプラグインは別物なため注意

このページからGLideN64_Public_Release_4.0.7zをダウンロード、解凍後にbin\Zilmar-specs\GLideN64.dllをProject64のPluginフォルダに移動。
改造マリオ64やマリオ64RTAには代わりにこのバージョンを使う。

※ 以下の手順はネトスマなどのネット対戦を行う場合のみ必要
Project64KVE (Project64k)ではネット対戦時に強制的にJabo_Direct3D7.dllというファイル名のビデオプラグインが使用されるため、先程移動したGLideN64.dllJabo_Direct3D7.dllにリネーム。
元々入っていたものは、Jabo_Direct3D7.dll.bakのように拡張子に.bakなどを付け足して残しておく。

注意点だが、Public Release 4.0ではゲーム終了時にProject64がクラッシュしてしまう問題があるらしい。Public Release 2.0なら一部の描画の不具合はあるがその問題は解決するようなので、気になる方はそちらを使うと良いかもしれない。

参考: スマブラ64勢の丈助氏Notion

f:id:atmpas:20220110101025p:plain
f:id:atmpas:20220110101039p:plain

 

2-2. GLideN64の設定

Project64を開き、オプション設定プラグインVideo (graphics) pluginからGLideN64 Public Release 4.0を選択。

次に、オプションビデオプラグインの設定を開き、Videoタブに移動後、任意のFull screen resolutionWindowed resolutionを選択。
Full screen resolutionに関しては、配信をする際に都合が良いため1280 x 960などのアスペクト比が4:3の解像度がおすすめ。
Refresh rateは144 Hzや240 Hzなどの高リフレッシュレート対応モニタを使用している場合は最大値に設定、それ以外の60 Hzや75 Hzなどが最大値のモニタの場合は60 Hzに設定。自分の環境では165 Hzに設定。この設定はフルスクリーン時のみ適用される。

そのままFrame bufferタブに移動し、Emulate frame bufferのチェックを外す。チェックを入れたままだと表示遅延が発生する。

f:id:atmpas:20220110155456p:plain
f:id:atmpas:20220110174706p:plain
f:id:atmpas:20220110174713p:plain


GLideN64の設定は以上、以下は補足や注意点。

  • Project64KVE (Project64k)では、フルスクリーンの切り替えはゲーム起動後にAlt + Enterで行える。
  • フルスクリーン時はゲーム画面はメインディスプレイに表示されるため、必要に応じてWindowsの設定を変更する。変更後は必ずビデオプラグインの設定を再確認する。
  • プレイ中は常にProject64をアクティブにする。Kailleraや12キャラツールなど他のウィンドウをクリックした後は必ず再度ゲーム画面をクリックし、Project64をアクティブに戻すようにする。非アクティブだとフルスクリーン表示であっても(おそらく)前述したDWMが干渉してしまい、表示遅延などが発生するため。
  • OBSで画面を取り込む場合は、ゲームキャプチャまたは画面キャプチャを使用する。ウィンドウキャプチャを使用してフルスクリーンのProject64を取り込んだ際、Project64がアクティブであるとOBS上の画面が固まってしまうため。画面キャプチャはアクティブウィンドウの切り替え時に画面が暗転してしまう、他のウィンドウも取り込まれてしまうなどの問題があるため非推奨。


参考: スマブラ64勢の丈助氏Notion

 

3. その他の設定

Project64の実行ファイルのプロパティから全画面表示の最適化を無効にするにチェックを入れることでパフォーマンスが改善されるらしい。

f:id:atmpas:20220110182646p:plain

NVIDIAGPUを使用している場合は、NVIDIA コントロールパネルの3D 設定の管理から表示遅延やパフォーマンスに関係しそうな項目の設定を変更する。
ドライバのバージョンによって設定項目が異なるが、自分の環境ではトリプル バッファリングオフ低遅延モードウルトラ垂直同期オフ電源管理モードパフォーマンス最大化を優先に変更。
他社のGPUやCPU内蔵グラフィックスを使用している場合は似た項目を探して変更。

f:id:atmpas:20220110221925p:plain
f:id:atmpas:20220110221948p:plain


フルスクリーン表示時に画面が引き伸ばされて横長に表示される場合は、デスクトップのサイズと位置の調整スケーリングを実行するデバイスGPUに変更後、縦横比もしくはスケーリングなしを選択する。
縦横比アスペクト比を維持したまま画面を拡大する設定、スケーリングなしは設定解像度そのままのサイズで画面を表示する設定。
これらはモニタごとの設定なので、必ず1. 変更するディスプレイを選択します。でゲーム画面を表示するモニタ (メインディスプレイ)を選択してから設定を変更する。

f:id:atmpas:20220111000327p:plain

 

4. 高リフレッシュレート対応モニタの購入

これまで紹介した設定以外にも、144 Hzや240 Hzなどの高リフレッシュレート対応モニタを使用することで表示遅延を軽減することができる。
60 fpsのゲームでも高リフレッシュレートの恩恵を受けられるというのは少し前に格闘ゲーム界隈でも話題になっていたようなので、気になる方は調べてみてほしい。

また、それに加えティアリングやウィンドウ表示時にフレームレートが低下していないにも関わらずゲーム画面がカクカクして見える現象が緩和されるなどのメリットも存在するため、快適なゲーム体験を望む方には購入を強くおすすめする。

購入するモニタを選ぶ際には、0.5 msや1 msなどの表記はモニタの最終的な表示遅延とは直結しないということを念頭に置く必要がある。
これらの値はパネルの応答速度を示しており、モニタの最終的な表示遅延にはその応答速度の値に加えモニタの内部処理にかかる時間 (内部遅延)も影響する。
しかし、残念なことにほとんどのメーカーは内部遅延の値を公表していない。
そのため、モニタ選びの際には有志が様々なモニタの遅延を測定した結果を載せているRTINGS.comのようなサイトを参考にすると良いだろう。

本筋から少し外れるが、Nintendo SwitchPlayStation 4などのコンシューマ機でも同じモニタを使うのであれば、モニタの表示遅延は解像度やリフレッシュレートごとに変わるという点にも注意が必要。高リフレッシュレート駆動時に低遅延だからといって、コンシューマ機を接続した際の60 Hz駆動時も低遅延とは限らない。
例として、自分が使用しているASUSのVG258QRという165 Hz対応のモニタは、60 Hz駆動時の遅延が低遅延の60 Hzモニタに比べ大きいため、コンシューマ機での使用には適していない。

パソコンに接続した後は忘れずにWindowsの設定ビデオプラグインの設定リフレッシュレートを変更する。

参考: スマブラDX勢のカジャ氏ブログ記事

 

5. むすび

紹介した項目を全て行えば、ゲームタイトルによってはオフラインプレイ時の遅延が実機+ブラウン管より少なることも見込めるはず。実際に、自分の環境でマリオ64スマブラ64の遅延が実機+ブラウン管より少ないのは確認している。
それでは、良きゲームライフを。

 

Twitter: @atmpas

VG258QR設定メモ

VG258QRを買ったので自分の設定をメモ

- 解像度/リフレッシュレート
1920×1080
165Hz (DisplayPort)

- GameVisual
FPSモード

- ブルーライト低減
レベル0

- 色
明るさ: 75
コントラスト: 75
彩度: 45
カラー: 冷たい
肌の色合い: 自然
Smart View: オフ
なかなか好みの色合いにならないのでもう少し調整したい

- 画像
鮮明度: 50
Trace Free: 60
アスペクトコントロール: 4:3
VividPixel: 50
ASCR: オフ
Adaptive-Sync/FreeSync: オフ
ELMB: オフ

- サウンド
ボリューム: 適宜調整
ミュート: オフ
音声入力: HDMI

- 入力選択
DisplayPort / DVI / HDMI

- システム
GameVisual Demo Mode: オフ
ECO Mode: オフ
メニュータイムアウト: 30
DDC/CI: オフ
透明: 20
言語: 日本語
キーのロック: オフ
電源インジケータ: オン
電源キーロック: オフ

- GamePlus
FPSカウンター 右上に表示 / なし
マルチディスプレイ環境において特定の状況下でリフレッシュレートが最も低いものに合わさってしまうようなので確認用に表示
自分のメインPCの環境 (165Hzと60Hzのデュアルディスプレイ)では165Hzの方をメインディスプレイに設定すれば普段の用途では回避できそうだった