BeatSaber楽しんでますか?カスタム曲を入れて楽しんでいると、BeatSageで作った譜面の速度が物足りなくなる場面があると思います。ノーツ速度はNotesJumpSpeed(NJS)と言う値で管理され、例えばBeatSageで作成した譜面のデフォルトNJSはExpertで12、ExpertPlusで16となっています。これらの速度は音ゲーマーのようなノーツへの反射を楽しむ人にとっては物足りない値となっています。
NJSをゲーム内から弄るmodにはかつてはLeveltweaks等があったのですが、beatSaberのバージョンアップのたびにmodが壊れるため更新待ちの間は使えません。アップデートの更新を切るのも案外面倒です。曲ごとに速度を設定する必要があるのも面倒ですよね。
そこで、譜面に保存されているNJSを直接書き換えることによりノーツ速度を上げてみようと思いました。NJSは各譜面のフォルダ内のinfo.dat内に以下のように記述されています。
"Expert.dat", "_noteJumpMovementSpeed": 12
ここの12という値を任意の値に書き換えることでNJSを自由に操作できます。手動で書き換えてもいいのですが、カスタム曲が多いときは面倒なので、pythonを用いてそれぞれのカスタム曲フォルダ内のinfo.datを書き換えさせようと思います。
import osfor fd_path, sb_folder, sb_file in os.walk("C:\Program Files (x86)\Steam\steamapps\common\Beat Saber\Beat Saber_Data\CustomLevels"):for fol in sb_folder:print(fd_path + '\\' + fol)file_name = fol + '\\' + "info.dat"
with open(file_name, encoding="cp932") as f:data_lines = f.read()
data_lines = data_lines.replace('"Expert.dat", "_noteJumpMovementSpeed": 12', '"Expert.dat", "_noteJumpMovementSpeed": 18')
with open(file_name, mode="w", encoding="cp932") as f:f.write(data_lines)
このスクリプトを書いたpythonファイルをNJSchange.py等としてC:\Program Files (x86)\Steam\steamapps\common\Beat Saber\Beat Saber_Data\CustomLevels内に保存し、Windows PowerShell等から実行すればExpert難易度のNJSが12から18に書き換わります。あとはBeatSaberを再起動すればノーツ速度が早くなっています。
保存場所
実行
なお、BeatSageで生成したのでない譜面のNJSも同時に書き換わってしまいますので、ご注意ください。スクリプト5行目のfile_nameのあたりにフォルダ名にBeat_Sageを含むかどうかの判別を含めばよいと思います。