「編成ファイルの保存に不可解な制約があるっぽい件」
VRM4ポータブル編成
toukaidou211氏のフテーキ日記で指摘されていた件について。
「ポータブル編成ギミック一発組み込みβ3」を導入すると編成ファイルの保存ができなくなりました。そのため、11連と4連にわけて保存しました。おそらく画像リソースが多すぎたのが原因かもしれません。
追試してみました。で、いろいろ切り分けをやってみた結果、概ね以下のような結論に至りました。
・編成ファイルを保存する際、そこに含まれる“リソースの数(総容量ではない)”と“編成/車両スクリプトの文字総数”に上限がある。
・この上限を超えた状態で編成ファイルの保存を試みると、VRM4レイアウターは異常終了する。
・この状態でも、レイアウトファイルの保存、ビュワーの起動(及びポータブル編成の機能)、編成部品の(リソース・スクリプトを含んでの)コピー&ペースト、はすべて正常に動作する。
具体的な上限となる値は、まだ正確には把握できていませんが、15両編成にポータブル編成ギミック一発組み込みβ3を導入した場合、100リソースが上限になるようです。この状態で編成の保存をおこなうとレイアウターが異常終了しますが、車両を1両減らし(その分車両スクリプトが減る)たり、リソースを1つ削除したりすると、保存が出来るようになります。
これまでの傾向を見るに、toukaidou211氏を除けば、ポータブル編成をリリースしているネットVRMユーザーが組み込む方向幕の数は多くて3つくらいですから、普通に使う分には問題ないと思われます。
原因についてですが、断言は出来ませんが、メモリ上に存在する編成の構成情報をファイルとして書き出すロジックに、スタックオーバーフロー系のバグが混入しているっぽいです、直感的には。編成ファイルをバイナリダンプすればより詳細なことがわかるかと思いますが、おそらくは、リソースのインデックスを記録する実アドレス(だからリソースの総容量に依存しない)とスクリプトのそれが隣接していて、双方の増加で衝突が起きるんじゃないか、みたいな。まぁ、ユーザー的にはどーでもいいことですが。
* * *
ボクがこの件に関心をもったのは、現在有志間で進行中の
[vrmサウンド論議]に影響があると思ったからです。
仮称m4g/1.0規格サウンドギミックスクロールを組み込むと、ポータブル編成とほぼ同じくらいの量のスクリプトが編成に書き込まれます。それぞれを単体で利用する分には、100リソースという上限は、toukaidou211氏は受け入れ難いとお感じかとは思いますが、まぁ、実害はないでしょう。20両編成に方向幕3種を入れても60リソースですから。
が、ポータブル編成とサウンドギミックを併用するケース、つまり、独自の方向幕を設定した上でオリジナルのサウンドも組み込むぞ、という場合は、ちょっとシビアな制約になりそうです。スクリプト文字数がポータブル編成のみに対してほぼ倍になるので、その分、組み込めるリソースの数が減るはずです。
正確な上限を見積もることは困難ですが、この上限を超えたリソース数を含む編成ファイルは、動作はするしレイアウトファイルとしては保存できるけども、編成ファイルとしては保存できない=配布できない、という中途半端なものになります。
まぁ、ネットでの公開を前提としたポータブル編成作りは、ネットVRM界隈におけるユーザー主導の標準仕様としては突出した存在ですが、実際それに着手しているネットVRMユーザーは数えられる規模で、VRMユーザー総体からすれば極一部の物好きです。なので、このバグの解析なり修正なりの優先度が高い、とはボクは思いません。少なくともボクを含むユーザー側には、何度もレイアウターを異常終了させながらこれ以上のことを調べる義務はないでしょう。
っつーことで、本件はこれで放置します。I.MAGiC殿におかれては、toukaidou211氏のようなパワーユーザーのヤル気を削ぐことが御社とVRMにとって不利益であるとご判断あれば、改善をご検討いただきたく。

0