クラシック形式

クラシック形式

 CardWirthPy/CWXEditor では従来のCardWirth(1.20-1.50、バリアント)で再生できる
Summary.wsm 」で構成されるシナリオ形式を便宜上「 クラシック形式 」と呼称し、
Py/XEditorのみで再生・保存できる専用形式「 WSN形式 」と区別しています。

目次

CWXEditorでクラシック形式のシナリオを作るには

CWXEditorでシナリオを作る時、普通に新規作成を行うとWSN形式のシナリオを作成してしまいます。
これは元々WSN形式専用のエディタとして作られていたという経緯によるものです。

WSN形式は現在のところPy専用形式であるため、1.50以前との互換を保ちたい場合は、少し注意してクラシック形式を選択しましょう。

1. クラシックエンジンの登録


CWXEditorは従来型のCardWirthエンジン(以降クラシックエンジン)を認識し、できるだけそのエンジンに合わせた表示や設定を行おうとします。
例えば学園バリアントは、ファンタジーⅠ型のエンジンとカードや背景の外見が異なり、
キャラクターの作成時に「熱血型」や「秀才型」といった型を選択できますが、CWXEditorが学園バリアントを認識すると、それらに適合するシナリオを作ることができるようになります。


クラシックエンジンは手動で設定して認識させることもできますが、もっとも簡単な方法は、
そのエンジンのScenarioフォルダ(バリアントはそれに相当する)以下にあるシナリオを開く 」です。
CWXEditorは、シナリオを開いた時に、そのシナリオが存在するフォルダを上へ上へと辿って行き、
CardWirthエンジンを見つけるとそれを認識し、自分の中に登録します。

あるいは、シナリオを新規作成する際に、ターゲットとするクラシックエンジンのScenarioフォルダ内を作成先として選択するといいでしょう。


2. クラシック形式シナリオの新規作成


メニューやツールバーから「新規作成(Ctrl+N)」を選ぶと「新規シナリオの作成」ダイアログが現れますが、
ここで「タイプ」に「クラシック」を選択します。
後は、普通にシナリオを編集すればOKです。

もし誤って「クラシック」以外で新規作成を行った場合は、次の方法で変換しましょう。

3. WSN形式からクラシック形式への変換


CWXEditorで「名前を付けて保存」を行い、保存形式として「クラシックシナリオ」を選択して保存します。
CWXEditor 3.1以降であれば、以下の素材拡張子問題を自動的に解決するため、それだけで変換完了です。

+...
CWXEditor 3.0以前の場合、CWPyで使用しているスキンにもよりますが、
素材に絡む問題が出ることがあります。
CWPyに標準で付属している「Classic」スキンは、
CardWirthとほぼ同じ環境を再現するスキンですが、サイズを削減するため、
背景イメージ(Tableフォルダ内)の形式を「*.png」に、
効果音(Soundフォルダ内)の形式を「*.ogg」に変換しています。
これらは、クラシック形式では「*.bmp」と「*.wav」でなければなりません。

そのため、「Classic」スキンで編集したシナリオを
クラシック形式に変換したい時は、次の作業が必要です。

1. Ctrl+Fまたはメニューの「編集」から、「検索と置換」ダイアログを開き、
「テキスト検索」タブを選択します。
2. 「検索/置換対象」で「ファイル名」のみにチェックを入れます。
3. 置換前に「.ogg」を、置換後に「.wav」を設定し、置換ボタンを押して置換を実行します。
4. 同様に、「.bmp」を「.png」に置換します。
5. 自分でシナリオ内に「*.ogg」や「*.png」の素材を用意して使用している場合は、
巻き添えで拡張子が変わってしまうため、
   該当するファイル名を指定して置換を行い、「.ogg」と「.png」に戻します。

まとめ(最低限やっておくべきこと)

  • まず対象となるエンジンを指定できているか確認する。(テーブル>貼り紙クリック>詳細データ)
  • 選択肢にない場合、そのエンジンのシナリオフォルダを一度開く(自動登録)
  • もしくは手動登録する。(ツール>エディタ設定)※ついでにその他>対象エンジンを選んでおくと良い


どのエンジン向けに作るか

さて、クラシック形式で保存することで、大抵のCW互換エンジンが認識できる形式になりました。
しかしこれだけでは 全てのエンジンで十全に遊べる ことを意味しません。
自分が使用しているエンジンだけに対応するのは簡単ですが、複数のエンジンに対応したい場合は、各エンジン間に存在する膨大な仕様違いを把握し、場合によっては判定分岐などを駆使してエラーが起きないようにする必要が生じます。しかしそれは大抵の制作者には高すぎるハードルです。

対象エンジンの登録

CWXEditorでは補助機能として、「 設定>その他>対象エンジン 」に対応したいエンジンを指定しておくと、そのエンジンで使えない機能を使おうとした場合に警告が表示されるようになっています。

また検索ダイアログ(Ctrl+F)にある「 誤り検索 」で対象エンジンの環境下でエラーが起きる箇所を検出してくれます。低Verの移植時やシナリオの総仕上げにやっておくといいでしょう。

【重要】XEditor製シナリオで1.50以下に対応する際の注意

  • 1.50/NEXTではPNG形式の画像を格納したカードを取得できない (異常発生と表示される)。
    1.50以前も対応したい場合、一度WirthBuilderで 読み込み→保存 するか画像編集ソフト等でBMPで保存した物を格納して下さい(拡張子をリネームするだけでは駄目)。
    WirthBuilderは格納時に自動でBMP変換する仕様 なので、透過PNGは透過BMPに置き換えられます。
  • 貼り紙やエリアのカードにPNG画像を格納する場合も同様。貼り紙を表示/エリアに入った瞬間エラーになる。エリアのカード埋め込みはメリットが少ないので参照がお勧めです。
  • カード名と解説欄に文字数表示制限があり、Py以外のエンジンでは途切れてしまう。
  • XEditorで制作→旧WBでの保存しなおし(上記Classicスキンの拡張子問題、貼り紙の解説の改行ラインが異なる、キャストの初期状態の設定項目がない等、旧WB→XEditorではほぼ問題なし)

CWXEditorでしか入力できない設定

Py以外のエンジンも再生対応しているものの、
本家エディタや旧WBでは入力できない、ある意味隠し機能です。
  • キャストカードに初期状態を設定
  • カードの一次・二次効果音にシナリオ内効果音を設定 。※Py以外では持ち出し不可


クラシック形式でのPy用シナリオ

WSN形式があるんだから、クラシック形式でPyシナリオを作る意味はないんじゃないの?
WSN形式に比べると制限が付きますが、あえてPyでもクラシック形式を採用したい場合があります。

  • 複数のエンジンにマルチ対応したい
Pyの機能を使いたいが、1.50などのエンジンでも遊んで貰いたい場合。
たとえば、バージョン判定称号を活用すればPyには独自効果音の技能を配布、他にはデフォルト効果音の技能を配布ということが可能です。
(ややこしいので通常は素直にWSN形式で作った方が良いでしょう。)
  • 減色要らず
Pyでは格納したPNGをそのまま表示できます。 Py専用になってしまうものの、
カード画像を256色に減色しなくてもいい 」という事実は魅力です。
  • エディタ上の表示がシンプル
WSN形式では専用の新コンテントや機能が追加されていますが、
これらはXEditorがクラシック形式のシナリオを開いている時は表示されません。
あまり凝った事をしない制作者にとって、機能が限定されているということはメリットです。
  • 他のエンジンにも対応したくなった時に移植性が高い
表示されていないので、誤って移植困難になる機能を使ってしまうということがありません。
  • クラシック形式の志向性を保つ
WSN形式では全てがXML文書になり、素材格納の概念がないという強い独自性があり、シナリオ構造をあまり見られたくない制作者には抵抗があるかもしれません。また、クラシック形式では画像を格納するので重複で容量は増加しますが、展開時の総ファイル数は少なくて済みます。

クラシック形式でも利用可能なPyの専用機能

  • 称号分岐で「バージョン判定称号」が利用できる。
  • 技能/アイテム/付帯能力カードイベントに指定された素材持ち帰り
    たとえば銃の独自効果音などはDataフォルダに移動を指示しているシナリオがありますが、
    Pyではシナリオに入っていれば自動でカードに格納します。
  • カード名と解説欄の文字数制限なし。 最大まで埋められる。
    カード名がはみ出す場合、枠内に収まるように縮小表示される。
  • 1.20以前と同様に解説文が同じで異なる画像・使用時イベントを持ったカードを保持できる。
  • 連れ込んだキャストにシナリオ中での称号変動が反映される。
    また、レベル変動後も固有体力が保持される。 高い体力を持った連れ込みキャラを作成可能。
  • いくつかのBGMループに対応 。(RPGツクール形式のMIDI、ogg)

CWPyのバージョン判定称号

CWPy2.2現在、以下のシステムクーポンで称号所有分岐を行うと
実際に持っているかにかかわらず判定に成功します。
クラシック形式でエンジンがPy系かどうかを判定したい場合などに利用してください。

Ver判定称号一覧
@CardWirthPy Version.0.12.2
@CardWirthPy Version.0.12.3
@CardWirthPy Version.0.12.3b
@CardWirthPy Version.1.0
@CardWirthPy Version.1.1
@CardWirthPy Version.2.0
@CardWirthPy Version.2.1
@CardWirthPy Version.2.2

新しいバージョンは過去の称号を全て持っています。たとえば1.0なら1.0 以降 かを判定できます。
過去の特定バージョン のみ を判定したい場合、
@CardWirthPy Version.2.0 Only 」というように、 Only を付けて下さい。


mode.iniで互換モードを使う


CWPyではCardWirth 1.50までに存在するいくつかのバグが修正されています。
また、1.50に存在する、「カードの表示順の1.20互換にする(FLIP用)」オプションがありません。
しかし、それらを前提としているシナリオが存在します。
今後そうしたシナリオを作る側が、Pyでも動作を望む場合には、
対応するmode.iniを同梱することで、シナリオ側からPyの挙動を制御することが可能です。
(「背景切替アニメーション無し、メッセージ表示速度を最速にして下さい」というような、オプション設定の変更を求めなくて済むということです)

  • やり方
シナリオフォルダ(Summary.wsmのある階層)に mode.iniを一緒に入れるだけ です。
mode.iniの書き方については「互換モード」って何?を見て下さい。
以下は面倒臭い人向けの記述済みiniです。

機能別
対象消去キャンセルバグ DL
1.20のカード表示順(FLIP)オプション DL