XaiJu
nalulululuna
nalulululuna

fanbox


mod のいれすぎにご注意?

ぜんぶいれる!

みなさんは Beat Saber の mod、いくつくらいインストールしていますか?じつは、現状の Beat Saber mod の仕組みでは、mod の数が一定を超えると、一部の機能でエラーが発生してしまいます。


どんなエラーが出るのか見てみましょうか。Beat Saber 1.29.1 で、Mod Assistant に登録されている mod 全部にチェックをいれてみました。



この状態で起動してみると、あ、まだ大丈夫…。いまのところは、ぎりぎり制限にひっかからない数に収まっているようです。


それではこの環境に、さらに mod を 2, 3 追加してみると…


[ERROR @ 13:38:56 | IPA/Config] Error waiting for in-memory updates

[ERROR @ 13:38:56 | IPA/Config] System.NotSupportedException: The number of WaitHandles must be less than or equal to 64.


ログにこのようなエラーが大量に出るようになります。

どういうエラー?

Beat Saber mod の仕組みを担っている BSIPA の中には、各 mod の設定を管理してくれる部分があります。この処理の中では、いずれかの mod 設定に変更が生じたときにすぐ設定をファイルに書き込めるよう、変更を監視しているのですが、この監視できる数の上限が 64 ということになっています。


じゃあ、その 64 の数字を変更してしまえば良いじゃないか、と思われるかもしれませんが、この 64 という上限を決めているのは BSIPA ではなく、.NET フレームワークのほうなので、さくっと簡単に数を増やすのは難しいです。きたない実装にするか、まったく別の監視方式に変更するか、になってしまいます。


BSIPA としては、そんなにたくさん mod を入れる人もいないだろう、ということで、このままで実質問題ないと判断されていると思います。ちなみに、この設定の仕組みを使わない mod もあるので、エラーが出ない最大 mod 数が 64 ということではなく、もうすこし多くいれられると思います。


この部分のコードを見たい方は下記リンクを見てみてください。

https://github.com/nike4613/BeatSaber-IPA-Reloaded/blob/21873bee3caf2a67e6a33d478b5deb596c304f54/IPA.Loader/Config/ConfigRuntime.cs#L230

このエラーが出ていると mod が動かなくなるの?

このエラーに関しては、即 mod が動かなくなる、というものではありません。設定を変更したときに、すぐにファイルに書き込みされなくなる、という状態が発生していますが、ゲーム終了時にも再度まとめて設定のファイル書き込みは行われるので、mod 設定の保存がされない、という事態にもならないと思います。


考えられるとしたら、ゲームを終了するまで、設定ファイルのほうは変更が反映されない状態なので、なんらかのタイミングで mod から設定ファイルを読み込むようなことがあれば、そのゲーム中で変更した mod 設定が元に戻ってしまうかもしれません。


動作速度への悪影響も (SSD なら) ほとんどないと思います。ただ、ログが 1 秒ごとに増えていくので、ログファイルが巨大になってしまいますし、他の mod に別の不具合があったとき、このエラーログが大量に出ている状況では、他の部分のログを追うのが困難になり、不具合の原因がよくわからなくなってしまうかもしれません。

おわりに

mod をたくさん入れている方も大勢いらっしゃると思いますが、いれすぎるとこういうこともありますよ、という記事でした。ただ、上にも書いたように、mod が動かなくなるレベルのエラーではないので、どうしても mod の数を削れない場合は、気にしないことにしましょう。

追記

yasさんが対策 mod を作ってくださいました!


ビーセイプレイヤーのみんなへ、ニッチなクリスマスプレゼント | yas

ConfigLimitFixer

https://note.com/yatakabs/n/nbd6eb7d34741

mod のいれすぎにご注意? mod のいれすぎにご注意?

Comments

That's a good consideration. I wondered how or if that factored into things when they don't have any apparent settings.

Sp00ky_C0de

Thank you. I am glad you are interested in reading this. As for small single-function mods, maybe I should try to make them without settings? For example, NoteJumpFixedDurationPlus has no settings, so it doesn't affect this limitation.

なるるるるな / NALULUNA

This is a good post, and an error I've seen that I haven't really been able to get to the bottom line of. Looking at my folder of mods, they feel like my children. Mostly all helpful and decently diverse, but with time, there comes to be so many. Especially when it comes to the devs breaking the game, and needing additional plugins to restore functionality (OverrideEnvironmentFix, ColorSchemeBoostFix are a couple, and AdBlocker if you don't like additional content promo in your $30 title). Many of them serve small purposes, but purposes that I appreciate not having to deal with on every session / song. Small mods like JustTakeMeToTheSoloMode are hardly necessary, and on the same level of applicable value as something like AdBlocker. Then there's overall lack of customizability in the base game. You find yourself needing a slew of mods to do different things, like custom sabers, or even just to get a clock into the game. It's certainly a hard dilemma.

Sp00ky_C0de


More Creators