XaiJu
nalulululuna
nalulululuna

fanbox


Beat Saber 1.40.0 で導入された可変 NJS

可変 NJS

Beat Saber 1.40.0 では、NJS (Note Jump Speed) が曲中で変更できるようになりました。そこで、即席で NJS を表示するメーターを表示する mod を作ってみました。


マッパーの Jabob さんがこの可変 NJS を利用したカスタム譜面を作られていたので、この mod を使ってどんな感じか見てみましょう。


なかなかおもしろい効果になっていますね。

データ構造

この可変 NJS を譜面に組み込むには、どういうデータを入力すれば良いのでしょう?上の譜面の ExpertPlus.beatmap.dat をテキストエディタで開いてみると、末尾のほうに下記のような NJS のデータが見つかります。


"njsEvents":[{"b":78.0},{"b":90.0,"i":1},{"b":94.0,"i":2},...

"njsEventData":[{"p":1,"e":-1},{"d":-5.0},{"d":2.0,"e":1},...


njsEventData の b、i、そして njsEventData の p、d、e はなにを表すのか?調べてみました。


njsEvents.b: beat

どの時間のイベントかを表す単位ですが、Beat Saber の譜面の場合は時分秒ではなく beat で指定します。1 beat の時間は、譜面データに設定された bpm から決まります。たとえば 200bpm の譜面は 1 分間に 200 beat、1 秒間に 3.33 beat になるので、78 beat の位置は 23.4 秒の位置、となります。


njsEvents.i: index

njsEvents のイベントで njsEventData のどのデータを使うかの指定です。


njsEventData.p: (use) previous

1 であれば、前イベントのデータを参照する。


njsEventData.d: delta

譜面の初期 NJS からの変化量。0 なら変化なし、-5 なら 1 beat で NJS が 5 減る、という感じですが、下の ease type と合わせて変化の速度は変わります。


njsEventData.e: ease type

変化量の与え方。DoTween の Easeing と同じで、1=Linear ならリニア (線形) に変化を加える。 2=InSine, 3=OutSine... とたくさんありますが、Easeing の違いは下記ページがわかりやすいと思います。

(frame embed)


実例

"njsEvents":[{"b":94.0,"i":2},{"b":106.0,"i":1},{"b":110.0,"i":3},

"njsEventData":[{"p":1,"e":-1},{"d":-5.0},{"d":2.0,"e":1},{"e":1},


94beat、28秒のところで、index=2、NJS +2.0 の変化をリニアに加える

106beat、31.8秒のところで、index=1、NJS -5.0 の変化をリニアに加える

110beat、33秒のところで、index=3、NJS +-0 (譜面の初期 NJS)、NJS 変化なし


となるわけですね。

NJS Meter mod

最初に紹介した NJS 表示の mod については、Beat Saber 1.40.0 用の BSIPA と BSML がないと動かないので、これらが正式公開されてから配布する予定です。




(とりあえず、置いとくだけ置いときました。今のところは 1.40.0 で BSIPA と BSML を自力で動かせる人向け)

Beat Saber 1.40.0 で導入された可変 NJS Beat Saber 1.40.0 で導入された可変 NJS

More Creators