002c 譜面難易度計算プログラム blv

Category: Soft

BMSの譜面難易度を計算するプログラムは、 すでにいくつかある。

しかし、 それらとはまた違う計算方法を思いついた。

最終更新日時:2006年09月30日

動機

音楽ゲームのそれぞれの譜面には、 難易度が表記されている。 しかしその難易度の付け方は、 付ける人の主観によって決まってしまうことが多い。

得意なもの・苦手なものが人によって異なることもあり、 同じ譜面でもどのくらい難しく感じるか、 というものはプレイヤごとに違ってくる。 界隈で見られる「これは難易度詐欺(実際の譜面が表記より難しく感じること)」という台詞がこの問題を如実に物語っているといえよう。

blv はこの重大な問題に対処するため、 譜面に対して定量的な難易度評価を行うために開発されたソフトウェアである。 まず bms の難易度評価の標準化を達成し、 いずれは全ての音楽ゲームの……

というのは嘘で、 結局 blv で算出した難易度だって「blv の主観」になってしまうわけだけど、 別に今更新たに主観を1つ追加したってどうって事ないよね。

ダウンロード

とりあえず、 Ver0.24(250kB) を上げておく。

仕様が固まっていないゆえに、 ちょくちょく数値が変わるので、 まだ難易度測定には使えなさそう。 誰も使わないだろうけど一応。 とりあえずいろんな bms を解析して遊んでみるぶんには面白いんだけどね。

開発情報

現在、 開発中です。 いつ完成するかは不明。

blv開発版スクリーンショット
なんだこの数値と時間は。

"普通"の bms なら1秒かからないで計算できるが、 bpm変化命令が大量にあるので、 ソートに時間がかかっているようだ。

Random があったり、 ロングノートの規格が複数あったり、 各要素の順番はバラバラで良かったりするからもう大変。

計算方法概要

1つずつノートの難易度を計算して、 全部足したものとなる。

さて、 その「あるノートの難易度」であるが、 「周辺のノートに対する、 時間差やラインをもとに計算した値の合計」という感じで計算しようと思う。 TeXっぽく書くと

total = sum^{N}_{m=1} { sum^{N}_{n=m} { D(n-m) * W(m,n) } }

という感じ。 D は2つのノートの時間差から値を求める関数で、 W は2つのノートのラインから値を求める関数。

ただ、 この方式は、 かなりの勢いで TOTAL NOTES に引っ張られがちのようだ。 何らかの形で補正をしないと、 チョウの標本や afterlife のような一極集中型の譜面を過小評価してしまう。

参考リンク