見出し画像

入力可視化ツールのIIDX Input Capturerを開発した経緯とか

はじめまして。note初投稿のまさおです。

私は2016年頃から、beatmania IIDX(いわゆる弐寺)に関連するツールをいくつか開発してきました。

今回はその中で、INFINITASをプレイする際に使用する入力可視化ツールのIIDX Input Capturerを開発した経緯についてお話します。

(先日リリースした最新版でDP表示やキーコンフィグ機能を追加しました。よければ使ってみてください。)

開発のきっかけになった課題

IIDXプレイヤーの皆さんは、自分がプレイしている最中に以下のような経験をしたことはありませんでしょうか。

・コンボが切れたけど、どのノーツをミスしたのかは認識できなかった
・リズム通り押したはずなのに、なぜか光らなかった
・FASTが多く出たから遅めに押すことを意識したら、他の所が光らなくなってしまった

これらの事象が起きた際、自分の地力が十分にあれば修正していくことが可能です。しかし、譜面の難易度が上がると「自分がどこを間違ったのか」を正確に把握するのは難しくなり、正しく修正することができなくなっていきます。

私は、現状のIIDXでこの問題が起きやすいのは「ゲーム上での詳細なフィードバックが無いため」だと考えています。

例えば、曲が終わった後に黃グレやFAST/SLOWの総数は見えるけど、どのノーツで出たのかは確認できない(録画をコマ送りしてやっと分かる)。プレイ中にFAST/SLOWを表示しても、同時押しがズレた時や高密度な譜面でミスした場合には、何がダメだったのか認識するのが難しい。

こういった状態のままプレイしていると、自分が正しく押せている箇所と間違っている箇所の判断が付かなくなり、最終的に癖がついて何もできなくなる...という悪循環に陥ってしまいます。

この問題を解決するには「ミスした箇所を正確に認識すること」が重要です。しかし、認識の精度には個人差がある上、日々の体調などにも大きく影響されるため、常に正しく認識することは簡単ではありません。

私は長年IIDXをプレイしてきた中でこれらの問題を感じることが多く、「認識を補助するツールを作れたら、上達の役に立つのではないか?」と考え、開発を始めました。

IIDX Input Capturerの機能

冒頭に紹介したIIDX Input Capturerは、「PCでINFINITASをプレイする際にコントローラーの入力箇所を可視化すること」を目的としたツールです。

OBSなどでINFINITASの画面とツールの画面を並べて表示することによって、自分がどのように押したのか確認することができます。

実際に私の配信で使っている様子はこちらです。画面左端にツールを表示し、OBSの設定でゲーム画面を遅延表示させることで、実際の譜面と押した箇所が同時に見えるよう調整しています。

これにより、後から見返した際に自分がどこをどのように押したのか、より視覚的に把握できるようになります。

例えばこの配信では1曲目にBad Routineを選曲し、中盤の速いトリル(3分44秒頃~)でGOODが1つ出ています。この部分について、動画内のIIDX Input Capturerの表示を確認してみると以下のようになっていました。

画像2

プレイ中に自分で認識できたのは「左手でGOODを出した気がする」ことだけでしたが、動画のジャッジの数やツールの表示を合わせて確認することで「左手の1つ目の2鍵が少しだけ押し遅れていた」というように、問題を正確に認識することができました。

後述の通りゲーム側と正確に同期はできていない点や、確認のために画面を切り替えたりする手間などは必要ですが、上記のように自分の感覚だけでは認識し切れなかった場合の補助として使うことが可能です。

入力検知の仕組みと制限事項

IIDX Input Capturerには以下の2つの制限事項があります。

1. INFINITASには干渉せずに入力を検知しているため、その入力がどのように判定されたのかツール側では認識できない
2. フレームは同期していないため、ミリ秒単位で正確に検知できている訳ではない

これらはツールの仕組みから来るものです。

IIDX Input CapturerはINFINITASとは別のアプリケーションとして起動し、コントローラーからの入力を直接確認しているため、その入力がINFINITAS側でどのように判定されたのかは認識できません。(※下図はイメージで、実際の動作とは異なる可能性があります)

画像2

また、アプリケーション間のフレームは同期していないため、例えば「INFINITASは0.01秒の時点で動いたけど、Input Capturerは0.03秒に動いた」という場合は実際の判定と0.02秒分ズレて表示され、PCが重い場合にはこのズレがより大きくなる可能性があります。

とはいえ、入力時刻が逆転したりする訳ではないので、今回のようにおおよそどのタイミングで入力したのかを確認する目的であれば実用の範囲だと考えています。(正確に表示されているかどうかは、ご自身のPCで起動して確認してみてください)

さいごに

いつかINFINITASにも家庭用のトレーニングモードのような機能が実装されないかなと妄想しつつ、これからも可能な範囲でツールを作っていこうと思います。

不具合や要望などがありましたら@masaoblueまでご連絡ください。

それでは!

この記事が気に入ったらサポートをしてみませんか?