見出し画像

【Rotaeno】レーティングのしくみ

最近、Rotaenoという音楽ゲームにはまっている。音ゲーとしてはかなり新参の部類で、スマホを回す操作が特徴的だ。
Rotaenoを開発したDream Engine Gamesは香港の会社らしいのだが、調べてもRotaeno以外の情報が出てこない謎の会社である。まあ近年のスマホ音ゲー業界においてこういう事例は珍しくない。別に気にしなくてもいいだろう。

本来このゲームは有料なのだが、少し前に1周年を迎えたことで本体が無料になっていた(現在は終了)ためその時に始めた。今や自分のメイン音ゲーの一つと言えるだろう。何より基本的に手持ち親指プレイが最適解なので姿勢や周囲環境などのセットアップをせずにだらーっと遊べ…いや、本題とは特に関係ないのでこの辺にしておこう。自分はゲームのいいところを説明するのが苦手なので、布教は他の誰かに任せることとしよう。


さて、このゲームにはレーティングシステムというものが存在する。プレイヤーの実力を数値化した、最近よく見るアレである。

アレである

そんなものがあるなら、できるだけ上を目指したくなるのが音ゲーマーという生き物である。だが、それにはまずこのレート値がどのように算出されているか知っておく必要がある。このnoteでは、それを記していくことにする。

といっても、実を言うと既にレーティングシステムについて詳細に書かれた資料は存在する。
しかし当該資料は中国語で書かれており、日本語で書かれた資料は執筆時点で存在していない。よって、ここで改めて日本語でまとめようと思う。
以下の記述が主にこの資料を基にして書かれていることは、予め留意していただきたい。

余談。
このnoteを書くにあたって例の動画を再履修したのだが、キャッチノートが無かったのでゲームシステムの説明には使えなかった。残念。


レート枠の内訳

レーティングの計算に使われるのは、曲・譜面毎に設定された定数(以下、譜面定数)とその譜面のスコアを基に、所定の計算式で算出された値(以下、単曲レート値)。
この値は、ハイスコアのみで算出される値(以下、Best枠)と直近のプレー状況から算出される値(以下、Recent枠)が別々で記録されており、その両方がレート値の計算に使われる。

…要するに、いわゆるCHUNITHM式である。しかし計算式はCHUNITHMのそれよりも少々複雑となっている。
まずRecent枠だが、直近にプレーした30譜面の単曲レート値(例外有。後述)から最も高い値10個が選出されている。これは分かりやすい。
問題はBest値の方で、全譜面分のハイスコアベースの単曲レート値の中から最も高い30譜面が選出されているのだが、その中でも単曲レート値上位の10譜面はレート値における比重が大きくなっている。

計算式にすると以下。

レート値=
 (Best枠1~10位の単曲レート値平均)×0.525
+(Best枠11~30位の単曲レート値平均)×0.225
+(Recent枠1~10位の単曲レート値平均)×0.25

Best下位20譜面の計算後の値を全て合計してもBest上位の合計に届かないほど、Best上位が重要視されていることが分かる。そんなわけで、突出して得意な曲が数曲あればレート値が高くなりやすい仕組みになっているのである。

譜面定数とは

このゲームの難易度表記は執筆時点でLv.1から13まであり、このうち10~12には少し難しい+表記も存在するため、表記上の難易度は16段階ということになる。が、内部的には最小0.1単位でもっと細かい難易度付けが為されている。この値が譜面定数である。

まずLv.6以下だが、これらの譜面定数は全て整数である。小数で表すとx.0となる。

続いてLv.7。この難易度には、譜面定数が7.0のものと7.5のものが存在する。Ⅲ譜面を例に挙げるなら、A Time for Everything [Ⅲ]は7.0、A Clock [Ⅲ]は7.5となっている。

そしてLv.8以上だが、これらの譜面定数は全て0.1刻みで設定されている。
Lv.10以上かつ譜面定数の小数点以下が.7以上の譜面は難易度表記に+が付いているが、+表記が存在しないLv.8~9でも譜面定数x.7~x.9の譜面はある。
例えば、Ⅱ譜面の中で最も譜面定数が高いGALACTIC WARZONE [Ⅱ]とPUPA [Ⅱ]の譜面定数は、どちらも8.9となっている。

執筆時点で最も譜面定数が高い(=最も難しいとされている)譜面はGALACTIC WARZONE [Ⅳ]で、その値は13.3である。詳細は後述するが、現状では単曲レート値17以上は絶対に達成できず、Rotaenoを完全に極めたとしてもレート値は16台止まりである。

譜面定数のデータはこのページにまとめられている。しかし情報が若干古く、KALPAコラボ以降の楽曲のデータが執筆時点で存在していない。やろうと思えば自力で調べられなくもなさそうなので、気が向いたらそちらも調べるかもしれない。

(8/21追記)
どうやら件のページがWikiごと吹っ飛んでしまったらしく、リンクが切れてしまっている。辛うじてⅢ以上の定数表であればWayback Machineにアーカイブが残っているものの、残念ながら全難易度の表はアーカイブが無い。
…Ⅱの分を調べなおせと?

(8/30追記)
今見たらなんか復活しとったわ。
台風でサーバーをやられてたのだろうか?

単曲レート値の計算式

具体的な計算式はスコアによって異なる。具体的には以下の通り。

-9999 #とは

以上の式で小数点以下第4位まで算出されるのだが、100万点を超えた辺りから単曲レート値が激しく伸びることが分かる。
とりあえず、

  • 950000点で譜面定数と同値

  • 980000点で譜面定数+1

  • 1000000点で譜面定数+2

  • 1006400点で譜面定数+3

この辺を頭に入れておけば十分だと思われる。

このゲームにおけるスコアの最大値は1010000点。よって、単曲レート値の最大値は譜面定数+3.6である。例えば先述のGALACTIC WARZONE [Ⅳ]の場合16.9が最大値。これを狙う場合、All Perfect+(いわゆる理論値)を取らなければならない。

Fail(クリア失敗)かつ計算結果が6.0以上の場合、単曲レート値は6.0になる。
あと計算結果が0未満の場合どうなるかは調べていないが、多分0になると思う。そうでなければ放置プレーを続けた場合えらいことになる。

Recent枠の値はプレー時のスコアを直接参照するのだが、これが1000000点以上の場合、レート値は下がらない。
実際にどのように変動するのかについてだが、参照元の資料の情報が若干欠けておりよくわからない。

如果游玩的结果为ex以上的分数(>1000000),则Rating值不会降低。

如果某次游玩的单谱Rating比近期表现队列中的最小值大,那么会移除队列中单谱Rating的最小值,而不是移除游玩时间最早的成绩;如果比近期表现队列中的最小值还小,则该次成绩将直接被忽略,不加入队列,也不移除队列中任何成绩。

(以下Google翻訳)
ゲームの結果がex以上(>1000000)の場合、レーティング値は下がりません。

特定のゲームの単一スペクトル レーティングが最近のパフォーマンス キューの最小値より大きい場合、最も早いプレイ時間のスコアを削除するのではなく、キュー内の単一スペクトル レーティングの最小値が削除されます。最近のパフォーマンス キューの最小値よりも高いがまだ小さい場合、結果は直接無視され、キューに追加されず、キューから削除されません。

Rotaeno - 萌娘百科より引用
(CC BY 3.0 CNに基づく)

引用文を見る限り、Recent枠の最小値よりも低い値が記録されることは無いように思える。しかし100万点未満の低いスコアを出した際、現にレート値は下がることがある。この辺がどのようになっているのかは、改めて調査して追記したいと思っている。

レート値を高めるコツ

まずは低難易度のEX+(1008000点以上)を狙う。これに尽きる。
先述の通りAP+を出せば単曲レート値は譜面定数+3.6になるし、そうでなくともEX+を出せば+3.4以上になる。これが非常に大きく、Lv.11~11+のEX+がLv.13のEXを上回ることもザラにある。
それに、Ⅲ譜面は難しいものでもⅣ譜面と比較して基礎的な配置が多い傾向にあり、All Perfectを出しやすい。地力を付けるという意味でも、まずはここから始めるといいだろう。

個人的には、有料パック『晩夏の夢』の楽曲をおススメしたい。
全体的に取っつきやすくスコアが出やすい楽曲が揃っている。特にインドア系ならトラックメイカーはレート14~15辺りであればⅢもⅣも稼ぎの部類である。ただし曲が結構長いので注意されたし。

基本曲から選ぶなら、Rush EInverted World辺りか。
どちらも表記難易度こそ高いものの、全体的に素直なTAP交互連打が主体で、下の難易度をやりこんで基礎を身に着けていれば十分戦える譜面である。後者はサビ終わりのリズムが少々難解なためその部分は予習を推奨。
ただRush Eは先行体験曲ゆえに執筆時点で解禁が中々に重い(トラベラーバッジ25個)。余裕が無ければ暫く様子を見よう。

まあ、一番手っ取り早い解決法は全曲やることなのだが。

おまけ:Googleスプレッドシート用 単曲レート計算式

=ROUNDDOWN(IF(D2<950000,C2-1+(D2-900000)/50000,IF(D2<980000,C2+(D2-950000)/30000,IF(D2<1000000,C2+1+(D2-980000)/20000,IF(D2<1004000,C2+2+(D2-1000000)/10000,IF(D2<1008000,C2+2.4+(D2-1004000)/4000,C2+3.4+(D2-1008000)/10000))))),4)

以上まるっとコピペ。多分Excelでも使える(未確認)
使い方

元々自分用に作ったものなので、900000点未満のスコアには対応できていない。まあ、900000点に乗らないのであればそもそもレート値を気にする段階ではないので特に問題はないと思われる。

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