誰も止めないので書けるだけ書く

読みやすくするように頑張ります

音ゲー欠陥指標を見直そう

Ashrmです。今日は私が作ったシクスターゲートの(私しか使っていない)指標についての情報更新です。つまり大体趣味の記事です。前回記事はこちらをどうぞ。

 

terrastellal.hatenablog.com

要するに、「理論値力」を過剰に厳しく見るMental値と、「スコア詰め力」をもう少し甘く見るPhysical値を各Supernova、Quasar譜面に対して定め、これらのLUNAR MODE/SOLAR MODEそれぞれで総和を求めることで各モードの達成度というべきものを測るという内容でした。

以下、「単押しノーツのスコア」とか「1ノーツのスコア」などという場合は単押しノーツ1個をBLUE STARで処理したときに加算されるスコアの数値を指します。また、「ノーツ数」は単押しノーツとホールドノーツ(LN)をそれぞれ1 ノーツとして数えたものです。

まず最初に、Mental値の計算を見直しました。Mental値は主に「理論値力」をみるために作られており、ある譜面について、理論値からの失点をWHITE STARの数に変換した「欠点」の近似値であるf*1を、その譜面のスコアxに対して

\displaystyle{f = \frac{1000000-x} {u(d)}}

とし、つまりu(d)は「単押し1ノーツのWHITE STAR失点を近似的に定めた値」で、ここでは譜面の難易度数dに対して定めているわけですが、これを用いてその譜面のMental値R_M

\displaystyle{R_M =2^{d-7}e^{- f} }

という豪快な計算式で求めていました。

 

ここで、前回記事ではu(d)を下表のように定めていました。

 

d 7 8 9 10 11 12 13 14 15
u(d) 500 450 400 350 300 250 250 200 150

 

これは、難易度数7の譜面を理論値埋めしている間に見出した「WHITE STAR 1つあたりの失点は大体こんくらい」と414 PER SPEED (LUNAR QUASAR: 難易度数15)の1ノーツのスコアからまずu(7)=500, u(15)=150としてその間をキリのいい数字になるように適当に補完したものであり、最適な近似値とは言えないわけで*2、これを運用しているうちにどんどん「全譜面の単押し1ノーツあたりのスコアを調べればfがもう少し実際の「欠点」に近づくようにu(d)を定められる」という事実を無視できなくなり、我慢できなくなって全部調べました。

ここで、シクスターゲートのシステムにおいては、「始点判定1コンボに\frac{1}{2}ノーツのスコア+伸ばしている部分のコンボに\frac{1}{2}ノーツのスコアを分配」というロングノーツのスコアの仕組みがあるため、1ノーツのスコアはただ単に1000000を最大コンボ数で割ったものではなく、ゲームで実際に1ノーツ叩いて調べなければなりません。

ゲームのシステム上スコアは整数値でしか表示されませんが、厳密には1ノーツのスコアは\displaystyle{\frac{1000000}{整数ノーツ数}}のはずなので、\displaystyle{{1000000}/{(1ノーツのスコアの整数値)}}を四捨五入することで必ず整数値であるノーツ数を計算して、それで1000000を割った数を1ノーツのスコアとしました。ただし、ノーツ数が大きい譜面では、1ノーツのスコアの整数値だけではノーツ数を厳密に特定できない場合があるので、そのときは10ノーツのスコアの整数値を10で割って1ノーツのスコアの整数値の代わりに用いました。ちなみにそのような譜面は難易度数13以上で急増しました。

そこから、各難易度数での「単押しWHITE STAR1個の失点」の平均を求めると下表になりました。比較のため、以前のu(d)の値も載せます。

d LUNAR SOLAR 全体平均 u(d) 現状との比較
7 519.4878 528.1402 523.4535 500 厳しすぎ
8 387.7123 415.7601 401.7362 450 甘すぎ
9 340.1143 350.8998 345.7145 400 甘すぎ
10 303.4283 306.2180 304.5273 350 甘すぎ
11 264.7403 294.9161 280.8341 300 甘すぎ
12 245.3209 252.6355 249.3439 250 結構あってる
13 198.8869 213.0205 206.2061 250 甘すぎ
14 185.8897 184.2930 185.0618 200 やや甘すぎ
15 155.4323 167.2766 163.3285 150 やや厳しすぎ

 

かなりの割合で1ノーツのスコアを過大評価していたようです。これが過大評価だと、WHITE STARがある程度多く出てもMental値が加算されてしまいます。そこで、u(d)を下表のように修正しました。

 

d 7 8 9 10 11 12 13 14 15
u(d) 525 400 345 305 280 250 205 185 160

 

結果、LUNAR/SOLARでMental値がそれぞれ数10点単位で下落しました。厳しい…

Mental値を0.0001点加算するのに許容されるWHITE STAR数は難易度数15では平均して14.8だそうです。理論値を取ったときに得られるスコアを2^{d-7}にすることで「理論値からある程度遠くても加算できる」と思ったのですが、許容範囲はそんなに広がりませんでした。

ここで、Mental値の計算にここでの調査で得られた各譜面ごとの厳密な「単押しWHITE STAR1個あたりの失点」の値をなぜ使わなかったのかですが、ここでは私の考える「ゲームらしさ」を優先したというのが短い答えです。同じ難易度数でも物量が多い方が厳密な「欠点」に対するMental値へのダメージが少なくなる、というのはゲームらしいと思うし、計算式にノーツ数が含まれないのもゲームらしいと思います。なんだそれ。

 

このMental値の調整を経たことを考慮しつつ、現在の私のMental値とPhysical値を見てみましょう。

2022年9月20日閲覧

理論値が増えてMental値が増大し、低難易度のスコアを伸ばしてコツコツとPhysical値を伸ばしました。

 

ここでMental値とPhysical値をさらにモチベーションに活かせるよう、さらに指標を追加しています。曲追加によりそれぞれの理論値が増加するのに対応する目的もあります。一つはPhysical値の理論値に対する割合%ですが、Mental値を単なる割合%でまとめるのもなと思ったので、\ln \frac{Mental_{理論値}}{Mental}をRankとして表しました。Mental値は指数関数的なものですが、一応「理論値力」を線形に表すつもり*3であり、その対数を取ると「理論値力の階段」を作れると思ったわけです*4。なんだか本末転倒のようにも思えますが、Rankの整数部分を「難易度数の低い譜面から理論値埋めすることによって」上げる条件はおおよそ下表のようです。ただ、例えばRank2を取得するために難易度数11の簡単な譜面の理論値をとるのはかなり現実的だと思います。これは今後の曲の追加により変化する可能性があります。

Rank0 LUNAR 12まですべて+13数曲
SOLAR 12まですべて+13数曲
Rank1 LUNAR 10まですべて+11の大半*5
SOLAR 11まですべて+12数曲
Rank2 LUNAR 9まですべて+10の大半
SOLAR 9まですべて+10のほとんど
Rank3 LUNAR 8まですべて+9の半分弱
SOLAR 8まですべて+9のある程度

Rank0は全理論値からはまだまだ遠いですが非常に厳しい条件で、ここまで来た人は音ゲーを破壊しています。

 

さて、Mental値調整のための調査から各譜面の1ノーツのスコアが得られたために、各譜面のスコアから「欠点」をほぼ厳密に計算できるようになったので、これをスコア表に組み入れました。

J列に書かれているのが各譜面の「欠点」です。先述の方法により「WHITE STAR 1個の失点」は正確に求められていますが、スコアは整数値で表示されるために、割り算の結果は~10^{-4}程度の誤差が生じます。LN始点でのWHITE STARなどのことがあるので、小数第1位まで表示しています。

この表示がPhysical値・Mental値以上にスコア詰めのモチベーションアップに貢献することになりました。

まずスコアを詰められそうな曲を選ぶのにかなり役立ちます。同じ難易度数の譜面で、ある譜面だけ「欠点」が異常に大きい場合、その譜面に苦手要素があるか、ただ単にスコア詰めの可能性に気づいておらずプレイをしていないだけかのどちらかになるのでプレイして「欠点」を減らしに行けます。

さらに、スコア更新のためのWHITE STAR数の上限を直接示しているのが非常に大きな効果をもたらしています。999000点台の譜面が並ぶ中一つだけ997000点台の譜面があるとスコア詰めしたくなりますが、具体的に何落ち以下ならスコアが詰まるのかがわからないと不安です。これを可視化することでスコアアップをはかりやすくなります。

副次的な効果として、比較的低難易度であってもスコア詰めがPB狙い一辺倒でなくなったのも非常に大きいと思います。PBにある程度近く、スコア更新のための許容WHITE STAR数がわからない場合、とにかく「WHITE STAR以下を少なく、少なければ少ないほど良い」と思って、結局はWHITE STARが1個出た瞬間にやり直すPB狙いになって非常に疲れます*6。ところが「欠点」の可視化によって許容WHITE STAR数がわかると、自分のプレイに対してより寛容になれます。結果として、「1落ちが出るまで理論値を狙わなくてもよい」という意識が自分の中に芽生えました。一方、PBをとるとMental値が大きく伸びるので、PBを狙わなくなるわけではありません。

 

  ここまでのことをまとめると、いろいろな計算式を用いてレーティングめいたものを作ってモチベ―ションにつなげようとしたのですが、そのモチベーションに一番寄与しているのが素直な「スコアが何落ちに相当するか」の計算だったという話です。なんだか拍子抜けですね。もちろん、全曲をまとめた指標は推移から自分のスコア的な進歩を感じることができるので、Physical値やMental値は無駄ではなかったとは思います。

 

 

 

*1:前回記事ではfを「欠点」と呼んでいたのですが、この記事のその後の内容のこともあり「欠点」を前回記事脚注の記述にある「失点をWHITE STARの数に換算した値」と定義し、fとは区別することにします。なお、これはLN始点でのWHITE STAR失点と単押しノーツのWHITE STAR失点が異なるので明確な定義とは言えません。ここでは単押しノーツのWHITE STARの数に換算するつもりなので、厳密には「失点を単押しノーツのスコアの\frac{1}{4}で割った値」になります。LNを考慮すると前回記事のWS+YS \times 3+RS \times 4はプレイ中に「欠点」を概算するのに役立ちはしますが正確ではなく、厳密な式を書くと

\displaystyle{{WS}_{SN}+ {3YS}_{SN}+ {4RS}_{SN} + \frac{1}{2} {WS}_{LN}+\frac{3}{2} {YS}_{LN}+{2RS}_{LN始点} +2 \sum_{各LN} \frac{そのLNの始点以外で出たRS}{そのLNのコンボ数-1}}

で、つまり式を書かない方がいいです。

*2:2022/10/03追記:今にして思えば、ノーツ数は中難易度~高難易度では難易度数に対してほぼ線形に変化すると考えられるので、ノーツ数の逆数に比例しているはずの「WHITE STAR失点」をこのように補完したのはかなり雑ですよね。

*3:つまり、Mental値100~2002000~2100で同じだけ理論値力に差があるようにという意味です。今そう書いて本当にそうなのかすごく疑わしく思えてきました。

*4:あるいは、大きく右に歪んでいるであろうMental値の仮想的な人数分布を正規分布に近づけるという意図

*5:LUNARは難易度数10の譜面が非常に多い

*6:しかも5000回プレイ実績の達成も遠のいてしまいます。