見出し画像

beatmania IIDX INFINITASの環境をいろいろ考えた結果、ほぼ元に戻った話

部屋の片づけと模様がえに伴って、できれば新調したディスプレイを縦置きしてInfinitas遊べたら良いなぁと思い、いろいろやったんですが、これはその備忘録です。メインマシンとしてつかってるPCが割と変態的な感じなんで、参考になる人がどれだけいるかは知りませんが、自分は多分参考になる気がするので残しておこうという感じです。

現在のメインPCのスペック

CPU:AMD Ryzen 5 5600X
メモリ:DDR4-2667(XMP-3596) 32 GB
マザーボード:Asrock X570 Phantom Gaming 4
グラボ:Asrock AMD Radeon RX 7600
サウンドカード:ESI Maya44 ex

ディスプレイ1:JAPANEXT JN-IPS245FHDR240
ディスプレイ2:JN-315VG165FHDR

何をいろいろやったか

基本的には以下の手順をやりました

  1. ボーダレスウィンドウ化するツールを導入

  2. 画面を縦にして起動、ウィンドウ設定→60hz張り付き

  3. 120FPS起動のため、さらに外部ツールを導入→動作安定せず

  4. 戻す

  5. OBS導入→音ズレの訪れ

  6. OBSアンインストール→設定を見直し→解消

  7. 再度OBSインストール、しかし、OBSから音が出ない

  8. 出力音声をミキサー経由で分配→音声入力端子に接続

  9. 現在に至る

という感じです。で、今回はこれらの作業の中で思った、現INFINITASの仕様についての予測を書いていきます。これから書くことは完全に主観的憶測に基づいておりますので、実際どうなのかっていうのは開発の人しか判断つかないことなので、その点ご了承ください。

起動時には何をやっているのか

  1. ローディング中の画面を表示

  2. ディスプレイの情報を取得

  3. 内部ウィンドウを1280x720に固定

  4. フルスクリーンにゲーム画面を映し、内部ウィンドウをフルスクリーンに引き延ばして表示。

  5. ディスプレイ情報から120hz以上で映していれば、FPSを120に設定、それ以下なら、60に設定

  6. メーカーロゴ等を表示しゲームを始める

これも推測ですが、ゲーム画面をボーダレスウィンドウにするとディスプレイ情報が取得できないようで、そのため、120hzディスプレイを認識できず、60hzになるのではないかと思われます。

また、このタイミングでほかツールの割り込みや入力を監視しているようで、ゲームを通してこのゲーム以外からの入力を感知した際に、ゲームを最小化するようになっているっぽいです。


そのため、120FPS化のためのツールはINFINITAS起動まではサービスストップしておき、INFINITASがフルスクリーンで起動した後、ゲーム開始のタイミングでツールを起動する、という手順が必要みたいです。

控えめに見て、めんどくさすぎるので、やめました。

また、60FPSでのボーダレス化についてはうまくいったものの、メイン作業でも使うディスプレイのため、コントローラーを使わない時にじゃまにならないところへ片付けなければならないため、それもそれでめんどくさいので、環境を戻した、という次第です。

なぜゲーム起動時にこんなめんどくさいことをやってるかというと、おそらくFPSを固定させないと判定がずれるから、だと思われます。

このゲーム、いつのころからかノーツの判定タイミングを描画時の座標で確認するようになってるみたいで、FPSが落ちると判定がズレたり、それをどこかのタイミングでノーツの座標位置の再計算が行われるなどして配置が飛んだりするっぽいんですよね。なので、プレイ中はできるだけ一定のFPSで張り付かせる必要があるのではないかと思います。

そのためには無駄な描画をせず、というか画面更新をしないようにしたいみたいで、それで、最初にディスプレイの情報を見て60FPSか120FPSか決めるような感じになっている気がします。

音ズレに関しては完全にサウンドカードの出力サンプリングレートがOBSインストール時に48000Hzになったからでした。すべてのサウンドデバイスを44100Hzに変更し、OBSのレートも44100Hzに変更すると完全に解消されました。

以前も同様に96000Hzとかに設定してた時にゲームの進行がとんでもないことになったことがあり、このことからINFINITASはサウンドカードの情報を取得しておらず、常に44100Hzで動作しているものとして設計されているみたいです。なので、こちらもサウンドデバイスの設定は44100Hzにしておかないと48000Hzになると、ゲーム開始後徐々にズレていき、曲の後半ではとてもプレイできたもんじゃねえってくらいに音がズレるっていう話です。多分深度は関係ないかなぁとは思いますが、このあたりの検証もめちゃんこ面倒なんでやってないです。

また、それ以外にも音の遅延はほぼほぼサウンドバッファ(サンプル数)で決まりますが、サンプル数を低く設定すると遅延が少なくなる変わりにCPUの処理能力次第ではバッファリングが間に合わずにノイズが入ったり、ゲームが落ちたりするほか、それがまた音がズレる原因になったりしますので、ガチるならやはりそれなりに良いサウンドカードやCPUを検討すると良いんじゃないかなぁと思ったりします。

OBSで音が拾えない問題については、WASAPIの排他設定のため、OS内部で何とかするのは想像以上にめんどかったので途中で投げました。

幸い、このMaya44exサウンドカードは、入力と出力の両方がステレオ対応で2系統ずつあるため、事なきを得た感じです。たしかに、これが一番簡単で早いわとおもいました。万が一ループするとハウったりするのでその点注意ですけど。

まとめ

というわけで、INFINITASの設定に関しては以下のようにするのが鉄板だという結論になりました。

  • INFINITASを遊ぶPCのスペックとしては、ミドルクラス以上のPCが無難。

  • グラフィックも120FPSでの張り付きを保証する程度には見たほうが良いかも

  • サウンドカードはサンプル数の設定を変えれるようなものを選ぶのが良い

  • 配信する場合はゲーム音出力用の入力を確保し、そのモニターは切っておく。

  • サウンドのサンプリングレートはすべて44100Hzに設定する。

良き音ゲーライフを。

サポートいただくと、生活費や取材費などの活動のために有意義に使わせていただきます。よろしくお願いします。