DJMAX RESPECT Vでプレイ中の曲名をOBS上に表示する
結論
Steamのフレンドリストをキャプチャした。
右下あたりのこまか~い文字が問題のやつ。
超泥臭い実装とやろうとしてうまくいかなかったことは続きにまとめる。
もくじ
やりたいこと
TwitchにOBSからストリームするDJMAX RESPECT V用の配信レイアウトにおいて、「現在プレイ中のモード」「曲名」「ボタン数と難度」を表示する。
実装
Steamのフレンドリストをキャプチャしてクロップしてフィルタをかけて黒地に白文字に見せている。
Steamのフレンドリストは青地で、ゲームをプレイ中だと緑の文字が表示される。DJMAX RESPECT V(念のため:Steam版)はプレイ中のモードから難度までの欲しいもの全部がフレンドリストに載るため、これをキャプチャするだけでよかった。ただし、OBS側のレイアウトと色が合わなかったので、キャプチャしたものにOBS側でフィルタをかけた。ほかの文字の大きさに合わせて拡大したところガビガビしたが、読めるのでまあええかということで。当然、表示させたいときにはこのウィンドウを開いておく必要がある。
フィルタのメモ
・フィルタ1:色補正 ガンマ-0.20 / コントラスト2.33 / 輝度-0.0932 / 彩度-1.0
・フィルタ2:クロマキー 色キー青 / 類似性216 / 滑らかさ67 / コントラスト4.0
Steamのオンライン状態を「居留守」にすると文字が明るめのグレーになる。もしかしたら色を抜く手間が減らせるかもしれない。
カバーできないこと
Steamのフレンドリストの表示がプレイヤー名+ゲーム名+プレイ内容の3行であることを前提にキャプチャしているため、各モードから抜けると2行になってレイアウトがやや崩れる。自分のクロップ結果だとモード名の頭が切れる。
また、ミッションモードだとミッション名のみ表示されて曲名が表示されない。
やろうとしたけどうまくいかなかったのでやめたもの
・Steamのプレイヤープロフィールのページ(https://steamcommunity.com/id/[任意のID])から拾おうとする
そもそもプレイ中のモードが出てなかった。
・APIから拾おうとする
リファレンスとにらめっこしたりAPIキーをもらってきたりしたけど、それっぽい情報を吐いてなかった。
・Discordのプロフィールから拾おうとする
Rich PresenceにSteamのものに加えて経過時間まで表示されている。初めはここから文字を拾ってこれないか考えていたが、キャプチャすることにした。Discordからキャプチャしていると新着メッセージを読めないなあということでSteamのフレンドリストにたどり着いた。
もっとスマートにやりたかったんだけど、満足してしまった:)オワリ