【プロセカ】「ノーツの表示時間」ってどれくらい?ざっくり計算、調整できるようにしてみた
はじめに
はじめまして、ぬるま湯と申します。
「プロジェクトセカイ カラフルステージ! feat. 初音ミク」(以降プロセカ)プレイ歴は当記事を書いた時点で1年半くらいです。
このような投稿をするのは初めてなので、拙い文章ではございますが、ご了承ください。
注意
当記事は個人で行ったガバガバな検証要素があります。
もっと正確な情報が欲しい、という方は各々で検証し、公開いただけると助かります。
というか検証してください。お願いします。
あと同じようなことをすでにやっている偉人がいらっしゃる場合は教えてください。
事の経緯 #興味ある方は読んでください
プロセカのゲームアップデート ver3.5.0にて、リズムゲームオプションの機能が追加されました。
1つ目のアップデートにより、細かくノーツ速度をいじれるようになりました。
また2つ目はいわゆる「SUDDEN」と呼ばれるもので、視認性をよくすることができるといわれています。
神ゲーかな?
ただ、音ゲー初心者の私が一つ困ったことがありました。
「これ、どうやって調整すればいいのだろうか?」と。
「beatmania」だと、プレイ時にノーツの表示時間を表示してくれるため、この数字を見ながら調整すればよいわけです。
この緑文字がないと調整しにくい。設定の数字を変えながらこうでもないああでもないといいながら今までの感覚を無駄にしながら調整しなければいけません。
表示時間をもとにした調整方法をググっても出てこないため、困ってしまいました。(こういうのって本当に誰もやってないんですかね?もうだれかやってたら教えてください(切実))
困り果てた末、しょうがないので自分で作ってみるか、ということでスプレッドシートを使って計算できるようにしました。
検証方法 #興味ある方は読んでください
最近iPadを購入したため、検証をiPadで行いました。
ただiPad内の録画機能だと録画時のフレームが落ちてしまうようなので、もともと持っていたキャプチャーボードにつなげてPCに表示して、画面を録画して測定することにしました。
ノーツの表示時間の定義
他ゲームでどのように表現しているかわからないのですが、当記事においては「画面描画60fpsとしたとき、画面にノーツが見えてから判定ラインで±0の位置に来るまでのフレーム数[単位:f(フレーム)]」と定義します。
検証環境
検証環境を残しておきます。
検証方法
①ノーツの速さを1~12まで変えながら画面を録画し、動画再生ツールでコマ送りしてノーツの表示時間を計測する。
②同様にノーツの開始位置を0~100まで変えながら、ノーツの表示時間を計測する。
③それぞれの結果をエクセル上でグラフにして、近似式を求める。
どこまで細かくやるかですが、全体の雰囲気を確認するためにノーツの速さは1刻み、ノーツの開始位置は5刻みで計測しました。
あまりに大変だったのでもっと細かく調べたい人は頑張ってください。私は力尽きました。
検証結果 #興味ある方は読んでください
検証結果を示します。
①ノーツの速さとノーツの表示時間の関係
わかったこと
・ノーツの速さを変えたときのノーツの表示時間は線形では変化しない
→ノーツが流れてくるレーンに奥行きがあるため一定で変わらない
・ただし近似式は2次式でなんとなくできそう?
・ノーツの速さ:1、ノーツの開始位置:0としたとき、ノーツの表示時間は240f(4秒)である
→ちょうどいい数字で計算しやすい!
②ノーツの開始位置とノーツの表示時間の関係
①でノーツの速さが1、ノーツの開始位置:0としたときのノーツの表示時間が240fと分かったため、ノーツの速さを1固定にして開始位置を変更して測定していきます。
わかったこと
・ノーツの開始位置を変更したときもノーツの表示時間は線形では変化しない
→ノーツが流れてくるレーンに奥行きがあるため一定で変わらない
ノーツの表示時間をざっくり計算できるようにする
検証結果から、本題に戻ります。
ノーツの表示時間を計算できるようにしていきます。
ノーツの表示時間について、今回は下記のように計算します。
(ノーツの表示時間[f])
=240[f]×
(ノーツの速さによるノーツ表示時間の減少割合[%])×
(ノーツの開始位置によるノーツ表示時間の減少割合[%])
要するにノーツの表示時間を短くする要素が2つあるので、基準から要素を2つかけ合わせようということです。感じてくださいフィーリングです。
検証結果①、②に出てきたグラフを240fを100%として減少割合をグラフにします。
それぞれの値をエクセルに突っ込み、2項式の近似式を取ります。
近似式を取る際、式を可能な限り正確に取りたかったため、範囲をそれぞれ制限しました。
ノーツの速さは9~12、ノーツの開始位置は0~20までで近似式を取りました。
注:範囲を制限したのは、エクセルにおける近似式における係数の丸め誤差によって全範囲だとうまく計算しきれなかったためです。
この辺もう少しいい方法ないのかな
自動計算してみる
私はプロセカをiPadで下記の設定にて遊んでいます。
ノーツの速さ:10.45
ノーツの開始位置:5
ちょうどいいので、近似式から計算してみます。
ノーツの表示時間は30.84fらしいです。
目測で計測した結果は・・・31.1~.2fほどでした。
うーーーーん0.3~.4f誤差・・・まあまあ良さげ?
ノーツの開始位置を調整してみる
自動計算がまあまあいい精度でできるようになったので、ノーツの開始位置を変更しつつ、ノーツの表示時間を変えないようにできるか試してみます。
これこれ、これがやりたかったんだよ。
表示時間、ノーツの開始位置がわかっているので、逆算すればノーツの速さを決めることができます。
ただし近似式自体が範囲を制限しているので計算結果が範囲外になるとおかしくなるため注意が必要です。
試しにノーツの開始位置を「15」にして、ノーツ速度を自動計算してみます。
ノーツの速さを「9.44」にすれば、ほぼ同じノーツ表示時間でできるらしいので、プレイしてみます。キャプチャは4周年曲「熱風(MAS)」、一応AP済。
いつもプレイしているときはこんな感じ。
ツールが出した数値にしてみたときはこんな感じ。
ノーツ間隔など、明らかに違いますが、表示されているノーツの内容はほぼ同じになっています。いい感じ。
変更した結果のリザルト。
いままでって開始位置変えるとノーツの表示時間が狂ってしまって、調整に時間がかかってたと思うんですが、この状態からノーツの速さとか開始位置を調整していけばいいんですよ、革命的!
終わりに(スプレッドシート公開)
スプレッドシートを公開します。
記事を書いてる時点で上述した使用方法だけしか自動計算できませんが、気が向いたらいろいろできるようにしたいと思います!
表示させたい時間を設定して速さを逆算する・・・とかもできそう。
これを読んでくださっている方の助けになれば幸いです。
ここまで読んでいただきありがとうございました。
え、ソフランはどうするんだって?
……暇があったら調べてみます。