|| 「踊る金狼亭」TOPメモ箱私家版エンジン関連情報>対応エンジンの話



ここで言う「どのエンジン向け」=「正規版、Next、Pyのどれ?」。
つまり、対応するエンジンの種類です。

種類のほかに対応バージョンの問題もありますが、ここでは扱いません。
正規版については各バージョン変更点まとめを作っています。対応バージョンを調べる際は、そちらをご覧ください。
私家版は、それぞれ配布サイトや付属のテキストなどでバージョンごとの変更点をご確認ください。
初めてシナリオ作成に挑戦される際は、こちらもお役に立つかもしれません。→「シナリオを作りたくなったら」
(※以下、全て2019年3月28日現在。今後仕様が変わったり、新たな私家版が誕生するかも?)

正規版、Next、Pyのどれ──ということは、シナリオの種類は3つ?

ざっくり言うと、【全エンジン向け】【Next専用】【Py専用】の3つです。
公式エンジン(CW1.20〜1.50)が採用してきた全てのエンジンで読み込めるシナリオデータ形式のほか、2つある私家版(Next、Py)のそれぞれが専用のシナリオデータ形式を持っています。
詳細はシナリオデータの互換性をご覧ください。

CardWirthNext

Next付属のWirthBuilderで作成したシナリオは、必ず【Next専用】になります。
他のエンジンにないNext独自要素の存在もありますが、それ以前にフォーマット自体が異なるため、内容とは関係なく他のエンジンでは読み込めません。 Nextの独自機能を使わなければ他のエンジンでも遊べるというものではないため、その点に注意が必要です。
後から他のエンジン用に変換する方法も、今のところありません。

CardWirthPy

CWXEditorでは、新規作成時に【全エンジン向け】の形式(クラシック形式)と【Py専用】の形式のどちらで作るかを選べます。
【Py専用】のものを【全エンジン向け】の形式で保存し直すこともできますが、既に独自要素を使用していた場合は、それらをCWXEditorの「誤り検索」で検出して、1つずつ取り除く地道な作業が必要となります。
Pyの独自要素は今後も追加されていく可能性があり、Py専用からクラシック形式への変換は、今より難しくなることはあっても簡単になることはないと思われます。効果系カードに独自要素を使用する場合は、宿の逆変換への影響も考えられます。

なお、CWXEditorのクラシック形式が全エンジン向けというのは、あくまでデータのフォーマットが公式仕様ということです。基本的に他のエンジンでも遊べますが、「クラシック形式なら必ず他のエンジンで遊べる」のではないことにご注意ください。

[▲上へ]

意図せず専用形式を選んでしまわないための、お勧め作業手順

シナリオの対応エンジンは、(だいたい)使用するシナリオ作成ツールで決まります。
特に注意すべきは、【Next専用】です。Next付属のWirthBuilderで作るとシナリオ内にNextの独自機能を使わなくても【Next専用】になり、今のところ【Next専用】から【全エンジン向け】に変換する方法もありません。

【Py専用】のWSN形式も、Pyの独自要素を含むと完全な状態で【全エンジン向け】に変換することができません。
また、Py系のシナリオエディタCEXEditorで作成可能な【全エンジン向け】フォーマットのシナリオは、格納に用いた画像の種類によっては他のエンジンで遊べないことがあります。

現在は、正規版、Next、Pyのユーザーが混在している状況です。
私家版の独自機能を使わない場合は、専用ではない形で作っておくと他のエンジンののユーザーも遊ぶことができます。

というわけで、お勧めの作業手順は、
  1. CW1.50付属のWirthBuilder、または他のデータバージョン4対応編集ツールで作成開始。
    (※CWXEditorで作成する場合は、新規作成→[クラシック]を選択しておく。PNGやGIFはBMP変換して格納する。)
       
  2. 私家版専用形式で作りたくなったら、
    • Next:編集ツールをNext付属のWirthBuilderに変更。
    • Py:CWXEditorで開き、「WSN形式のシナリオ」として保存し直す。
です。
こうしておけば、意図的に行わない限り、専用形式で保存してしまうことがありません。
特に何もなければ、そのままCW1.50(もしくはそれ以前の公式バージョン)仕様として完成させれば良いと思います。
※※※
別のページに、【全エンジン向け】/【Next専用】選択の判断材料についてまとめました。
CardWirthNextの独自機能と、従来手法での置き換え
[▲上へ]

仕様混在シナリオ 〜1.50仕様にNext・Pyの独自機能を混ぜ込む

百聞は一見に如かず、HANDさんの「バージョン混在サンプル」をご覧ください。
HANDさんのサンプルを見て頂けたら、ここから先、下の方の例外について書いてある部分までは読まなくても大丈夫です。

※※※
一応、こちらでも説明を。
データバージョン4(CW1.20〜1.50仕様)で作成したシナリオの中に、データバージョン7(Next専用)やWSN形式(Py(など)専用)のパッケージデータを混在させると、私家版専用機能ありの【全エンジン向け】シナリオを作ることができます。

データバージョン4でパッケージのリンク・コールの呼び出し先がパッケージの番号(=IDナンバー)で管理されていることは、Thomasさんの解析などで知られています。NextやPyでデータバージョン4のシナリオを再生する際も、パッケージはシナリオ内に書かれたID番号で探されます。
そのため、【全エンジン向け】シナリオの中で、私家版を識別してエンジンの種類ごとに呼び出すパッケージを変える処理を作り、
というのをHANDさんが実際やって確かめておられるのが、前述の「バージョン混在サンプル」です。
ただし、PyでパッケージIDが同じならWIDファイルよりXMLファイルが優先で読み込まれるというのが、仕様ではなくバグの可能性もあります。その点には留意すべきです。
また、全く同じXMLのパッケージを実行しても、混在時と純粋なWSNシナリオで挙動が異なる場合があります。
混在シナリオを作成する場合は、各種エンジンで慎重にテストプレイを行った方が良いです。

仕様混在できない例外について

Wsn.2の機能のうち、以下のものは、今のところPyエンジン上での混在ができません(※現在Py3.3が公開中)。
混在状態では、Wsn.2対応のPyで再生しても、セリフやメッセージ中の「$??Player1$」はそのまま「$??Player1$」と出力されるし、本来効果対象外のキャラが「@効果対象」クーポンを持っていても、効果の範囲が拡大されることはありません。
(→実際に試してみたい方は、サンプルをご利用ください。)

これは、バージョン2以降のPyエンジンがこれらをWSN独自の機能として扱うかを判断する際、シナリオのサマリに書き込まれているWSNのデータバージョンを見ているためです。XML形式のパッケージにもデータバージョンの情報は入っていますが、シナリオの土台がデータバージョン4のためサマリからシナリオのデータバージョンが読み取れず、Wsn.2シナリオと解釈されません。テキスト入力に依存し、Wsn.2非対応のエディットツールで作成したシナリオにも現れる可能性があるものに対する安全策と思われます。
なお、同じ場所にSummary.wsmとSummary.xmlの両方がある場合は、Summary.wsmの方が優先されるようです。土台シナリオ(データバージョン4)のフォルダにSummary.xmlを入れても、貼紙はSummary.wsmの方が表示され、XML形式のパッケージが読み込まれた際にWSN仕様と認識されることもありませんでした。

今後、Pyでこうした場合のWSNデータバージョンの読み込み先が変わるなどの仕様変更があれば別ですが、基本的に、非対応ツールでも入力可能なものについては混在できないと考えた方が良いでしょう。

※※※
ちなみにNextでは、データバージョン4のシナリオ(CW1.20〜1.50仕様)のシナリオでも、セリフやメッセージに「$??Player1$」と書かれていれば_1の名前が表示されます。こちらは、通常の文章でまず使われることがない「$??Player1〜6$」は、専用シナリオでなくてもPC名と解釈して問題ないということでしょうか。
同種の機能で、エンジンによって扱いが分かれるのは面白いですね。

[▲上へ]