XaiJu
nalulululuna
nalulululuna

fanbox


ビートセイバーがバージョンアップすると、どうしてmodが動かなくなるの? (ビートセイバー豆知識)

様々なパターンがありますが、思いついたものを挙げてみます。ちなみに上の画像は、意図的にクラッシュするmodを作って出しました。1ミスした瞬間クラッシュするmodとかあったら欲しいですか?

1. 関数、変数が変わる

「関数」「変数」はプログラミング用語ですが、命令みたいなものだと思ってください。機能を追加、変更するためであったり、あるいは単にコードを整形するためであったり、理由はいろいろありますが、ビートセイバー内部の関数、変数が変更される場合がよくあります。


この場合、この関数、変数を使っていたmodは、変更に対応しない限り動かなくなりますが、ただの名称変更だけであればそこまでの時間はかかりません。一方、処理も変更されていた場合は、単純に名称を変更するだけでなく、変更された動作に合わせてmod側も対処する必要があります。


例えば、今回のバージョン1.13.2へのアップデートの変更点の一つとして、NoFailの仕様が「いくらミスしてもFailしない」から「体力が0になってもFailせず、0になるとスコアが50%に」といった形に変わりました。この関係で

- NoFail -> NoFailOn0Energy

- AddEnergy -> ProcessEnergyChange

と内部の名称変更が入っており、これによってNalulunaCounters、SongPlayHistory、 BailOutModeが動かなくなっていました。


またスコア計算の関数が、この新しいNoFailの仕様に対応するため若干変更されており、NalulunaCountersではそちらの対応も必要でした。


公にされている変更点とは関係ない部分で変更が入っている場合もあり、例えば今回は、

プレーヤーの頭位置を取得するための名称や処理も若干変わっていたため、この影響で、NalulunaModiferやNalulunaAvatarsも対応が必要になりました。

2. クラスが変わる

プログラミングに縁がない方は「クラス」のイメージがつかないと思いますが、ここでは様々な処理を集めた塊のようなものだと思ってください。クラスが新しいものに変わっているということは、内部処理も別物に変わっている場合が多いです。modがこのクラスに依存していた場合、最悪、ほとんど処理を書き直すようなことになります。


バージョン1.12にアップデートされたときのRumbleMod、NalulunaModfierの一部機能、CustomSaberのトレイル(軌跡)などがこれにあたります。一からmodを作るときと同じように、内部処理を把握して、どの部分を利用、変更していけば良いのか見つけていく必要があり、対応には時間がかかります。


今回のバージョン1.13.2では、(すくなくともメジャーなmodがカバーしている範囲では)これにあたる変更はないように思います。

3. 仕様が変わる

1、2に近い内容ですが、今まで通りのコードで動作はするものの、仕様変更によって意図通りに動かなくなる、という場合もあります。


例えばバージョン1.12では、UIがプレーヤー位置を中心にカーブして表示されるような仕様に変更されました。このため、自前でUIを描画しているNalulunaCountersのようなmodは(カーブさせないように描画する)対応が必要になりました。

4. シーン構造が変わる

ゲーム内のオブジェクトがどのような構造で配置されているか、バージョンアップで変更される場合があり、NalulunaMenuなどシーン構造に依存しているmodは、この変更に対応しなければ、(その部分の機能は)動かなくなります。


例えばメニュー画面の地面(Ground)の配置は

- 1.12.2 MenuEnvironment/DefaultEnvironmentの下

- 1.13.0 MenuEnvironmentの下

- 1.13.2 MenuEnvironment/DefaultEnvironmentの下

となぜか毎回変更されています。勘弁してほしいですね。


また名前も変更されることがあり、メニュー画面にあったレーザー(直線状の光るオブジェ)の名前は

- 1.12.2 Laser (3)とLaser (4)

- 1.13.0 Laser (1)とLaser (2)

- 1.13.2 消失

といった感じで変更されています。


バージョン1.13.2でCustomSaberが動かなくなったのも、セイバーの配置構造が変わったせいですね。このように実際の見た目には変化がなくても、内部的には変わっている、ということはよくあります。


構造や名前だけでなく、実際の位置が変更されることもあります。バージョン1.13.2ではメニュー画面のUIが若干遠くなりました。NalulunaMenuで地面の落ちているノーツを増やすと、増えたノーツでUIが隠れてしまうようになったので、以前より若干遠目にノーツを生成するように変更しました。


このシーン構造はけっこう厄介で

- メニュー画面

- ソロモードのゲーム中

- マルチプレイモードのゲーム中

- 自分がホストとき

- 自分がホストでないとき

- 観客モードのとき

- マルチプレイモードを遊んだ後のソロモードのゲーム中

それぞれで別の状況になるので、1.12のマルチプレイモードが導入されて以来、対応や確認の作業はだいぶ面倒になりました。マルチプレイモードはあまり遊ばれていないようなので正直無視したいです。


あ、そうそう、チュートリアルモードも別ですが、これに関しては誰も気にしませんね。一時期、とある基幹modがチュートリアルモードでエラーを吐いていたのですが、誰も問題にすることはありませんでした。

5. 利用していたデータがなくなる

Modで利用していたビートセイバー内のデータが、アップデートでなくなってしまう場合もあり、当然この場合もModは動かなくなります。


例えばバージョン1.12では、ビートセイバーのロゴで使われているフォント(Neon)が、ゲーム内からなくなってしまいました。「1.12以降でもメニュー正面上のほうに、あのフォントでBEAT SABERと出ているじゃないか」と思われるかもしれませんが、あれはフォントによる文字描画ではなく絵です。

6. Modを動かしているBSIPAの仕様が変わる

ビートセイバーのmodは、BSIPAというフレームワークに従って作られていますが、この仕様が変わった場合、新しい仕様に対応させないと動かなくなります。最近では、バージョン1.12へのアップデートの際に変更されました。

まとめ

思ったよりもバリエーションがなかったような気もしますが、modのアップデート対応はこんなことをしているんだ、ということをお伝えできればと思って書いてみました。みなさんのご興味に合った内容であれば幸いです。

ビートセイバーがバージョンアップすると、どうしてmodが動かなくなるの? (ビートセイバー豆知識)

More Creators