🎼

【あんスタ!!Music】「エメラルドプラネット」難易度Specialの速度変化ギミック実装と譜面制作について

2021/12/13に公開

はじめに

こんにちは、『あんさんぶるスターズ!!Music』開発エンジニアのN.Sです。
この記事では、「あんスタ!!Music」で11/9に開催されたミニイベント「ライブチャレンジ」第8回目の課題曲「エメラルドプラネット」の難易度Specialについて、速度変化のギミックの実装と譜面制作の解説を行います。

https://twitter.com/enstars_music/status/1457954857860567045

一見複雑な動きをしているように見えますが、これらは全て速度変化のシステムで実現されています!

「あんスタ!!Music」譜面制作チームについて

「あんスタ!!Music」の譜面制作担当としてはA.Tさんが既に動画などで紹介されていますが、他の担当者についてはこれまであまり紹介されていなかったので、簡単に紹介しておきたいと思います。

「あんスタ!!Music」譜面制作チームは、現在以下の3人体制になっています。

  • A.Tさん(制作担当):譜面制作担当、Expert, Specialの譜面レビュー担当
  • N.S(私):Expert, Specialの譜面レビュー担当、たまに譜面制作担当
  • A.Tさん(Hard以下レビュー担当):Easy, Normal, Hardの譜面レビュー担当
    • イニシャルが被っていてややこしいのですが、動画などで紹介されている譜面制作担当のA.Tさんとは別人です

譜面制作業務を専門にしているのはA.Tさん(制作担当)のみで、私とA.Tさん(レビュー担当)は他の業務の傍ら譜面制作業務を兼務しています。

私はA.Tさん(制作担当)とは異なり(※)元々カカリアスタジオの別タイトルのチームで働いていましたが、昔から音ゲーが好きだったので「あんスタ!!Music」のリリースの2年前くらいに異動させて貰い、開発に携わる事になりました。

※ A.Tさんは「あんスタ!!Music」の譜面制作を担当するために入社されました(ウキスタ vol.3参照)

これまでの100曲を超える譜面のほとんどはA.Tさんに作って頂いていますが、私は主にExpert, Special譜面のレビューを担当しつつ、譜面の幅を広げるためにたまに譜面制作も担当しています。
直近では「エメラルドプラネット」Special譜面の他に「EXCEED」のHard・Expert譜面も担当していました。

また、譜面制作の上で必要になった機能の実装などは私が担当しています。
ちなみに、Expert, Specialを含め、実装する譜面は全てA.Tさんと私がフルコンボ(※)できる事を確認してからリリースしています!

※ 通常譜面はスマホを手で持った状態で親指2本でのプレイ、「置きスタイル推奨」譜面ではスマホを机に置いた状態でのプレイで確認しています

難易度「Special」&ミニイベント「ライブチャレンジ」とは?

難易度「Special」は、難易度Easy〜Expertまでの通常難易度に加えて新設された特別な難易度です。
難易度Specialの譜面の追加と共にミニイベント「ライブチャレンジ」を開催し、所持カードのステータスなどが反映されずノーツの判定のみによって計算される「チャレンジレート」を競います。

ライブチャレンジでは通常のPERFECT判定よりもさらにシビアな「AMAZING判定」(※)が追加され、全てのノーツをAMAZING判定で成功させることでチャレンジレートが100%となります。

※ ちなみに、AMAZING判定の判定幅は約±33ms、つまり60fpsで計4フレームです。開発段階ではよりシビアにする事も検討しましたが、今後の難易度の上昇も考慮した結果、超高難易度曲で理論値が数人出るか出ないかくらいを目安に設定しました

Special譜面の制作方針について

難易度Special(とライブチャレンジ)は主に音ゲーマニア向けのコンテンツという位置付けとなっていますが、単にノーツを増やして密度を上げたり配置を物理的に困難なものにして難しくしていくだけだと、楽しめる層がどんどん狭まっていきます。

また、「あんスタ!!」の曲は元々音ゲーの高難易度を想定して作られていない事もあり、Expertの段階で既に限界近くノーツを詰め込んでいる曲も多いため、それ以上無理やり難しくしようとすると音ゲーとしての爽快感が失われてしまう恐れがあります。

そのため、ノーツを詰め込むだけではなく、「上下フリック」や「置きスタイル推奨譜面」、「超速度変化」など様々な要素を取り入れることによって、通常譜面とは違った体験を提供しつつ、音ゲー上級者だけでなく様々な層が楽しんで貰えるように工夫しています。

言うなれば、難易度Specialは「Expertよりも上の難易度」というよりは「おまけの追加譜面」というイメージに近い位置付けになっています。(中には特殊ギミックの存在しない単純な上位難易度としての譜面も存在しますが)

人によってそれぞれのギミックの得手・不得手もあると思うので、Special譜面全体でのバランスも考慮しながらどんな譜面にするかを考えています。
なお、単純な上位難易度としての譜面は今後も制作していく予定なので、お楽しみにお待ち下さい!

速度変化のギミック実装について

前置きが長くなってしまいましたが、本題に入ります。
速度変化のギミックが初めて登場したのは、5/9実装の「Neo Sanctuary」Hard・Expert譜面でした。(ちなみに、こちらの譜面制作も私が担当していました)

ラスサビ前の「終わり -fine-」がとても印象に残る曲で、fineの「圧倒的王者感」が感じられる曲でもあることから、譜面でも強烈な印象を付けたいという事で速度変化を用いる事にしました。
あんさんぶるノーツだけ速度変化するといきなりすぎる印象になるので、その前の落ちサビでも少しゆっくりにしています。

この時は「譜面全体の速度」を変化させる機能を実装しました。

速度変化の仕組みについて

速度変化が導入される前のノーツ描画の仕組みについて

速度変化が導入される前は、ノーツの判定タイミングがそのまま縦軸の位置と対応するため、以下のような計算で毎フレーム位置計算を行い描画を行っていました。

ノーツ表示時間(秒) = 5.0 / ノーツスピード設定値
時間差分 = 現在時間 - 各ノーツの判定タイミング
各ノーツの縦軸位置(※) = (時間差分 + ノーツ表示時間) / ノーツ表示時間
※ 0を上端、1を判定ラインちょうどの位置とする

画面上にノーツが表示されている時間(=画面上端からノーツが出現し、判定ラインに到達するまでの時間)を予め定義しておき、画面上のノーツの縦軸位置を割合で表現しています。
現在時間と各ノーツの判定タイミングとの時間の差分から、ノーツの縦軸位置が計算できます。

ノーツを時間グラフ上にプロットし、ノーツ表示時間分の大きさの窓が時間と共に動いているようなイメージと言えば分かりやすいでしょうか。

速度変化を考慮したノーツ描画の仕組みについて

速度変化が起きるとどうなるかと言うと、現在時間と判定タイミングからだけではノーツの縦軸位置が計算できない事になります。
そのため、現在時間と判定タイミングとは別に、ノーツ表示用の特殊な時間軸を作ることにしました。
判定タイミング用の時間軸(=現実時間と同じ時間軸)はJudgeChartTime、ノーツ表示用の時間軸をViewChartTimeと呼ぶこととします。

速度変化は倍率で設定する事とします。
例えば速度が1.0倍の場合はJudgeChartTimeが1進むごとにViewChartTimeも1進み、0.5倍の場合はJudgeChartTimeが1進むごとにViewChartTimeは0.5進む、という具合です。

コードで説明しても分かり辛そうなので、分かりやすいようにグラフで表してみます。せっかくなので、「エメラルドプラネット」Special譜面のノーツが逆走する所を例にしてみましょう。
JudgeChartTimeをt、ViewChartTimeをtに依存する関数としてV(t)、速度をvと表すと、以下のようなイメージになります。

速度が変化するタイミングと変化後の倍率の情報があれば、V(t)が計算できます。

V(t)が計算できるようになった所で、各ノーツの判定タイミングt_nに対応するV(t_n)も計算できることになります。

V(t_n)が計算できた所で、各ノーツをレーン-V(t)平面上にプロットします。

V(t_n)とレーンが同じノーツは画面上には重なって表示されることになります。図では便宜上太線で表しています。
あとはノーツ表示範囲の窓を速度に応じて動かせばOKです。表示範囲の移動速度が変わって、平面上を行ったり来たりすることによってノーツの逆走が表現できます。

逆走に限らず、加速・減速も全て同じ仕組みで表現できます。
ノーツが瞬間移動したり点滅するように見えるのも、速度変化に極端な値を設定し、60fpsで描画できる速度を超えて窓が移動しているだけです。

例えば「Neo Sanctuary」Hard譜面のあんさんぶるノーツの前(ロングノーツが消える部分)は、ロングノーツの終端直前で一瞬だけ速度が5,000倍になり、その後0.5倍になっています。

ノーツ別速度変化の実装について

上記の通り、「Neo Sanctuary」の実装時点で既にノーツの逆走もできるようになっていたため、「エメラルドプラネット」Specialでは速度変化をノーツ別に設定できるように仕様を追加しました。

仕組みは単純で、各ノーツにGroupIDを設定できるようにし、各GroupIDごとに速度変化を設定できるようにしました。
ViewChartTimeも各GroupIDごとに計算し、最終的にそれらを重ね合わせて描画することでノーツごとの速度差を表現しています。

これが譜面エディタ上でGroupIDが0のノーツと速度変化を表示した状態です。

ちなみに、「エメラルドプラネット」のSpecial譜面ではGroupIDを0〜10まで使用し、速度変化は合計391個設定しています。(おかげでかなり制作に時間が掛かりました…)

「エメラルドプラネット」難易度Specialの譜面制作について

速度変化の仕組みについては解説できたので、ここからはどのようにして「エメラルドプラネット」難易度Specialの譜面制作を進めたかをお話します。

譜面のコンセプト

「エメラルドプラネット」Special譜面は、以下のようなコンセプトで制作しました。

  • Special譜面のギミックは出尽くしたと思わせておいて、ここらで新ギミックを入れて驚かせたい
    • 通常譜面では絶対できないような、音ゲーマニアが喜ぶようなギミックを入れたい
    • Switchらしく魔法のような譜面にしたい
  • ギミックは難しいが、譜面自体は簡単に
    • ギミックもただ意地悪なだけではなく、ちゃんと考えれば予測が付きやすく、慣れれば簡単にできる程度のものに
      • 譜面を見ながら運指や攻略法を考える楽しみが感じられるような譜面に
    • 高密度の高難易度譜面ができない人にもワンチャンを狙って頑張ってもらえるような譜面に
  • 譜面の見た目のインパクトで話題になって欲しい
    • 思わず他人に共有したくなるような驚きとワクワク感
    • 見ているだけでも楽しいような譜面に
      • 曲やMVとも連動した気持ち良いノーツ表現

Special譜面はどこかで速度変化ギミック系譜面を出そうと考えていたので、ユニットイメージ的にもピッタリなSwitchのSpecial譜面で出すのが良いだろうという事で決定しました。

いわゆるキャラ育成系のアプリ音ゲーではこういったギミック系譜面は少ないため驚かれた方も多かったと思いますが、アーケードゲームなど本格的な音ゲーでは少なくない数存在します。
速度変化で表現できる色々なギミックをこれでもかというくらい詰め込んだので、音ゲーマニアな方は思わずニヤリとできる部分も多かったのではないでしょうか。

難易度調整について

速度変化によるギミックは一歩間違えるとただ理不尽なだけになってしまうので、そこはかなり気を付けて調整しています。
停止や逆走が起こる部分では譜面に法則性を持たせ、なるべくリズム感と音ゲーの勘だけで自然に叩けるようにしています。
制作者本人はどうしても簡単にできてしまうので、A.Tさんとも相談しながら調整しました。

音ゲーの譜面を見ながら運指や攻略法を考えるという楽しさというゲーム的な側面が感じられ、かつ音ゲーを逸脱しすぎないような範囲で譜面を制作しました。
一見理不尽に見えるかもしれませんが、慣れると意外と簡単にできると感じた方も多かったのではないでしょうか。

ノーツ配置自体はレベル27相当の内容なので、ギミック込みでもレベル28くらいでいいかなと思っていたのですが、プランナーさんに「正気ですか?」(意訳)と言われたのでレベル29に設定しました。
かなり慣れや個人差が大きい譜面なのでそもそも通常の楽曲と同じ基準で比較するのが難しいのですが、慣れればこれまでのSpecial譜面の中では簡単な部類になるのではないかと思います!

「エメラルドプラネット」を選んだ理由

Switchの曲の中でも、「エメラルドプラネット」を選んだ理由は以下の通りです。

  • Expertが簡単(レベル24)
    • 他のSwitchの曲はExpertは比較的難しめのものが多い
  • 曲の展開に繰り返しが多く、リズムがシンプルなのでギミックを作りやすい
    • 同じギミックを2回使って、1回目は簡単にして練習パート、2回目は難しくして本番パートという構成にしやすい
    • リズムがシンプルなので、ノーツが見えなくてもリズム感だけで予測して叩きやすい

Expertが簡単な曲は他にも「Temptation Magic」(レベル26)などがありますが、こちらはややギミックが作り辛そうなので「エメラルドプラネット」を選びました。
メロディのリズムがほとんど8分刻みなので、ノーツの位置さえ分かっていればタイミングを合わせるのは比較的簡単だと言えます。

「速度変化」と「超速度変化」の違い

「エメラルドプラネット」Special譜面の実装に合わせ、これまでExpert以下で速度変化があった譜面には「速度変化」、エメラルドプラネットSpecialには「超速度変化」の表記が付くようになりました。

「速度変化」と「超速度変化」には、譜面制作で使っている仕様上の違いは実はありません。(ノーツ別の速度変化は、同時実装の「Magic for your “Switch”」Expert譜面でも利用しています)

使い分けとしては以下のようなイメージです。

  • 速度変化:初見、または2,3回程度で対応可能な、難易度に大した影響を与えない範囲での速度変化
  • 超速度変化:本格的に譜面を見て対策を考える必要があるレベルの速度変化

元々通常譜面での速度変化は表記を行う予定は無かったのですが、不具合と誤解されてしまう事が多かったことと、表記が必要なレベルの超速度変化を導入する際に既存の速度変化との違いを説明することが難しかったため、このような形となりました。

通常譜面では難易度にあまり影響の出ない程度の速度変化しか用いないようにしています。

譜面解説

ここからは、譜面を制作する上で意識していたことや、特に難しい部分の攻略法などを解説していきます。
公式Twitterのデモプレイ動画と合わせてご覧下さい。

  • 〜0:33 (イントロ〜♪「キミとMysterious ray」)

いきなりギミック盛り盛りにするとびっくりしてしまうので、最初のうちはチュートリアルのような感じで少しだけ速度変化を付けて「今回の譜面ではノーツごとに速度が変わるよ」という事を示しています。
速度差はそこまで激しくないので、リズムを意識していればそこまで難しくないと思います。

  • 0:34〜0:37(♪「彩るFantastic」)

これからギミックが難しくなってくる事を予兆させるために、一度大きく速度差を付けています。配置自体は階段で単調にし、リズム感でなんとなく叩けるようにしています。
ここでつまづいてしまう方は、ノーツをあまり目で追わず、リズム良く叩く事を意識してみましょう。
通常の譜面でも同じことが言えますが、リズム感を意識して叩くとより高い精度が安定して出せるようになると思います!

  • 0:41〜0:47(♪「煌めくShower〜境界線を塗りつぶして」)

歌詞に合わせて煌めくシャワーのようなロングノーツと、画面を塗りつぶすロングノーツが降り注ぎます。ここは見た目的なインパクトが強いのでスクショポイントになりました。

「境界線を塗りつぶして」は一見無理押しに見えますが、ロングノーツが一瞬で消えていくので左右交互に長押ししていけば2本指で取れるようになっています。
押す順番も「煌めくShower」と逆順で左から右へ1レーンずつズレていくだけなので、慣れれば簡単に取れるようにしています。

  • 1:04〜1:11(サビ前半)

ここから本格的にギミックが始まります。
ここで気をつけるべき点として、「れはSweet」と「メージしたら」で降ってくる左右のタップとスライドの始点は、速度が違うため同時押し線が表示されていないものの、実際のノーツのタイミングは同時押しになっています。

ノーツ配置自体は左右対称になっている事を意識すると叩きやすいかもしれません。

  • 1:12〜1:14(♪「キセキめいた」)

ここはダンスの振りと連動したイメージで、ロングノーツを押している間だけ他のノーツが停止するようになっています。
「キセキ」のほうは特に問題無いと思いますが、「めいた」のほうが見かけ上ロングノーツの始点と同時押しに見えるノーツが実は同時押しではないという引っ掛けになっています。

一見意地悪に見えますが、予測できるヒントはたくさんあります。

  • 同時押し線が表示されていないので、同時押しではない
  • ロングノーツを押している間だけ停止する=ロングノーツが終われば動き始めるので、ロングノーツの終点に合わせて叩けば良い
  • メロディに合わせて叩けば良いので、次の「法仕掛けの」で叩けば良い

また、仮に同時押ししてしまってもミスにはならないので、そこまで難しくは無いと思います。

  • 1:15〜1:19(♪「魔法仕掛けの エメラルドのPlanet」)

譜面が逆走する地帯です。ここに苦戦した方は多かったのではないでしょうか。
もちろん(?)逆走してきたノーツも叩かなければなりません。
そんなの見えないし理不尽じゃないか?と思われるかもしれませんが、ここも色んなヒントを用意しています。

  • 譜面が逆走するので、前に叩いた譜面の逆パターンを叩けば良い
  • 逆走する前に先に見えているノーツと、逆走中に叩くノーツのパターンが一緒

つまり1回目の時点はノーツが重なっている状態で、逆走することでそれをもう一度なぞるというイメージになっています。

配置自体は単純なので、最終的には体で覚えてしまうのが楽ではあります。

  • 1:30〜1:32(♪「三つの宝石」)

歌詞に合わせて「三つの宝石」をイメージしたノーツが降ってきます。
Expertではフリックになっていたので、今回はロングノーツにしてみました。ロングノーツを押している間譜面が停止するので見た目上は単ノーツに見えています。

ここは「みぃ/つの/ほう」でそれぞれ長押しするという事を覚えてしまいましょう。
ダンスの振りに合わせて一つずつ指差していくようなイメージで押すと覚えやすいと思います。

  • 1:48〜1:55(落ちサビ前半)

めちゃくちゃな同時押しが表示されたかと思えば、階段状に整列し直して降ってきたり、今度は逆パターンで判定ライン上にノーツが並んだりと、かなりトリッキーな動きをするノーツが現れます。
ここはノーツを魔法で自在に操っているようなイメージで制作しました。上手くできると、魔法使いになったような気持ちになれるかも…?

1回目は上から降ってくるので問題無いと思いますが、2回目の判定ライン上に重なるノーツはタイミング良く右から順にタップしていく必要があります。
タイミング自体は1回目と変わらないことと、事前に表示されるノーツが押す順番のヒントになっています。

ちなみに、違うタイミングのノーツ同士を同時押しのように見せたりするために、ノーツ配置から逆算して速度変化を設定しています。
ノーツが瞬間移動する際に一瞬だけ速度が数千倍になったりしているのですが、ノーツごとにその倍率を少しずつ変えることで瞬間移動する距離を調整して結果的に同じ位置に表示されるようにしています。

  • 1:56〜2:01(落ちサビ後半)

タップした瞬間次のノーツが判定ラインまで迫ってきます。
「キセキめいた」まではまだ次のノーツが見えていますが、そこから先は1個ずつしか見えなくなるので難しくなります。1回目の逆走に加えて、ここが第2の難所と言った所でしょうか。
ここは真ん中5レーンにしかノーツが来ないので、真ん中5レーンの判定ライン近くを凝視しながらリズム良く叩いていきましょう

最初の方は若干判定ラインよりも上から降ってきますが、途中からは完全に判定ラインに重なった状態で出現します。
レーンは1個ずつズレていくだけなので、よく見ていれば目で追うことはそこまで難しく無いと思います。

ちなみに、ここの「キセキめいた」の部分は後日譜面を微修正しました。最初に1.0倍速で降ってきているのに、ノーツを押した時に瞬間移動する間隔が0.5倍速の8分間隔になっており、実質1.0倍の16分のように見えてリズムが取り辛くなっていたので、最初から0.5倍速で降ってくるように変更しました。

  • 2:14〜2:15(♪「三つの宝石」)

1サビと同じパターンですが、判定ライン上に完全に重なっていて、一見押す順番が分からないようになっています。
正解は1サビと同じで右から順番なので同じ様に押せば良いですが、他にも降ってきている間は右のノーツが先に見えているというヒントもあります。
MVと合わせて見ると、3人がノーツを順番に指差しているように見えるようになっています。

おまけ:ライブチャレンジの結果について

おまけとして、「エメラルドプラネット」のライブチャレンジの結果を特別に公開したいと思います!

  • 参加人数(※1):159,573人
  • 本番プレイ回数(※2):996,512回
  • 練習プレイ回数(※2):1,051,263回
  • 100%(ALL AMAZING)達成人数:309人
  • フルコンボ達成人数:13,835人
  • クリア達成人数:63,044人
  • プラチナランカー:816人(チャレンジレート99.965%以上)
  • ゴールドランカー:3,216人(チャレンジレート99.784%以上)
  • シルバーランカー:31,922人(チャレンジレート96.209%以上)
  • ブロンズランカー:79,789人 (チャレンジレート85.924%以上)

※1 本番で0%より大きい結果を残した人数
※2 プレイ回数はリザルト画面まで進行したもののみカウント

SNSで話題になったおかげか、いつもよりも多くの方々にプレイして頂き、合計のプレイ回数は5日間で200万回を超えていました!
譜面自体は簡単で精度が出しやすいため、プラチナランカーのボーダーラインはタップノーツ換算でPERFECT 2以下という非常にシビアな戦いとなりました。

100%(ALL AMAZING)を達成した人数も「Blooming World」(313人)に次いで多く、最速で達成者が出たのはイベント開始から39分後でした。実際に出るまで不安な所もありましたが、想定していた難易度には収まっていたようなので安心しました。

ちなみに、私の記録は99.982%(PERFECT 1)でした。いつも緊張してなかなかALL AMAZINGが取れないので、もっと精進したいと思います…!

「超速度変化」譜面の今後の予定について

現時点では細かい事は決まっていないのですが、こういったギミック満載の譜面はあまり頻繁に出すような物でもないので、ここまでの物はしばらくの間は出ない予定です。
予想以上に好評ではあったため、また機会があれば制作は検討したいと思っていますが、バランスは考えつつ食傷気味になってしまわない程度の頻度にしたいと思っています。

次がいつになるかはまだ分かりませんが、どうぞ楽しみにお待ち下さい!

おわりに

長くなりましたが、「エメラルドプラネット」Special譜面の実装と譜面の解説をさせて頂きました。
上手く出来ると「脳汁が出る」ような譜面を目指して作ったので、是非頑張って攻略してみて下さいね!

音ゲー好きが高じた結果、こうして音ゲーの開発や譜面制作に携わることができて、今はとても楽しいです。
大変な事もありますが、多くのユーザーの皆さんに自分たちの作った譜面をプレイして頂ける事にはやりがいを感じています。

エンジニアとして働きながら譜面制作も行うというやや特殊な立場ですが、そうした職種に囚われない活動ができる事もカカリアスタジオの特徴かなと思います。
Special譜面を見ても分かる通り(?)、やりたい事は比較的自由にやらせてもらえる環境だと思うので、興味があれば是非一度採用サイトをご覧下さい。

これからも「あんスタ!!」好きの方には音ゲーの魅力を知ってもらい、音ゲー好きの方には「あんスタ!!」を知るきっかけになって貰えるような譜面を作っていけるよう譜面制作チーム一同頑張っていきたいと思いますので、よろしくお願いします!

GitHubで編集を提案
Happy Elements

Discussion