変更案:Classicスキンのogg/pngをwav/bmpに拡張子偽装またはフォーマット自体を戻す

Issue #820 resolved
暗黒 騎士 created an issue

現在のXEditorは「クラシックエンジンを1.50にちゃんと登録できてれば」拡張子指定が自動でwavに置き換わるようになってるはずだったと思いますが、Py+Classicスキン+XEditor同梱セットで、「Pyのscenarioフォルダに直接1.50シナリオを置いて、作業を始めてしまう人が多いです。

結果として何が起こるかというと、不慣れなユーザーが「Classicスキンに合わせてシナリオの全効果音がoggに指定されなおされている」のに気づかず上書き保存し、1.50でプレイしてみると、拡張子が違うため無音になっているのに気づく→あわてて1.50ビルダーで開いて上書きして、ファイルが存在しないため指定が全消去される……という惨事を過去2例みています。

Classicスキンの拡張子がogg/pngなのは減量のためだったと思いますが、現在のパッケージサイズにおいては焼け石に水で、天秤に掛けると、いまや事故を引き起こすデメリットの方が大きいのではないでしょうか。

Comments (4)

  1. k4nagatsuki repo owner

    前提は何もかも仰る通りで、エンジンとエディタがクラシックなシナリオに対応した時か、エンジンとエディタを同梱して配布した時に対応するべきでした。前にも一度機会があったと思うのですが、その時に対応しなかったのは私の判断ミスです。クラシックなシナリオを作るときは必ず対象のエンジンでテストするはずで、その時に問題に気付くはずだ、という楽観的な予想があったのだと思います。

    今となっては、Classicスキンの変更で対応するには遅すぎますし、そもそも根本的な解決になりません。例えばBloodWirthを使ってもClassicと同じ問題が発生しますし、他のスキンでも同じです。全てのスキンで歩調を合わせて拡張子を揃えるのはほぼ不可能です。スキン作者の自由も奪ってしまいます。

    よりベターな解決方法は、エディタでのサポートです。クラシックなシナリオを編集中で、かつスキンにクラシックエンジン以外を指定している時は、保存時に拡張子を変換するべきだと仮定できます。そこで、「クラシックなシナリオを保存する時はスキン付属リソースの拡張子を変換する」というようなオプションを設け、デフォルトでオンにします。これで問題の99%は解決するはずです。


    残る1%は、シナリオ作者が対象としたいクラシックなエンジンのTableMidiWaveの中に、予想される.bmp.mid.wav以外の拡張子のファイルがあるケースです。実は学園バリアントに実例があり、Midiの中に.mp3のファイルが1つ入っています。

    このケースでの事故を回避するには、シナリオ作者に対象エンジンそのものをスキンとして使用しながらシナリオを編集してもらうしかないように思えます。

    スキンに「このスキンはクラシックなエンジンからリソースをそのまま持ってきている」というようなフラグを持たせればこの問題も解決できますが、既成のスキンには持たせられません(自動生成スキンとそうでないスキンの区別がつけられない)。後々の事を考えると、今からでも加えるべきです。

  2. k4nagatsuki repo owner

    pull request #2560

    既存のスキンは解決できないと書きましたが、スキンタイプとMidi/chime.mp3の存在を手懸りに判断できるため(対症療法的ですが)、学園バリアントから生成されたスキンを手懸りにフラグを付け加えるようにしました。

  3. Log in to comment