はじめに
皆さんはArcaea(アーケア)をご存じだろうか?Arcaeaとはスマートフォンで遊べる超感覚リズムゲームです。2d/3dの複合的な操作、グラフィックデザインの美しさ、圧倒的な音楽のクオリティ。
基本無料で遊べるとは思えないゲームです。私も大好きでよくプレイしています。
そんなArcaea、ゲーム内にはプレイヤーの実力を表すポテンシャルというものが存在する。楽曲のレベル、プレイヤーがたたき出した総合スコアによってポテンシャルが付与されます。
今回はこのポテンシャルが付与されるな内部計算の部分を自分で作ってみたいと思いました。
譜面定数について
Arcaeaの曲にはすべての楽曲に譜面定数というものが存在している。表記上は同じ難易度9の曲であっても9.0や9.5など0.1刻みで細かく決められている。
スコア&ポテンシャルについて
ArcaeaはMAX10000000+その曲のコンボ数でスコアが定められている。
スコアによって特定の値が譜面定数に加わりその曲のポテンシャルになる。
このポテンシャル数値best30曲(べ枠)に直近プレイした30曲のポテンシャル数値上位10曲(リセント枠)のポテンシャルを足して40で割ったものがプレイヤーのポテンシャルとなる。
(Arcaeaやってないと少しわかりずらいかもしれない)
プログラムについて
今回はExcelを利用してべ枠の平均部分だけ作っていこうと思う。(リセント枠は時間がなく間に合わなかったので気が向けば作ろうと思う。)
流れとしては、事前に曲名とその曲の譜面定数を登録しておき、スコアを入力するだけでポテンシャル、評価、べ枠内での順位を返してくれる計算ツールとなっている。
分けて紹介していこう。
各項目の計算式を見ていこう。
これは評価を出す計算式である。
最初のIF文はスコアが書かれてないときに空白を返す文である。
次からのIF文はスコアの値によって特定の文字を返している文です。
これによって実際のゲームと同じ評価を出すことができます。
最初のIF文は先ほどと一緒なので説明は省略する。
B6(譜面定数)に H6(スコア)によってどの値を足すか分岐させている。
MAX関数は、引数として渡された数値の中で最大値を返します。ここでは、0と次の計算結果を比較しています。
つまり、ポテンシャルが0未満になる場合は、0を返し、それ以外の場合は計算結果をそのまま返します。これによって下限が0に設定することができました。
これはポテンシャルの数値に対する順位を表している。
上位30曲は自身のべ枠平均で使われていると一目見てわかるように色を付けている。
最初はこれまでと同じIF文。
そして、RANK関数を使ってその値が全範囲の楽曲中で何番目に大きいかを計算し、値を返してます。
これがべ枠の平均を求める式である。
AVERAGEIFで順位が30位以内の楽曲のポテンシャルを抽出してその平均を出すものとなっている。
まとめ
久々にExcelで物を作ったので楽しかった。IF文でゴリ押しして作っているのでもっと簡潔にまとまるとこや説明文で違うとこがあれば教えてほしいです。Arcaea面白いからみんなやってね。